Skip to content

Commit 786bdd1

Browse files
refactor: phone authentication
1 parent c072ad8 commit 786bdd1

6 files changed

Lines changed: 265 additions & 287 deletions

File tree

FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Services/AuthService.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ public protocol AuthProviderUI {
2727
var provider: AuthProviderSwift { get }
2828
}
2929

30-
public protocol PhoneAuthProviderSwift: AuthProviderSwift {
31-
@MainActor func verifyPhoneNumber(phoneNumber: String) async throws -> String
32-
func setVerificationCode(verificationID: String, code: String)
30+
public protocol PhoneAuthProviderSwift: AuthProviderSwift, AnyObject {
31+
// Phone auth provider that presents its own UI flow in createAuthCredential()
32+
// Internal use only: AuthService will be injected automatically by AuthService.signIn()
33+
var authService: AuthService? { get set }
3334
}
3435

3536
public enum AuthenticationState {
@@ -50,8 +51,6 @@ public enum AuthView: Hashable {
5051
case mfaEnrollment
5152
case mfaManagement
5253
case mfaResolution
53-
case enterPhoneNumber
54-
case enterVerificationCode(verificationID: String, fullPhoneNumber: String)
5554
}
5655

5756
public enum SignInOutcome: @unchecked Sendable {
@@ -144,10 +143,6 @@ public final class AuthService {
144143

145144
private var providers: [AuthProviderUI] = []
146145

147-
public var currentPhoneProvider: PhoneAuthProviderSwift? {
148-
providers.compactMap { $0.provider as? PhoneAuthProviderSwift }.first
149-
}
150-
151146
public func registerProvider(providerWithButton: AuthProviderUI) {
152147
providers.append(providerWithButton)
153148
}
@@ -171,6 +166,11 @@ public final class AuthService {
171166

172167
public func signIn(_ provider: AuthProviderSwift) async throws -> SignInOutcome {
173168
do {
169+
// Automatically inject AuthService for phone provider
170+
if let phoneProvider = provider as? PhoneAuthProviderSwift {
171+
phoneProvider.authService = self
172+
}
173+
174174
let credential = try await provider.createAuthCredential()
175175
let result = try await signIn(credentials: credential)
176176
return result

FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Views/AuthPickerView.swift

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -107,22 +107,6 @@ extension AuthPickerView: View {
107107
MFAManagementView()
108108
case AuthView.mfaResolution:
109109
MFAResolutionView()
110-
case AuthView.enterPhoneNumber:
111-
if let phoneProvider = authService.currentPhoneProvider {
112-
EnterPhoneNumberView(phoneProvider: phoneProvider)
113-
} else {
114-
EmptyView()
115-
}
116-
case let .enterVerificationCode(verificationID, fullPhoneNumber):
117-
if let phoneProvider = authService.currentPhoneProvider {
118-
EnterVerificationCodeView(
119-
verificationID: verificationID,
120-
fullPhoneNumber: fullPhoneNumber,
121-
phoneProvider: phoneProvider
122-
)
123-
} else {
124-
EmptyView()
125-
}
126110
}
127111
}
128112
}

FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Views/EnterPhoneNumberView.swift

Lines changed: 0 additions & 113 deletions
This file was deleted.

FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Views/EnterVerificationCodeView.swift

Lines changed: 0 additions & 127 deletions
This file was deleted.

0 commit comments

Comments
 (0)