Skip to content
This repository was archived by the owner on Jul 2, 2025. It is now read-only.

Commit b90072d

Browse files
add LiveData class
1 parent 9d511f9 commit b90072d

File tree

4 files changed

+26
-10
lines changed

4 files changed

+26
-10
lines changed

android/canonical/app/src/main/java/com/google/samples/quickstart/canonical/LoginFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class LoginFragment : Fragment() {
1515
private val signInVM: SignInViewModel by activityViewModels()
1616

1717
private fun signIn() {
18-
val signInIntent = signInVM.getGoogleSignInClient().signInIntent
18+
val signInIntent = signInVM.getSignInIntent()
1919
startActivityForResult(signInIntent, RC_SIGN_IN)
2020
}
2121

android/canonical/app/src/main/java/com/google/samples/quickstart/canonical/MapsFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class MapsFragment : Fragment() {
119119
setPlacesSearchBias()
120120
} ?: run{
121121
Log.d(FRAGMENT_TAG, "Locating Failed")
122-
Toast.makeText(context, getString(R.string.cannot_access_location), Toast.LENGTH_SHORT)
122+
Toast.makeText(context, getString(R.string.cannot_access_location), Toast.LENGTH_LONG)
123123
}
124124
}
125125
}

android/canonical/app/src/main/java/com/google/samples/quickstart/canonical/MeFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class MeFragment : Fragment() {
4444
}
4545
}
4646
// update UI
47-
view.findViewById<TextView>(R.id.textView)?.text = signInVM.getFirebaseAuth().currentUser?.email
47+
view.findViewById<TextView>(R.id.textView)?.text = signInVM.getFirebaseAuthCurUser()?.email
4848
}
4949

5050

android/canonical/app/src/main/java/com/google/samples/quickstart/canonical/SignInViewModel.kt

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ package com.google.samples.quickstart.canonical
33
import android.content.Context
44
import android.content.Intent
55
import android.util.Log
6+
import androidx.lifecycle.MutableLiveData
67
import androidx.lifecycle.ViewModel
78
import com.google.android.gms.auth.api.signin.GoogleSignIn
89
import com.google.android.gms.auth.api.signin.GoogleSignInClient
910
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
1011
import com.google.android.gms.common.api.ApiException
1112
import com.google.android.gms.tasks.Task
1213
import com.google.firebase.auth.FirebaseAuth
14+
import com.google.firebase.auth.FirebaseUser
1315
import com.google.firebase.auth.GoogleAuthProvider
1416

1517

@@ -19,12 +21,25 @@ class SignInViewModel : ViewModel() {
1921
private lateinit var context: Context
2022
private lateinit var activity: MainActivity
2123

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+
2236
private fun googleSignOut(): Task<Void>? {
2337
return googleSignInClient.signOut()
2438
}
2539

2640
private fun firebaseSignOut() {
2741
FirebaseAuth.getInstance().signOut()
42+
curFirebaseUser.value!!.isLogin = false
2843
}
2944

3045
private fun googleSignInInit() {
@@ -53,8 +68,9 @@ class SignInViewModel : ViewModel() {
5368
if (task.isSuccessful) {
5469
// Firebase Sign in success, update UI with the signed-in user's information
5570
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
5874
val intent = Intent(context, MainActivity::class.java)
5975
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
6076
context.startActivity(intent)
@@ -85,12 +101,12 @@ class SignInViewModel : ViewModel() {
85101
}
86102
}
87103

88-
fun getGoogleSignInClient(): GoogleSignInClient {
89-
return googleSignInClient
104+
fun getFirebaseAuthCurUser(): FirebaseUser? {
105+
return auth.currentUser
90106
}
91107

92-
fun getFirebaseAuth(): FirebaseAuth {
93-
return auth
108+
fun getSignInIntent(): Intent {
109+
return googleSignInClient.signInIntent
94110
}
95111

96112
private fun setResources(activityContext: Context, activityMain: MainActivity) {
@@ -105,7 +121,7 @@ class SignInViewModel : ViewModel() {
105121
}
106122

107123
fun isLogIn(): Boolean {
108-
return auth.currentUser != null
124+
return curFirebaseUser.value!!.isLogin
109125
}
110126

111127
fun signOut(): Task<Void>? {

0 commit comments

Comments
 (0)