Skip to content

Commit feb1e28

Browse files
Merge branch 'development' into merge-conflict-refactor
2 parents 512668c + 7e1dcee commit feb1e28

22 files changed

Lines changed: 570 additions & 560 deletions

File tree

FirebaseSwiftUI/FirebaseAppleSwiftUI/Sources/Services/AppleProviderAuthUI.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ extension AuthenticateWithAppleDialog: ASAuthorizationControllerDelegate {
114114

115115
// MARK: - Apple Provider Swift
116116

117-
public class AppleProviderSwift: AuthProviderSwift {
117+
public class AppleProviderSwift: CredentialAuthProviderSwift {
118118
public let scopes: [ASAuthorization.Scope]
119119
let providerId = "apple.com"
120120

@@ -140,15 +140,15 @@ public class AppleProviderSwift: AuthProviderSwift {
140140
}
141141

142142
public class AppleProviderAuthUI: AuthProviderUI {
143-
public var provider: AuthProviderSwift
143+
private let typedProvider: AppleProviderSwift
144+
public var provider: AuthProviderSwift { typedProvider }
145+
public let id: String = "apple.com"
144146

145-
public init(provider: AuthProviderSwift) {
146-
self.provider = provider
147+
public init(provider: AppleProviderSwift) {
148+
typedProvider = provider
147149
}
148150

149-
public let id: String = "apple.com"
150-
151151
@MainActor public func authButton() -> AnyView {
152-
AnyView(SignInWithAppleButton(provider: provider))
152+
AnyView(SignInWithAppleButton(provider: typedProvider))
153153
}
154154
}

FirebaseSwiftUI/FirebaseAppleSwiftUI/Sources/Views/SignInWithAppleButton.swift

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ import SwiftUI
2121
public struct SignInWithAppleButton {
2222
@Environment(AuthService.self) private var authService
2323
@Environment(\.accountConflictHandler) private var accountConflictHandler
24-
let provider: AuthProviderSwift
25-
public init(provider: AuthProviderSwift) {
24+
@Environment(\.reportError) private var reportError
25+
let provider: AppleProviderSwift
26+
public init(provider: AppleProviderSwift) {
2627
self.provider = provider
2728
}
2829
}
@@ -38,12 +39,17 @@ extension SignInWithAppleButton: View {
3839
do {
3940
_ = try await authService.signIn(provider)
4041
} catch {
41-
if case let AuthServiceError.accountConflict(context) = error,
42-
let handler = accountConflictHandler {
43-
handler(context)
44-
} else {
45-
throw error
42+
// 1) Always report first, if a reporter exists
43+
reportError?(error)
44+
45+
// 2) If it's a conflict and we have a handler, handle it and stop
46+
if case let AuthServiceError.accountConflict(ctx) = error,
47+
let onConflict = accountConflictHandler {
48+
onConflict(ctx)
49+
return
4650
}
51+
52+
throw error
4753
}
4854
}
4955
}

0 commit comments

Comments
 (0)