ReModel: remove the CharacterInstanceId: client

This commit is contained in:
Thomas Andres Gomez 2025-03-25 15:57:39 +01:00
parent a5adc61e90
commit 9cc6414648
67 changed files with 891 additions and 953 deletions

View file

@ -6,12 +6,13 @@ import com.pixelized.desktop.lwa.repository.campaign.CampaignRepository
import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository
import com.pixelized.desktop.lwa.repository.network.NetworkRepository
import com.pixelized.desktop.lwa.repository.settings.SettingsRepository
import com.pixelized.shared.lwa.model.campaign.Campaign
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
class DataSyncViewModel(
@ -33,24 +34,26 @@ class DataSyncViewModel(
)
}
@OptIn(ExperimentalCoroutinesApi::class)
suspend fun synchronise() = coroutineScope {
networkRepository.status
.filter { status -> status == NetworkRepository.Status.CONNECTED }
.onEach {
campaignRepository.campaign(update = true)
alterationRepository.updateAlterations()
characterRepository.updateCharacterPreviews()
campaignRepository.updateCampaign()
}
.launchIn(this)
networkRepository.status
.filter { status -> status == NetworkRepository.Status.CONNECTED }
.combine(campaignRepository.campaignFlow) { _, campaign: Campaign -> campaign }
.flatMapLatest { campaignRepository.campaignFlow.map { it.instances } }
.distinctUntilChanged()
.onEach { campaign ->
campaign.instances.keys.forEach { id ->
.onEach { instances ->
instances.forEach { characterSheetId ->
characterRepository.characterDetail(
characterSheetId = id.characterSheetId,
characterSheetId = characterSheetId,
forceUpdate = true,
)
}