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

Commit 395eccdd authored by Abhishek Aggarwal's avatar Abhishek Aggarwal
Browse files

Merge branch '4998_google_sign_in_issue' into 'epic_176-all-refactorAndGplay'

App Lounge: Fix issues with google sign in

See merge request ecorp/apps/apps!52
parents adb34a21 9d7e6feb
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -90,7 +90,6 @@ class MainActivity : AppCompatActivity() {
                            }
                            User.UNAVAILABLE -> {
                                viewModel.destroyCredentials()
                                navController.navigate(R.id.signInFragment, null, navOptions)
                            }
                            User.GOOGLE -> {
                                if (viewModel.authData.value == null && !viewModel.authRequestRunning) {
+2 −1
Original line number Diff line number Diff line
@@ -107,7 +107,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
                        binding.accountType.text = view.context.getString(R.string.user_anonymous)
                    }
                    User.GOOGLE.name -> {
                        if (authData.userProfile != null) {
                        if (authData != null) {
                            binding.accountType.text = authData.userProfile?.name
                            binding.email.text = authData.userProfile?.email
                            binding.avatar.load(authData.userProfile?.artwork?.url)
@@ -123,6 +123,7 @@ class SettingsFragment : PreferenceFragmentCompat() {

        binding.logout.setOnClickListener {
            viewModel.saveUserType(User.UNAVAILABLE)
            backToMainActivity()
        }
    }

+9 −13
Original line number Diff line number Diff line
@@ -30,26 +30,18 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.findNavController
import dagger.hilt.android.AndroidEntryPoint
import foundation.e.apps.MainActivityViewModel
import foundation.e.apps.R
import foundation.e.apps.api.gplay.utils.AC2DMUtil
import foundation.e.apps.databinding.FragmentGoogleSigninBinding
import foundation.e.apps.setup.signin.SignInViewModel
import foundation.e.apps.utils.enums.User
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers

@AndroidEntryPoint
class GoogleSignInFragment :
    Fragment(R.layout.fragment_google_signin),
    CoroutineScope by CoroutineScope(Dispatchers.IO) {
class GoogleSignInFragment : Fragment(R.layout.fragment_google_signin) {
    private var _binding: FragmentGoogleSigninBinding? = null
    private val binding get() = _binding!!

    private val viewModel: SignInViewModel by viewModels()
    private val mainActivityViewModel: MainActivityViewModel by viewModels()

    private val cookieManager = CookieManager.getInstance()

    companion object {
        private const val EMBEDDED_SETUP_URL =
@@ -66,7 +58,8 @@ class GoogleSignInFragment :
            if (it.isNotBlank()) {
                when (User.valueOf(it)) {
                    User.GOOGLE -> {
                        view.findNavController().navigate(R.id.action_googleSignInFragment_to_homeFragment)
                        view.findNavController()
                            .navigate(R.id.action_googleSignInFragment_to_homeFragment)
                    }
                    else -> {}
                }
@@ -76,6 +69,7 @@ class GoogleSignInFragment :

    @SuppressLint("SetJavaScriptEnabled")
    private fun setupWebView() {
        val cookieManager = CookieManager.getInstance()
        cookieManager.removeAllCookies(null)
        cookieManager.acceptThirdPartyCookies(binding.webview)
        cookieManager.setAcceptThirdPartyCookies(binding.webview, true)
@@ -90,7 +84,7 @@ class GoogleSignInFragment :
                val cookieMap = AC2DMUtil.parseCookieString(cookies)
                if (cookieMap.isNotEmpty() && cookieMap[AUTH_TOKEN] != null) {
                    val oauthToken = cookieMap[AUTH_TOKEN] ?: ""
                    binding.webview.evaluateJavascript("(function() { return document.getElementById('profileIdentifier').innerHTML; })();") {
                    view.evaluateJavascript("(function() { return document.getElementById('profileIdentifier').innerHTML; })();") {
                        val email = it.replace("\"".toRegex(), "")
                        viewModel.saveEmailToken(email, oauthToken)
                        viewModel.saveUserType(User.GOOGLE)
@@ -115,8 +109,10 @@ class GoogleSignInFragment :
        }
    }

    override fun onDestroy() {
        super.onDestroy()
    override fun onDestroyView() {
        binding.root.removeAllViews()
        binding.webview.destroy()
        super.onDestroyView()
        _binding = null
    }
}
+4 −1
Original line number Diff line number Diff line
@@ -66,7 +66,10 @@ class DataStoreModule @Inject constructor(

    suspend fun destroyCredentials() {
        context.dataStore.edit {
            it[AUTHDATA] = ""
            it.remove(AUTHDATA)
            it.remove(EMAIL)
            it.remove(OAUTHTOKEN)
            it.remove(USERTYPE)
        }
    }