@@ -3,13 +3,15 @@ package com.google.samples.quickstart.canonical
3
3
import android.content.Context
4
4
import android.content.Intent
5
5
import android.util.Log
6
+ import androidx.lifecycle.MutableLiveData
6
7
import androidx.lifecycle.ViewModel
7
8
import com.google.android.gms.auth.api.signin.GoogleSignIn
8
9
import com.google.android.gms.auth.api.signin.GoogleSignInClient
9
10
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
10
11
import com.google.android.gms.common.api.ApiException
11
12
import com.google.android.gms.tasks.Task
12
13
import com.google.firebase.auth.FirebaseAuth
14
+ import com.google.firebase.auth.FirebaseUser
13
15
import com.google.firebase.auth.GoogleAuthProvider
14
16
15
17
@@ -19,12 +21,25 @@ class SignInViewModel : ViewModel() {
19
21
private lateinit var context: Context
20
22
private lateinit var activity: MainActivity
21
23
24
+ data class CurFirebaseUser (
25
+ var firebaseUser : FirebaseUser ? = FirebaseAuth .getInstance().currentUser,
26
+ var isLogin : Boolean = firebaseUser?.let { true } ? : run{ false }
27
+ )
28
+
29
+ private var curFirebaseUser = MutableLiveData <CurFirebaseUser >()
30
+ init {
31
+ Log .i(SIGN_IN_FRAGMENT_TAG , " init" )
32
+ curFirebaseUser.value = CurFirebaseUser ()
33
+ }
34
+
35
+
22
36
private fun googleSignOut (): Task <Void >? {
23
37
return googleSignInClient.signOut()
24
38
}
25
39
26
40
private fun firebaseSignOut () {
27
41
FirebaseAuth .getInstance().signOut()
42
+ curFirebaseUser.value!! .isLogin = false
28
43
}
29
44
30
45
private fun googleSignInInit () {
@@ -53,8 +68,9 @@ class SignInViewModel : ViewModel() {
53
68
if (task.isSuccessful) {
54
69
// Firebase Sign in success, update UI with the signed-in user's information
55
70
Log .d(SIGN_IN_FRAGMENT_TAG , " firebase signInWithCredential:success" )
56
- val user = auth.currentUser
57
- Log .d(SIGN_IN_FRAGMENT_TAG , " firebase signed-in user's Email:" + user!! .email)
71
+ Log .d(SIGN_IN_FRAGMENT_TAG , " firebase signed-in user's Email:" + auth.currentUser!! .email)
72
+ curFirebaseUser.value!! .firebaseUser = auth.currentUser
73
+ curFirebaseUser.value!! .isLogin = true
58
74
val intent = Intent (context, MainActivity ::class .java)
59
75
intent.addFlags(Intent .FLAG_ACTIVITY_CLEAR_TOP )
60
76
context.startActivity(intent)
@@ -85,12 +101,12 @@ class SignInViewModel : ViewModel() {
85
101
}
86
102
}
87
103
88
- fun getGoogleSignInClient (): GoogleSignInClient {
89
- return googleSignInClient
104
+ fun getFirebaseAuthCurUser (): FirebaseUser ? {
105
+ return auth.currentUser
90
106
}
91
107
92
- fun getFirebaseAuth (): FirebaseAuth {
93
- return auth
108
+ fun getSignInIntent (): Intent {
109
+ return googleSignInClient.signInIntent
94
110
}
95
111
96
112
private fun setResources (activityContext : Context , activityMain : MainActivity ) {
@@ -105,7 +121,7 @@ class SignInViewModel : ViewModel() {
105
121
}
106
122
107
123
fun isLogIn (): Boolean {
108
- return auth.currentUser != null
124
+ return curFirebaseUser.value !! .isLogin
109
125
}
110
126
111
127
fun signOut (): Task <Void >? {
0 commit comments