diff --git a/app/src/main/java/de/bollwerk/app/ui/settings/SettingsViewModel.kt b/app/src/main/java/de/bollwerk/app/ui/settings/SettingsViewModel.kt index 523c543..fc31ac9 100644 --- a/app/src/main/java/de/bollwerk/app/ui/settings/SettingsViewModel.kt +++ b/app/src/main/java/de/bollwerk/app/ui/settings/SettingsViewModel.kt @@ -92,7 +92,7 @@ internal class SettingsViewModel @Inject constructor( showActivity(SyncActivityMessage.Error(event.message)) } is WebSocketEvent.Connected -> { - pullSync(fullSync = false, silent = true) + pullSync(fullSync = false, isInitialConnect = true) } else -> {} } @@ -432,10 +432,13 @@ internal class SettingsViewModel @Inject constructor( } } - fun pullSync(fullSync: Boolean = false, silent: Boolean = false) { + fun pullSync(fullSync: Boolean = false, isInitialConnect: Boolean = false) { viewModelScope.launch { _uiState.update { it.copy(isSyncing = true) } - if (!silent) showActivity(SyncActivityMessage.ReceivingUpdate) + showActivity( + if (isInitialConnect) SyncActivityMessage.CheckingForChanges + else SyncActivityMessage.ReceivingUpdate + ) try { val since = if (fullSync) null else settingsRepository.getStringOrNull(StringKey.SyncLastTimestamp)?.toLongOrNull() val result = syncService.downloadInventory(since) @@ -452,7 +455,14 @@ internal class SettingsViewModel @Inject constructor( lastSyncTime = formatTimestamp(now) ) } - showActivity(SyncActivityMessage.InventorySynced) + val hasChanges = inventoryDto.items.isNotEmpty() + || inventoryDto.deletedItemIds.isNotEmpty() + || inventoryDto.categories.isNotEmpty() + || inventoryDto.locations.isNotEmpty() + showActivity( + if (isInitialConnect && !hasChanges) SyncActivityMessage.NoChanges + else SyncActivityMessage.InventorySynced + ) }, onFailure = { e -> _uiState.update { it.copy(isSyncing = false) } diff --git a/app/src/main/java/de/bollwerk/app/ui/settings/SyncActivityMessage.kt b/app/src/main/java/de/bollwerk/app/ui/settings/SyncActivityMessage.kt index f0be3a9..ac11fb2 100644 --- a/app/src/main/java/de/bollwerk/app/ui/settings/SyncActivityMessage.kt +++ b/app/src/main/java/de/bollwerk/app/ui/settings/SyncActivityMessage.kt @@ -8,6 +8,14 @@ internal sealed interface SyncActivityMessage { override val text = "Empfange Inventar-Update…" } + data object CheckingForChanges : SyncActivityMessage { + override val text = "Prüfe auf Änderungen…" + } + + data object NoChanges : SyncActivityMessage { + override val text = "Keine Änderungen" + } + data object SendingChange : SyncActivityMessage { override val text = "Sende Änderung…" }