fix: Differenzierte Sync-Aktivitätsmeldungen
- Neues SyncActivityMessage.CheckingForChanges 'Prüfe auf Änderungen…' wird beim initialen Catch-up nach Connect angezeigt (statt dem irreführenden 'Empfange Inventar-Update…') - Neues SyncActivityMessage.NoChanges 'Keine Änderungen' wird angezeigt wenn der initiale Sync keine Daten zurückliefert - Echter Server-Push (InventoryUpdated/FullSyncRequired) zeigt weiterhin 'Empfange Inventar-Update…' → jede echte Kommunikation bleibt sichtbar
This commit is contained in:
parent
aafb9ddd64
commit
fdc016c786
2 changed files with 22 additions and 4 deletions
|
|
@ -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) }
|
||||
|
|
|
|||
|
|
@ -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…"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue