Add lead workflows, PDF signing, AR projects and photo gallery integration

This commit is contained in:
Dennis Nemec
2026-11-08 17:49:39 +01:00
parent a343bde741
commit 8d18873412
82 changed files with 6401 additions and 34 deletions

View File

@ -0,0 +1,47 @@
import Foundation
import Observation
@MainActor
@Observable
final class LoginViewModel {
var salesCode = "" {
didSet { errorMessage = nil }
}
private(set) var isLoading = false
private(set) var errorMessage: LocalizedStringResource?
@ObservationIgnored private let loginUseCase: any LoginUseCase
init(loginUseCase: any LoginUseCase) {
self.loginUseCase = loginUseCase
}
var canSubmit: Bool {
SalesCodeValidator.isValid(salesCode) && !isLoading
}
func signIn() async -> LoginSession? {
guard !isLoading else { return nil }
errorMessage = nil
isLoading = true
defer { isLoading = false }
do {
let session = try await loginUseCase.execute(salesCode: salesCode)
try Task.checkCancellation()
return session
} catch is CancellationError {
return nil
} catch {
switch error as? LoginError {
case .invalidSalesCode:
errorMessage = "Bitte gib ein Kürzel mit mindestens 3 Zeichen ein."
case .rejected:
errorMessage = "Das Kürzel wurde nicht erkannt. Bitte prüfe deine Eingabe."
default:
errorMessage = "Die Anmeldung ist derzeit nicht möglich. Bitte versuche es erneut."
}
return nil
}
}
}