Skip to content

Commit b3a336b

Browse files
refactor: use typed provider to remove forced unwrapping
1 parent 5ecf59c commit b3a336b

11 files changed

Lines changed: 47 additions & 53 deletions

File tree

FirebaseSwiftUI/FirebaseAppleSwiftUI/Sources/Services/AppleProviderAuthUI.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,15 +140,15 @@ public class AppleProviderSwift: CredentialAuthProviderSwift {
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 as! CredentialAuthProviderSwift))
152+
AnyView(SignInWithAppleButton(provider: typedProvider))
153153
}
154154
}

FirebaseSwiftUI/FirebaseAppleSwiftUI/Sources/Views/SignInWithAppleButton.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import SwiftUI
2020
@MainActor
2121
public struct SignInWithAppleButton {
2222
@Environment(AuthService.self) private var authService
23-
let provider: CredentialAuthProviderSwift
24-
public init(provider: CredentialAuthProviderSwift) {
23+
let provider: AppleProviderSwift
24+
public init(provider: AppleProviderSwift) {
2525
self.provider = provider
2626
}
2727
}

FirebaseSwiftUI/FirebaseFacebookSwiftUI/Sources/Services/FacebookProviderAuthUI.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,15 @@ public class FacebookProviderSwift: CredentialAuthProviderSwift {
119119
}
120120

121121
public class FacebookProviderAuthUI: AuthProviderUI {
122-
public var provider: AuthProviderSwift
122+
private let typedProvider: FacebookProviderSwift
123+
public var provider: AuthProviderSwift { typedProvider }
123124
public let id: String = "facebook.com"
124125

125-
public init(provider: AuthProviderSwift) {
126-
self.provider = provider
126+
public init(provider: FacebookProviderSwift) {
127+
typedProvider = provider
127128
}
128129

129130
@MainActor public func authButton() -> AnyView {
130-
AnyView(SignInWithFacebookButton(facebookProvider: provider as! FacebookProviderSwift))
131+
AnyView(SignInWithFacebookButton(facebookProvider: typedProvider))
131132
}
132133
}

FirebaseSwiftUI/FirebaseFacebookSwiftUI/Sources/Views/SignInWithFacebookButton.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ import SwiftUI
2222
@MainActor
2323
public struct SignInWithFacebookButton {
2424
@Environment(AuthService.self) private var authService
25-
let facebookProvider: CredentialAuthProviderSwift
25+
let facebookProvider: FacebookProviderSwift
2626

27-
public init(facebookProvider: CredentialAuthProviderSwift) {
27+
public init(facebookProvider: FacebookProviderSwift) {
2828
self.facebookProvider = facebookProvider
2929
}
3030
}

FirebaseSwiftUI/FirebaseGoogleSwiftUI/Sources/Services/GoogleProviderAuthUI.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,15 @@ public class GoogleProviderSwift: CredentialAuthProviderSwift {
7171
}
7272

7373
public class GoogleProviderAuthUI: AuthProviderUI {
74-
public var provider: AuthProviderSwift
74+
private let typedProvider: GoogleProviderSwift
75+
public var provider: AuthProviderSwift { typedProvider }
7576
public let id: String = "google.com"
7677

77-
public init(provider: AuthProviderSwift) {
78-
self.provider = provider
78+
public init(provider: GoogleProviderSwift) {
79+
typedProvider = provider
7980
}
8081

8182
@MainActor public func authButton() -> AnyView {
82-
AnyView(SignInWithGoogleButton(googleProvider: provider as! CredentialAuthProviderSwift))
83+
AnyView(SignInWithGoogleButton(googleProvider: typedProvider))
8384
}
8485
}

FirebaseSwiftUI/FirebaseGoogleSwiftUI/Sources/Views/SignInWithGoogleButton.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ import SwiftUI
2626
@MainActor
2727
public struct SignInWithGoogleButton {
2828
@Environment(AuthService.self) private var authService
29-
let googleProvider: CredentialAuthProviderSwift
29+
let googleProvider: GoogleProviderSwift
3030

31-
public init(googleProvider: CredentialAuthProviderSwift) {
31+
public init(googleProvider: GoogleProviderSwift) {
3232
self.googleProvider = googleProvider
3333
}
3434
}

FirebaseSwiftUI/FirebaseOAuthSwiftUI/Sources/Services/OAuthProviderSwift.swift

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,20 +116,18 @@ public class OAuthProviderSwift: CredentialAuthProviderSwift {
116116
}
117117

118118
public class OAuthProviderAuthUI: AuthProviderUI {
119-
public var provider: AuthProviderSwift
119+
private let typedProvider: OAuthProviderSwift
120+
public var provider: AuthProviderSwift { typedProvider }
120121

121-
public init(provider: AuthProviderSwift) {
122-
self.provider = provider
122+
public init(provider: OAuthProviderSwift) {
123+
typedProvider = provider
123124
}
124125

125126
public var id: String {
126-
guard let oauthProvider = provider as? OAuthProviderSwift else {
127-
return "oauth.unknown"
128-
}
129-
return oauthProvider.providerId
127+
return typedProvider.providerId
130128
}
131129

132130
@MainActor public func authButton() -> AnyView {
133-
AnyView(GenericOAuthButton(provider: provider as! CredentialAuthProviderSwift))
131+
AnyView(GenericOAuthButton(provider: typedProvider))
134132
}
135133
}

FirebaseSwiftUI/FirebaseOAuthSwiftUI/Sources/Views/GenericOAuthButton.swift

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,35 +20,28 @@ import SwiftUI
2020
@MainActor
2121
public struct GenericOAuthButton {
2222
@Environment(AuthService.self) private var authService
23-
let provider: CredentialAuthProviderSwift
24-
public init(provider: CredentialAuthProviderSwift) {
23+
let provider: OAuthProviderSwift
24+
public init(provider: OAuthProviderSwift) {
2525
self.provider = provider
2626
}
2727
}
2828

2929
extension GenericOAuthButton: View {
3030
public var body: some View {
31-
guard let oauthProvider = provider as? OAuthProviderSwift else {
32-
return AnyView(
33-
Text(authService.string.invalidOAuthProviderError)
34-
.foregroundColor(.red)
35-
)
36-
}
37-
3831
// Create custom style from provider configuration
3932
var resolvedStyle: ProviderStyle {
4033
ProviderStyle(
41-
icon: oauthProvider.buttonIcon,
42-
backgroundColor: oauthProvider.buttonBackgroundColor,
43-
contentColor: oauthProvider.buttonForegroundColor
34+
icon: provider.buttonIcon,
35+
backgroundColor: provider.buttonBackgroundColor,
36+
contentColor: provider.buttonForegroundColor
4437
)
4538
}
4639

4740
return AnyView(
4841
AuthProviderButton(
49-
label: oauthProvider.displayName,
42+
label: provider.displayName,
5043
style: resolvedStyle,
51-
accessibilityId: "sign-in-with-\(oauthProvider.providerId)-button"
44+
accessibilityId: "sign-in-with-\(provider.providerId)-button"
5245
) {
5346
Task {
5447
try? await authService.signIn(provider)

FirebaseSwiftUI/FirebasePhoneAuthSwiftUI/Sources/Services/PhoneAuthProviderAuthUI.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,15 @@ public class PhoneProviderSwift: PhoneAuthProviderSwift {
4343
}
4444

4545
public class PhoneAuthProviderAuthUI: AuthProviderUI {
46-
public var provider: AuthProviderSwift
46+
private let typedProvider: PhoneAuthProviderSwift
47+
public var provider: AuthProviderSwift { typedProvider }
4748
public let id: String = "phone"
4849

4950
public init(provider: PhoneAuthProviderSwift? = nil) {
50-
self.provider = provider ?? PhoneProviderSwift()
51+
typedProvider = provider ?? PhoneProviderSwift()
5152
}
5253

5354
@MainActor public func authButton() -> AnyView {
54-
AnyView(PhoneAuthButtonView(phoneProvider: provider as! PhoneAuthProviderSwift))
55+
AnyView(PhoneAuthButtonView(phoneProvider: typedProvider))
5556
}
5657
}

FirebaseSwiftUI/FirebaseTwitterSwiftUI/Sources/Services/TwitterProviderAuthUI.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ public class TwitterProviderSwift: CredentialAuthProviderSwift {
4545
}
4646

4747
public class TwitterProviderAuthUI: AuthProviderUI {
48-
public var provider: AuthProviderSwift
48+
private let typedProvider: TwitterProviderSwift
49+
public var provider: AuthProviderSwift { typedProvider }
50+
public let id: String = "twitter.com"
4951

50-
public init(provider: AuthProviderSwift) {
51-
self.provider = provider
52+
public init(provider: TwitterProviderSwift) {
53+
typedProvider = provider
5254
}
5355

54-
public let id: String = "twitter.com"
55-
5656
@MainActor public func authButton() -> AnyView {
57-
AnyView(SignInWithTwitterButton(provider: provider as! CredentialAuthProviderSwift))
57+
AnyView(SignInWithTwitterButton(provider: typedProvider))
5858
}
5959
}

0 commit comments

Comments
 (0)