2
2
import SwiftUI
3
3
4
4
public protocol ExternalAuthProvider {
5
- @MainActor var authButton : any View { get }
5
+ associatedtype ButtonType : View
6
+ @MainActor var authButton : ButtonType { get }
6
7
}
7
8
8
9
public protocol GoogleProviderProtocol : ExternalAuthProvider {
@@ -64,9 +65,9 @@ private final class AuthListenerManager {
64
65
@Observable
65
66
public final class AuthService {
66
67
public init ( configuration: AuthConfiguration = AuthConfiguration ( ) , auth: Auth = Auth . auth ( ) ,
67
- googleProvider: GoogleProviderProtocol ? = nil ,
68
- facebookProvider: FacebookProviderProtocol ? = nil ,
69
- phoneAuthProvider: PhoneAuthProviderProtocol ? = nil ) {
68
+ googleProvider: ( any GoogleProviderProtocol ) ? = nil ,
69
+ facebookProvider: ( any FacebookProviderProtocol ) ? = nil ,
70
+ phoneAuthProvider: ( any PhoneAuthProviderProtocol ) ? = nil ) {
70
71
self . auth = auth
71
72
self . configuration = configuration
72
73
self . googleProvider = googleProvider
@@ -87,14 +88,14 @@ public final class AuthService {
87
88
public var errorMessage = " "
88
89
public let passwordPrompt : PasswordPromptCoordinator = . init( )
89
90
90
- public var googleProvider : GoogleProviderProtocol ?
91
- public var facebookProvider : FacebookProviderProtocol ?
92
- public var phoneAuthProvider : PhoneAuthProviderProtocol ?
91
+ public var googleProvider : ( any GoogleProviderProtocol ) ?
92
+ public var facebookProvider : ( any FacebookProviderProtocol ) ?
93
+ public var phoneAuthProvider : ( any PhoneAuthProviderProtocol ) ?
93
94
94
95
private var listenerManager : AuthListenerManager ?
95
96
private var signedInCredential : AuthCredential ?
96
97
97
- private var safeGoogleProvider : GoogleProviderProtocol {
98
+ private var safeGoogleProvider : any GoogleProviderProtocol {
98
99
get throws {
99
100
guard let provider = googleProvider else {
100
101
throw AuthServiceError
@@ -104,7 +105,7 @@ public final class AuthService {
104
105
}
105
106
}
106
107
107
- private var safeFacebookProvider : FacebookProviderProtocol {
108
+ private var safeFacebookProvider : any FacebookProviderProtocol {
108
109
get throws {
109
110
guard let provider = facebookProvider else {
110
111
throw AuthServiceError
@@ -114,7 +115,7 @@ public final class AuthService {
114
115
}
115
116
}
116
117
117
- private var safePhoneAuthProvider : PhoneAuthProviderProtocol {
118
+ private var safePhoneAuthProvider : any PhoneAuthProviderProtocol {
118
119
get throws {
119
120
guard let provider = phoneAuthProvider else {
120
121
throw AuthServiceError
0 commit comments