From edf58fd2159969486fbe1c7b8d65c515829e38fb Mon Sep 17 00:00:00 2001 From: Thomas Andres Gomez Date: Tue, 22 Apr 2025 11:36:54 +0200 Subject: [PATCH] Fix LwaClient issing incorrect root url. --- .../desktop/lwa/DataSyncViewModel.kt | 39 ++++++++++++------- .../desktop/lwa/network/LwaClientImpl.kt | 4 +- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/DataSyncViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/DataSyncViewModel.kt index 4faeedd..ba16d94 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/DataSyncViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/DataSyncViewModel.kt @@ -9,11 +9,13 @@ import com.pixelized.desktop.lwa.repository.item.ItemRepository import com.pixelized.desktop.lwa.repository.network.NetworkRepository import com.pixelized.desktop.lwa.repository.settings.SettingsRepository import com.pixelized.desktop.lwa.repository.tag.TagRepository +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach @@ -47,28 +49,39 @@ class DataSyncViewModel( networkRepository.status .filter { status -> status == NetworkRepository.Status.CONNECTED } + .flowOn(context = Dispatchers.IO) .onEach { - tagRepository.updateAlterationTags() - alterationRepository.updateAlterationFlow() - tagRepository.updateCharacterTags() - characterRepository.updateCharacterPreviews() - campaignRepository.updateCampaign() - tagRepository.updateItemTags() - itemRepository.updateItemFlow() + try { + tagRepository.updateAlterationTags() + alterationRepository.updateAlterationFlow() + tagRepository.updateCharacterTags() + characterRepository.updateCharacterPreviews() + campaignRepository.updateCampaign() + tagRepository.updateItemTags() + itemRepository.updateItemFlow() + } catch (exception: Exception) { + println(exception.message) // TODO proper exception handling + } } .launchIn(this) networkRepository.status .filter { status -> status == NetworkRepository.Status.CONNECTED } + .flowOn(context = Dispatchers.IO) .flatMapLatest { campaignRepository.campaignFlow().map { it.instances } } + .distinctUntilChanged() .onEach { instances -> instances.forEach { characterSheetId -> - characterRepository.updateCharacterSheet( - characterSheetId = characterSheetId, - ) - inventoryRepository.updateInventoryFlow( - characterSheetId = characterSheetId, - ) + try { + characterRepository.updateCharacterSheet( + characterSheetId = characterSheetId, + ) + inventoryRepository.updateInventoryFlow( + characterSheetId = characterSheetId, + ) + } catch (exception: Exception) { + println(exception.message) // TODO proper exception handling + } } } .launchIn(this) diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/network/LwaClientImpl.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/network/LwaClientImpl.kt index 032edbc..17a7e4e 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/network/LwaClientImpl.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/network/LwaClientImpl.kt @@ -20,9 +20,9 @@ import io.ktor.http.contentType class LwaClientImpl( private val client: HttpClient, - setting: SettingsRepository, + private val setting: SettingsRepository, ) : LwaClient { - private val root = setting.settings().network.root + private val root get() = setting.settings().network.root @Throws override suspend fun getAlterations(): APIResponse> = client