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

Commit 467166d2 authored by Sayantan Roychowdhury's avatar Sayantan Roychowdhury
Browse files

MainActivity - handle invalid auth with dialog

parent ce1b70d7
Loading
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -41,6 +41,8 @@ import foundation.e.apps.data.fusedDownload.models.FusedDownload
import foundation.e.apps.data.login.LoginSourceGPlay
import foundation.e.apps.data.preference.PreferenceManagerModule
import foundation.e.apps.databinding.ActivityMainBinding
import foundation.e.apps.domain.errors.CentralErrorHandler
import foundation.e.apps.domain.errors.RetryMechanism
import foundation.e.apps.install.updates.UpdatesNotifier
import foundation.e.apps.presentation.login.LoginViewModel
import foundation.e.apps.ui.MainActivityViewModel
@@ -64,6 +66,9 @@ class MainActivity : AppCompatActivity() {
    private val TAG = MainActivity::class.java.simpleName
    private lateinit var viewModel: MainActivityViewModel

    private val retryMechanism by lazy { RetryMechanism() }
    private val ceh by lazy { CentralErrorHandler() }

    @Inject
    lateinit var preferenceManagerModule: PreferenceManagerModule

@@ -271,7 +276,19 @@ class MainActivity : AppCompatActivity() {
        }.distinctUntilChanged { old, new ->
            ((old.data is String) && (new.data is String) && old.data == new.data)
        }.collectLatest {
            validatedAuthObject(it)
            val currentUser = loginViewModel.currentUser()
            retryMechanism.wrapWithRetry(
                { loginViewModel.getNewToken() },
                {
                    ceh.getDialogForUnauthorized(
                        context = this@MainActivity,
                        logToDisplay = it.data.toString(),
                        user = currentUser,
                        retryAction = { loginViewModel.getNewToken() },
                        logoutAction = { loginViewModel.logout() }
                    ).run { ceh.dismissAllAndShow(this) }
                }
            )
        }
    }