LoginViewModel.swift 560 B

12345678910111213141516171819202122
  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 { self.provider.authorize(credentials: $0) }
  11. .store(in: &lifetime)
  12. }
  13. func login() {
  14. credentials = Credentials()
  15. }
  16. }
  17. }