Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13cdacc5 authored by Hasib Prince's avatar Hasib Prince
Browse files

App Lounge:fixed google signin session management

parent 91aa4d11
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import com.google.android.material.snackbar.Snackbar
import dagger.hilt.android.AndroidEntryPoint
import foundation.e.apps.databinding.ActivityMainBinding
import foundation.e.apps.manager.workmanager.InstallWorkManager
import foundation.e.apps.setup.signin.SignInViewModel
import foundation.e.apps.updates.UpdatesNotifier
import foundation.e.apps.utils.enums.Status
import foundation.e.apps.utils.enums.User
@@ -58,6 +59,7 @@ class MainActivity : AppCompatActivity() {
        var hasInternet = true

        val viewModel = ViewModelProvider(this)[MainActivityViewModel::class.java]
        val signInViewModel = ViewModelProvider(this)[SignInViewModel::class.java]

        // navOptions and activityNavController for TOS and SignIn Fragments
        val navOptions = NavOptions.Builder()
@@ -91,11 +93,19 @@ class MainActivity : AppCompatActivity() {
                                navController.navigate(R.id.signInFragment, null, navOptions)
                            }
                            User.GOOGLE -> {
                                if (viewModel.authData.value == null && !viewModel.authRequestRunning) {
                                    Log.d(TAG, "Fetching new authentication data")
                                    signInViewModel.fetchAuthData()
                                }
                            }
                        }
                    }
                }

                signInViewModel.authLiveData.observe(this) {
                    viewModel.updateAuthData(it)
                }

                // Watch and refresh authentication data
                viewModel.authDataJson.observe(this) {
                    if (!it.isNullOrEmpty()) {
+4 −0
Original line number Diff line number Diff line
@@ -81,6 +81,10 @@ class MainActivityViewModel @Inject constructor(
        }
    }

    fun updateAuthData(authData: AuthData) {
        _authData.value = authData
    }

    fun destroyCredentials() {
        viewModelScope.launch {
            dataStoreModule.destroyCredentials()
+1 −1
Original line number Diff line number Diff line
@@ -144,7 +144,7 @@ class FusedAPIImpl @Inject constructor(
        return gPlayAPIRepository.fetchAuthData()
    }

    suspend fun fetchAuthData(email: String, aasToken: String) {
    suspend fun fetchAuthData(email: String, aasToken: String): AuthData {
        return gPlayAPIRepository.fetchAuthData(email, aasToken)
    }

+1 −1
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ class FusedAPIRepository @Inject constructor(
        return fusedAPIImpl.fetchAuthData()
    }

    suspend fun fetchAuthData(email: String, aasToken: String) {
    suspend fun fetchAuthData(email: String, aasToken: String): AuthData {
        return fusedAPIImpl.fetchAuthData(email, aasToken)
    }

+2 −3
Original line number Diff line number Diff line
@@ -49,9 +49,8 @@ class GPlayAPIImpl @Inject constructor(
        data.await()?.let { dataStoreModule.saveCredentials(it) }
    }

    suspend fun fetchAuthData(email: String, aasToken: String) = withContext(Dispatchers.IO) {
        val data = async { tokenRepository.getAuthData(email, aasToken) }
        dataStoreModule.saveCredentials(data.await())
    fun fetchAuthData(email: String, aasToken: String): AuthData {
        return tokenRepository.getAuthData(email, aasToken)
    }

    suspend fun validateAuthData(authData: AuthData): Boolean {
Loading