44 lines
1.8 KiB
Swift
44 lines
1.8 KiB
Swift
import SwiftUI
|
|
|
|
struct LeadSigningCompletionView: View {
|
|
let model: LeadSigningViewModel
|
|
|
|
var body: some View {
|
|
VStack(spacing: 16) {
|
|
if model.isBusy {
|
|
ProgressView()
|
|
.controlSize(.large)
|
|
Text(model.isUploading ? "PDFs werden hochgeladen …" : "PDFs werden signiert …")
|
|
.font(.headline)
|
|
if model.isDemoUpload {
|
|
Text("Demo-Modus: Der Upload wird simuliert.")
|
|
.font(.subheadline).foregroundStyle(.secondary)
|
|
}
|
|
} else if let error = model.uploadError {
|
|
Label("Upload nicht abgeschlossen", systemImage: "exclamationmark.triangle")
|
|
.font(.headline)
|
|
Text(error).foregroundStyle(.secondary)
|
|
Button("Erneut versuchen") {
|
|
Task { await model.uploadSignedDocuments() }
|
|
}
|
|
.buttonStyle(.borderedProminent)
|
|
} else if let result = model.uploadResult {
|
|
Image(systemName: "checkmark.circle.fill")
|
|
.font(.largeTitle).foregroundStyle(.green)
|
|
switch result {
|
|
case .uploaded:
|
|
Text("PDFs signiert und hochgeladen").font(.headline)
|
|
case .simulated:
|
|
Text("PDFs signiert und lokal gespeichert").font(.headline)
|
|
Text("Demo-Upload abgeschlossen. Es wurden keine PDFs übertragen.")
|
|
.font(.subheadline).foregroundStyle(.secondary)
|
|
}
|
|
}
|
|
}
|
|
.multilineTextAlignment(.center)
|
|
.frame(maxWidth: .infinity, minHeight: 220)
|
|
.padding(24)
|
|
.accessibilityElement(children: .contain)
|
|
}
|
|
}
|