diff --git a/app/src/main/java/foundation/e/apps/ui/MainActivity.kt b/app/src/main/java/foundation/e/apps/ui/MainActivity.kt index 23057a1cf5222f734d2ba26fcd66f1fc0bb96b6c..d1453ea0500cfe2707db949a78bda86727896c56 100644 --- a/app/src/main/java/foundation/e/apps/ui/MainActivity.kt +++ b/app/src/main/java/foundation/e/apps/ui/MainActivity.kt @@ -260,7 +260,7 @@ class MainActivity : AppCompatActivity() { } launch { - observeAppNotFoundAutoRedirect() + observeAutoRedirect() } } } @@ -598,11 +598,21 @@ class MainActivity : AppCompatActivity() { } } - private suspend fun observeAppNotFoundAutoRedirect() { - EventBus.events.filterIsInstance() - .collectLatest { + private suspend fun observeAutoRedirect() { + EventBus.events.filterIsInstance() + .collectLatest { event -> + event.message?.let { messageResId -> + showSnackbarMessage(getString(messageResId)) + } + try { - findNavController(R.id.fragment).navigateUp() + val navController = findNavController(R.id.fragment) + + if (event.message != null && navController.currentDestination?.id == R.id.applicationFragment) { + navController.navigate(R.id.action_applicationFragment_to_homeFragment) + } else { + navController.navigateUp() + } } catch (e: IllegalArgumentException) { Timber.w(e, "Failed to navigate up from app not found") diff --git a/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt b/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt index 2b0eef0ce2e8323e0a2b21b6c0bfef3c5da4abb6..dc873c82993d53cb576619430063969a1a612456 100644 --- a/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/application/ApplicationViewModel.kt @@ -90,7 +90,9 @@ class ApplicationViewModel @Inject constructor( * GPlayAuth, it will only have CleanApkAuth. */ if (gPlayObj == null && params.source == Source.PLAY_STORE) { - _errorMessageLiveData.postValue(R.string.gplay_data_for_oss) + viewModelScope.launch { + EventBus.invokeEvent(AppEvent.AutoRedirectHome(R.string.gplay_data_for_oss)) + } return } @@ -240,7 +242,7 @@ class ApplicationViewModel @Inject constructor( private fun scheduleAutoRedirect() { viewModelScope.launch { delay(REDIRECT_DELAY_MS) - EventBus.invokeEvent(AppEvent.AppNotFoundAutoRedirect()) + EventBus.invokeEvent(AppEvent.AutoRedirectHome()) } } diff --git a/app/src/main/java/foundation/e/apps/utils/eventBus/AppEvent.kt b/app/src/main/java/foundation/e/apps/utils/eventBus/AppEvent.kt index 406053e61ee54f57ff9fcb07e76e6b7f318c559b..c7ca28c07217e8a21939b8647c01223f891b1788 100644 --- a/app/src/main/java/foundation/e/apps/utils/eventBus/AppEvent.kt +++ b/app/src/main/java/foundation/e/apps/utils/eventBus/AppEvent.kt @@ -41,5 +41,5 @@ sealed class AppEvent(val data: Any) { val onClose: CompletableDeferred? = null ) : AppEvent(type) class SuccessfulLogin(user: User): AppEvent(user) - class AppNotFoundAutoRedirect : AppEvent(Unit) + class AutoRedirectHome(val message: Int? = null) : AppEvent(message ?: Unit) }