diff --git a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/base/BaseFragment.kt b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/base/BaseFragment.kt
index baed5f8516..9a66322268 100644
--- a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/base/BaseFragment.kt
+++ b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/base/BaseFragment.kt
@@ -18,7 +18,7 @@ internal class BaseFragment : Fragment(R.layout.fragment_base) {
if (authStore.signedInProjectId.isNotEmpty()) {
findNavController().navigateSafely(this, BaseFragmentDirections.actionBaseFragmentToMainFragment())
} else {
- findNavController().navigateSafely(this, BaseFragmentDirections.actionBaseFragmentToRequestLoginFragment())
+ findNavController().navigateSafely(this, BaseFragmentDirections.actionToRequestLoginFragment())
}
}
}
diff --git a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/LogoutSyncViewModel.kt b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/LogoutSyncViewModel.kt
index e55a0ad2aa..c6ca37ee2d 100644
--- a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/LogoutSyncViewModel.kt
+++ b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/LogoutSyncViewModel.kt
@@ -19,7 +19,6 @@ import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.launch
import javax.inject.Inject
@HiltViewModel
@@ -52,9 +51,7 @@ internal class LogoutSyncViewModel @Inject constructor(
}
fun logout() {
- viewModelScope.launch {
- logoutUseCase()
- }
+ logoutUseCase()
}
private companion object {
diff --git a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/sync/LogoutSyncFragment.kt b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/sync/LogoutSyncFragment.kt
index 5bdcd83226..06d36708ff 100644
--- a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/sync/LogoutSyncFragment.kt
+++ b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/sync/LogoutSyncFragment.kt
@@ -51,11 +51,5 @@ class LogoutSyncFragment : Fragment(R.layout.fragment_logout_sync) {
}
}
}
- viewModel.logoutEventLiveData.observe(viewLifecycleOwner) {
- findNavController().navigateSafely(
- this@LogoutSyncFragment,
- R.id.action_logoutSyncFragment_to_requestLoginFragment,
- )
- }
}
}
diff --git a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/syncdecline/LogoutSyncDeclineFragment.kt b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/syncdecline/LogoutSyncDeclineFragment.kt
index 0271f6debe..9ba9ba7918 100644
--- a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/syncdecline/LogoutSyncDeclineFragment.kt
+++ b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/syncdecline/LogoutSyncDeclineFragment.kt
@@ -74,7 +74,7 @@ class LogoutSyncDeclineFragment : Fragment(R.layout.fragment_logout_sync_decline
viewModel.logoutEventLiveData.observe(viewLifecycleOwner) {
findNavController().navigateSafely(
this@LogoutSyncDeclineFragment,
- LogoutSyncDeclineFragmentDirections.actionLogoutSyncDeclineFragmentToRequestLoginFragment(),
+ LogoutSyncDeclineFragmentDirections.actionToRequestLoginFragment(null),
)
}
}
diff --git a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/usecase/LogoutUseCase.kt b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/usecase/LogoutUseCase.kt
index 0910f7cf06..7db3251a52 100644
--- a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/usecase/LogoutUseCase.kt
+++ b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/logout/usecase/LogoutUseCase.kt
@@ -6,7 +6,7 @@ import com.simprints.infra.enrolment.records.repository.EnrolmentRecordRepositor
import com.simprints.infra.enrolment.records.repository.local.migration.RealmToRoomMigrationFlagsStore
import com.simprints.infra.sync.SyncOrchestrator
import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.withContext
+import kotlinx.coroutines.runBlocking
import javax.inject.Inject
internal class LogoutUseCase @Inject constructor(
@@ -16,7 +16,8 @@ internal class LogoutUseCase @Inject constructor(
private val enrolmentRecordRepository: EnrolmentRecordRepository,
@DispatcherIO private val ioDispatcher: CoroutineDispatcher,
) {
- suspend operator fun invoke() = withContext(ioDispatcher) {
+ // To prevent a race between wiping data and navigation, this use case must block the executing thread
+ operator fun invoke() = runBlocking(ioDispatcher) {
// Cancel all background sync
syncOrchestrator.cancelBackgroundWork()
syncOrchestrator.deleteEventSyncInfo()
diff --git a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/settings/about/AboutFragment.kt b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/settings/about/AboutFragment.kt
index 60cf05f8b9..fc105b5a4b 100644
--- a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/settings/about/AboutFragment.kt
+++ b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/settings/about/AboutFragment.kt
@@ -19,9 +19,9 @@ import com.simprints.feature.dashboard.R
import com.simprints.feature.dashboard.databinding.FragmentSettingsAboutBinding
import com.simprints.feature.dashboard.settings.password.SettingsPasswordDialogFragment
import com.simprints.infra.config.store.models.GeneralConfiguration.Modality.FINGERPRINT
-import com.simprints.infra.uibase.view.applySystemBarInsets
import com.simprints.infra.uibase.navigation.navigateSafely
import com.simprints.infra.uibase.system.Clipboard
+import com.simprints.infra.uibase.view.applySystemBarInsets
import com.simprints.infra.uibase.viewbinding.viewBinding
import dagger.hilt.android.AndroidEntryPoint
import java.util.Locale
@@ -96,7 +96,7 @@ internal class AboutFragment : PreferenceFragmentCompat() {
LiveDataEventWithContentObserver {
val destination = when (it) {
LogoutDestination.LogoutDataSyncScreen -> AboutFragmentDirections.actionAboutFragmentToLogoutNavigation()
- LogoutDestination.LoginScreen -> AboutFragmentDirections.actionAboutFragmentToRequestLoginFragment()
+ LogoutDestination.LoginScreen -> AboutFragmentDirections.actionToRequestLoginFragment()
}
findNavController().navigateSafely(this, destination)
},
diff --git a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/settings/syncinfo/SyncInfoViewModel.kt b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/settings/syncinfo/SyncInfoViewModel.kt
index 5e461166e4..820b6d6324 100644
--- a/feature/dashboard/src/main/java/com/simprints/feature/dashboard/settings/syncinfo/SyncInfoViewModel.kt
+++ b/feature/dashboard/src/main/java/com/simprints/feature/dashboard/settings/syncinfo/SyncInfoViewModel.kt
@@ -171,7 +171,7 @@ internal class SyncInfoViewModel @Inject constructor(
}
fun performLogout() {
- viewModelScope.launch { logoutUseCase() }
+ logoutUseCase()
}
fun requestNavigationToLogin() {
diff --git a/feature/dashboard/src/main/res/navigation/graph_dashboard.xml b/feature/dashboard/src/main/res/navigation/graph_dashboard.xml
index 0cbfa21964..91eb617620 100644
--- a/feature/dashboard/src/main/res/navigation/graph_dashboard.xml
+++ b/feature/dashboard/src/main/res/navigation/graph_dashboard.xml
@@ -33,11 +33,6 @@
android:name="com.simprints.feature.dashboard.base.BaseFragment"
android:label="BaseFragment"
tools:layout="@layout/fragment_base">
-
-
@@ -141,11 +131,6 @@
-
@@ -157,13 +142,7 @@
android:id="@+id/logOutSyncDeclineFragment"
android:name="com.simprints.feature.dashboard.logout.syncdecline.LogoutSyncDeclineFragment"
android:label="LogoutSyncDeclineFragment"
- tools:layout="@layout/fragment_logout_sync_decline">
-
-
+ tools:layout="@layout/fragment_logout_sync_decline" />
>().onChanged(Unit)
- }
- }
- val navController = testNavController(R.navigation.graph_dashboard, R.id.logout_navigation)
- launchFragmentInHiltContainer(navController = navController)
-
- assertThat(navController.currentDestination?.id)
- .isEqualTo(R.id.requestLoginFragment)
- }
}