@@ -17,6 +17,7 @@ import kotlinx.coroutines.channels.awaitClose
17
17
import kotlinx.coroutines.flow.callbackFlow
18
18
import kotlinx.coroutines.flow.Flow
19
19
import platform.Foundation.NSError
20
+ import platform.Foundation.NSString
20
21
import platform.Foundation.NSURL
21
22
22
23
public val FirebaseAuth .ios: FIRAuth get() = FIRAuth .auth()
@@ -104,11 +105,39 @@ public actual class FirebaseAuth internal constructor(internal val ios: FIRAuth)
104
105
105
106
public actual fun useEmulator (host : String , port : Int ): Unit = ios.useEmulatorWithHost(host, port.toLong())
106
107
}
108
+
107
109
public val AuthResult .ios: FIRAuthDataResult get() = ios
108
110
109
- public actual class AuthResult internal constructor (internal val ios : FIRAuthDataResult ) {
111
+ public actual class AuthResult (internal val ios : FIRAuthDataResult ) {
110
112
public actual val user: FirebaseUser ?
111
113
get() = FirebaseUser (ios.user())
114
+ public actual val credential: AuthCredential ?
115
+ get() = ios.credential()?.let { AuthCredential (it) }
116
+ public actual val additionalUserInfo: AdditionalUserInfo ?
117
+ get() = ios.additionalUserInfo()?.let { AdditionalUserInfo (it) }
118
+ }
119
+
120
+ public val AdditionalUserInfo .ios: FIRAdditionalUserInfo get() = ios
121
+
122
+ public actual class AdditionalUserInfo (
123
+ internal val ios : FIRAdditionalUserInfo ,
124
+ ) {
125
+ public actual val providerId: String?
126
+ get() = ios.providerID()
127
+ public actual val username: String?
128
+ get() = ios.username()
129
+ public actual val profile: Map <String , Any ?>?
130
+ get() = ios.profile()
131
+ ?.mapNotNull { (key, value) ->
132
+ if (key is NSString && value != null ) {
133
+ key.toString() to value
134
+ } else {
135
+ null
136
+ }
137
+ }
138
+ ?.toMap()
139
+ public actual val isNewUser: Boolean
140
+ get() = ios.newUser()
112
141
}
113
142
114
143
public val AuthTokenResult .ios: FIRAuthTokenResult get() = ios
0 commit comments