Skip to content

Commit 2e02253

Browse files
authored
[Auth] Add default values for decoding nil properties in UserInfoImpl (#14185)
1 parent a2f04f4 commit 2e02253

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

FirebaseAuth/CHANGELOG.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,13 @@
55
`Auth.currentUser` API. This resolves some Firebase 11 issues where the
66
current user is unexpectedly `nil` at startup.
77
- [fixed] Restore Firebase 10 decoding behavior to prevent user provider data
8-
from being decoded as `nil`. (#14011)
8+
from always being decoded as `nil` . Note that this fix was only needed for
9+
cases where Firebase 11 was reading data written by Firebase 10. (#14011)
10+
- [fixed] Restore Firebase 10 decoding behavior to prevent user provider data
11+
from being decoded as `nil` when a user has multiple linked providers. Note
12+
that this fix was only needed for cases where Firebase 11 was reading data
13+
written by Firebase 10. Note that this fix will not be in the 11.6.0 zip and
14+
Carthage distributions, but will be included from 11.6.0 onwards. (#14011)
915

1016
# 11.5.0
1117
- [fixed] Restore pre-Firebase 11 decoding behavior to prevent users getting

FirebaseAuth/Sources/Swift/User/UserInfoImpl.swift

+8-9
Original file line numberDiff line numberDiff line change
@@ -88,17 +88,16 @@ class UserInfoImpl: NSObject, UserInfo {
8888
}
8989

9090
required convenience init?(coder: NSCoder) {
91-
guard let providerID = coder.decodeObject(
91+
let providerID = coder.decodeObject(
9292
of: [NSString.self],
9393
forKey: UserInfoImpl.kProviderIDCodingKey
94-
) as? String,
95-
let userID = coder.decodeObject(
96-
of: [NSString.self],
97-
forKey: UserInfoImpl.kUserIDCodingKey
98-
) as? String
99-
else {
100-
return nil
101-
}
94+
) as? String ?? ""
95+
// Not all providers have a corresponding user ID (e.g. phone auth), so
96+
// fall back to an empty string.
97+
let userID = coder.decodeObject(
98+
of: [NSString.self],
99+
forKey: UserInfoImpl.kUserIDCodingKey
100+
) as? String ?? ""
102101
let displayName = coder.decodeObject(
103102
of: [NSString.self],
104103
forKey: UserInfoImpl.kDisplayNameCodingKey

0 commit comments

Comments
 (0)