@@ -6,6 +6,7 @@ package dev.gitlive.firebase.auth
6
6
7
7
import android.app.Activity
8
8
import com.google.firebase.FirebaseException
9
+ import com.google.firebase.auth.OAuthProvider
9
10
import com.google.firebase.auth.PhoneAuthProvider
10
11
import kotlinx.coroutines.CompletableDeferred
11
12
import kotlinx.coroutines.coroutineScope
@@ -23,48 +24,34 @@ actual class PhoneAuthCredential(override val android: com.google.firebase.auth.
23
24
actual class OAuthCredential (override val android : com.google.firebase.auth.OAuthCredential ) : AuthCredential(android)
24
25
25
26
actual object EmailAuthProvider {
26
- actual fun credentialWithEmail (
27
+ actual fun credential (
27
28
email : String ,
28
29
password : String
29
30
): AuthCredential = AuthCredential (com.google.firebase.auth.EmailAuthProvider .getCredential(email, password))
30
31
}
31
32
32
33
actual object FacebookAuthProvider {
33
- actual fun credentialWithAccessToken (accessToken : String ): AuthCredential = AuthCredential (com.google.firebase.auth.FacebookAuthProvider .getCredential(accessToken))
34
+ actual fun credential (accessToken : String ): AuthCredential = AuthCredential (com.google.firebase.auth.FacebookAuthProvider .getCredential(accessToken))
34
35
}
35
36
36
37
actual object GithubAuthProvider {
37
- actual fun credentialWithToken (token : String ): AuthCredential = AuthCredential (com.google.firebase.auth.GithubAuthProvider .getCredential(token))
38
+ actual fun credential (token : String ): AuthCredential = AuthCredential (com.google.firebase.auth.GithubAuthProvider .getCredential(token))
38
39
}
39
40
40
41
actual object GoogleAuthProvider {
41
- actual fun credentialWithIDAndAccessToken (idToken : String , accessToken : String ): AuthCredential = AuthCredential (com.google.firebase.auth.GoogleAuthProvider .getCredential(idToken, accessToken))
42
+ actual fun credential (idToken : String , accessToken : String ): AuthCredential = AuthCredential (com.google.firebase.auth.GoogleAuthProvider .getCredential(idToken, accessToken))
42
43
}
43
44
44
45
actual class OAuthProvider (val android : com.google.firebase.auth.OAuthProvider .Builder , private val auth : FirebaseAuth ) {
45
46
actual constructor (provider: String , auth: FirebaseAuth ) : this (com.google.firebase.auth.OAuthProvider .newBuilder(provider, auth.android), auth)
46
47
47
48
actual companion object {
48
- actual fun credentialsWithAccessToken (providerId : String , accessToken : String ): AuthCredential = createCredentials(providerId) {
49
- this .accessToken = accessToken
50
- }
51
- actual fun credentialsWithIDAndAccessToken (providerId : String , idToken : String , accessToken : String ): AuthCredential = createCredentials(providerId) {
52
- setIdToken(idToken)
53
- this .accessToken = accessToken
54
- }
55
- actual fun credentialsWithIDRawNonceAndAccessToken (providerId : String , idToken : String , rawNonce : String , accessToken : String ): AuthCredential = createCredentials(providerId) {
56
- setIdTokenWithRawNonce(idToken, rawNonce)
57
- this .accessToken = accessToken
58
- }
59
- actual fun credentialsWithIDAndRawNonce (providerId : String , idToken : String , rawNonce : String ): AuthCredential = createCredentials(providerId) {
60
- setIdTokenWithRawNonce(idToken, rawNonce)
61
- }
62
-
63
- private fun createCredentials (providerId : String , block : com.google.firebase.auth.OAuthProvider .CredentialBuilder .() -> Unit ): AuthCredential {
64
- val credential = com.google.firebase.auth.OAuthProvider .newCredentialBuilder(providerId).apply {
65
- block()
66
- }.build()
67
- return (credential as ? com.google.firebase.auth.OAuthCredential )?.let { OAuthCredential (it) } ? : AuthCredential (credential)
49
+ actual fun credential (providerId : String , accessToken : String? , idToken : String? , rawNonce : String? ): OAuthCredential {
50
+ val builder = OAuthProvider .newCredentialBuilder(providerId)
51
+ accessToken?.let { builder.accessToken = it }
52
+ idToken?.let { builder.idToken = it }
53
+ rawNonce?.let { builder.setIdTokenWithRawNonce(idToken!! , it) }
54
+ return OAuthCredential (builder.build() as com.google.firebase.auth.OAuthCredential )
68
55
}
69
56
}
70
57
@@ -87,7 +74,7 @@ actual class PhoneAuthProvider(val android: com.google.firebase.auth.PhoneAuthPr
87
74
88
75
actual constructor (auth: FirebaseAuth ) : this (com.google.firebase.auth.PhoneAuthProvider .getInstance(auth.android))
89
76
90
- actual fun credentialWithVerificationIdAndSmsCode (verificationId : String , smsCode : String ): PhoneAuthCredential = PhoneAuthCredential (com.google.firebase.auth.PhoneAuthProvider .getCredential(verificationId, smsCode))
77
+ actual fun credential (verificationId : String , smsCode : String ): PhoneAuthCredential = PhoneAuthCredential (com.google.firebase.auth.PhoneAuthProvider .getCredential(verificationId, smsCode))
91
78
actual suspend fun verifyPhoneNumber (phoneNumber : String , verificationProvider : PhoneVerificationProvider ): AuthCredential = coroutineScope {
92
79
val response = CompletableDeferred <Result <AuthCredential >>()
93
80
val callback = object :
@@ -101,9 +88,7 @@ actual class PhoneAuthProvider(val android: com.google.firebase.auth.PhoneAuthPr
101
88
launch {
102
89
val code = verificationProvider.getVerificationCode()
103
90
try {
104
- val credentials =
105
- credentialWithVerificationIdAndSmsCode(verificationId, code)
106
- response.complete(Result .success(credentials))
91
+ response.complete(Result .success(credential(verificationId, code)))
107
92
} catch (e: Exception ) {
108
93
response.complete(Result .failure(e))
109
94
}
@@ -134,5 +119,5 @@ actual interface PhoneVerificationProvider {
134
119
}
135
120
136
121
actual object TwitterAuthProvider {
137
- actual fun credentialWithTokenAndSecret (token : String , secret : String ): AuthCredential = AuthCredential (com.google.firebase.auth.TwitterAuthProvider .getCredential(token, secret))
122
+ actual fun credential (token : String , secret : String ): AuthCredential = AuthCredential (com.google.firebase.auth.TwitterAuthProvider .getCredential(token, secret))
138
123
}
0 commit comments