From 63270b53006f010c3435c3137c6bd86bd050c9cc Mon Sep 17 00:00:00 2001 From: Marinov Date: Tue, 23 Sep 2025 17:34:32 +0300 Subject: [PATCH] Prevent endless loop when initial sync is required --- .../settings/syncinfo/SyncInfoViewModel.kt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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 019e02642b..5e461166e4 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 @@ -1,15 +1,12 @@ package com.simprints.feature.dashboard.settings.syncinfo import androidx.lifecycle.LiveData -import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.asFlow import androidx.lifecycle.asLiveData import androidx.lifecycle.viewModelScope import com.simprints.core.DispatcherIO -import com.simprints.core.livedata.LiveDataEventWithContent -import com.simprints.core.livedata.send import com.simprints.core.tools.time.TimeHelper import com.simprints.feature.dashboard.logout.usecase.LogoutUseCase import com.simprints.feature.dashboard.settings.syncinfo.usecase.ObserveSyncInfoUseCase @@ -138,12 +135,15 @@ internal class SyncInfoViewModel @Inject constructor( .asLiveData(viewModelScope.coroutineContext) } - fun forceEventSync() { + fun forceEventSync(canEmitSyncButtonClick: Boolean = true) { viewModelScope.launch { - val isEventSyncing = eventSyncStateFlow.firstOrNull()?.isSyncInProgress() == true - if (!isEventSyncing) { - eventSyncButtonClickFlow.emit(Unit) + if (canEmitSyncButtonClick) { + val isEventSyncing = eventSyncStateFlow.firstOrNull()?.isSyncInProgress() == true + if (!isEventSyncing) { + eventSyncButtonClickFlow.emit(Unit) + } } + syncOrchestrator.stopEventSync() val projectState = try { configManager.getProject(authStore.signedInProjectId).state @@ -207,7 +207,7 @@ internal class SyncInfoViewModel @Inject constructor( else -> false } if (isForceEventSync) { - forceEventSync() + forceEventSync(canEmitSyncButtonClick = false) } } }