LoginViewModel.swift 612 B

123456789101112131415161718192021222324
  1. import AuthenticationServices
  2. import SwiftUI
  3. extension Login {
  4. class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: LoginProvider {
  5. @Published var credentials: Credentials?
  6. override func subscribe() {
  7. credentials = provider.credentials
  8. $credentials
  9. .compactMap { $0 }
  10. .sink { [weak self] in
  11. self?.provider.authorize(credentials: $0)
  12. }
  13. .store(in: &lifetime)
  14. }
  15. func login() {
  16. credentials = Credentials()
  17. }
  18. }
  19. }