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

Commit 9439a354 authored by Hasib Prince's avatar Hasib Prince
Browse files

App Lounge: fixed google login issue

Fixed: app asks to login for every launch if user logged in with google
parent 0382dd80
Loading
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -118,7 +118,7 @@ class MainActivity : AppCompatActivity() {
                binding.fragment.visibility = View.VISIBLE

                viewModel.userType.observe(this) { user ->
                    Timber.d(">>> auth: usertype")
                    Timber.d(">>> auth: usertype: $user")
                    generateAuthDataBasedOnUserType(user)
                }

@@ -128,8 +128,8 @@ class MainActivity : AppCompatActivity() {

                // Watch and refresh authentication data
                viewModel.authDataJson.observe(this) {
                    Timber.d(">>> auth: authDataJson: ")
                    if (!it.isNullOrEmpty()) {
                    Timber.d(">>> auth: authDataJson: ${it.length}")
                    if (!it.isNullOrEmpty() && !viewModel.userType.value.isNullOrEmpty() && !viewModel.userType.value.contentEquals(User.UNAVAILABLE.name)) {
                        viewModel.generateAuthData()
                        viewModel.validateAuthData()
                        Log.d(TAG, "Authentication data is available!")
@@ -140,6 +140,9 @@ class MainActivity : AppCompatActivity() {

        viewModel.authValidity.observe(this) {
            Timber.d(">>> auth: authvalidity: $it")
            if(SignInViewModel.isGoogleLoginRunning) {
                return@observe
            }
            if (it != true) {
                Log.d(TAG, "Authentication data validation failed!")
                viewModel.destroyCredentials { user ->
+9 −3
Original line number Diff line number Diff line
@@ -124,9 +124,14 @@ class MainActivityViewModel @Inject constructor(
     * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5404
     */
    fun retryFetchingTokenAfterTimeout() {
        if(userType.value?.contentEquals(User.UNAVAILABLE.name) == true) {
            return
        }
        Timber.d(
            ">>> userType: ${userType.value} authDataJson: ${
                authDataJson.value?.length
            } authData: ${authData.value?.authToken}"
        )
//        if(authDataJson.value.isNullOrEmpty() && authData.value == null) {
//            return
//        }
        firstAuthDataFetchTime = 0
        setFirstTokenFetchTime()
        Timber.d(">>> authvalidity postvalue > retryfetching")
@@ -202,6 +207,7 @@ class MainActivityViewModel @Inject constructor(

    fun generateAuthData() {
        val data = gson.fromJson(authDataJson.value, AuthData::class.java)
        Timber.d(">>> generated authdata: ${data.authToken}")
        _authData.value = data
    }

+4 −2
Original line number Diff line number Diff line
@@ -73,8 +73,10 @@ class GPlayAPIImpl @Inject constructor(
        }
    }

    fun fetchAuthData(email: String, aasToken: String): AuthData {
        return tokenRepository.getAuthData(email, aasToken)
    suspend fun fetchAuthData(email: String, aasToken: String): AuthData {
        val authData = tokenRepository.getAuthData(email, aasToken)
        dataStoreModule.saveCredentials(authData)
        return authData
    }

    suspend fun validateAuthData(authData: AuthData): Boolean {
+7 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import com.aurora.gplayapi.data.models.AuthData
import com.aurora.gplayapi.helpers.AuthHelper
import com.google.gson.Gson
import foundation.e.apps.api.gplay.utils.GPlayHttpClient
import timber.log.Timber
import java.util.Properties
import javax.inject.Inject

@@ -38,7 +39,12 @@ class TokenImpl @Inject constructor(
    fun getAuthData(): AuthData? {
        val playResponse =
            gPlayHttpClient.postAuth(BASE_URL, gson.toJson(nativeDeviceProperty).toByteArray())
        return gson.fromJson(String(playResponse.responseBytes), AuthData::class.java)
        return if(playResponse.isSuccessful) {
            gson.fromJson(String(playResponse.responseBytes), AuthData::class.java)
        } else {
            Timber.d(">>> getAuthData: UNSUCCESSFUL > ${playResponse.errorString}")
            null
        }
    }

    fun getAuthData(email: String, aasToken: String): AuthData {
+13 −2
Original line number Diff line number Diff line
@@ -20,10 +20,13 @@ package foundation.e.apps.settings

import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.util.Log
import android.view.View
import androidx.fragment.app.viewModels
import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.work.ExistingPeriodicWorkPolicy
@@ -67,7 +70,13 @@ class SettingsFragment : PreferenceFragmentCompat() {
            preferenceManager.findPreference<Preference>(getString(R.string.update_check_intervals))
        updateCheckInterval?.setOnPreferenceChangeListener { _, newValue ->
            Log.d(TAG, "onCreatePreferences: updated Value: $newValue")
            context?.let { UpdatesWorkManager.enqueueWork(it, newValue.toString().toLong(), ExistingPeriodicWorkPolicy.REPLACE) }
            context?.let {
                UpdatesWorkManager.enqueueWork(
                    it,
                    newValue.toString().toLong(),
                    ExistingPeriodicWorkPolicy.REPLACE
                )
            }
            true
        }

@@ -123,7 +132,9 @@ class SettingsFragment : PreferenceFragmentCompat() {

        binding.logout.setOnClickListener {
            viewModel.saveUserType(User.UNAVAILABLE)
            Handler(Looper.getMainLooper()).postDelayed({
                backToMainActivity()
            }, 1500)
        }
    }

Loading