From 8437ddb51d876a3a5d509f5fee8da7bf65678351 Mon Sep 17 00:00:00 2001 From: Damontecres Date: Thu, 29 Jan 2026 19:47:10 -0500 Subject: [PATCH] Load from web client --- .../ui/main/settings/HomeSettingsPage.kt | 30 +++++++++++++------ .../ui/main/settings/HomeSettingsViewModel.kt | 25 ++++++++++++++++ app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 48 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsPage.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsPage.kt index cd61e391..9b5b6c81 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsPage.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsPage.kt @@ -1,5 +1,6 @@ package com.github.damontecres.wholphin.ui.main.settings +import androidx.annotation.StringRes import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -48,7 +49,7 @@ fun HomeSettingsPage( val scope = rememberCoroutineScope() val listState = rememberLazyListState() val backStack = rememberNavBackStack(HomeSettingsDestination.RowList) - var showConfirmDialog by remember { mutableStateOf<(() -> Unit)?>(null) } + var showConfirmDialog by remember { mutableStateOf(null) } val state by viewModel.state.collectAsState() // TODO discover rows @@ -180,16 +181,22 @@ fun HomeSettingsPage( HomeSettingsGlobal( onClickResize = { viewModel.resizeCards(it) }, onClickSave = { - showConfirmDialog = { - viewModel.saveToRemote() - } + showConfirmDialog = + ShowConfirm(R.string.overwrite_server_settings) { + viewModel.saveToRemote() + } }, onClickLoad = { - showConfirmDialog = { - viewModel.loadFromRemote() - } + showConfirmDialog = + ShowConfirm(R.string.overwrite_local_settings) { + viewModel.loadFromRemote() + } }, onClickLoadWeb = { + showConfirmDialog = + ShowConfirm(R.string.overwrite_local_settings) { + viewModel.loadFromRemoteWeb() + } }, modifier = destModifier, ) @@ -215,10 +222,10 @@ fun HomeSettingsPage( .weight(1f), ) } - showConfirmDialog?.let { onConfirm -> + showConfirmDialog?.let { (body, onConfirm) -> ConfirmDialog( title = stringResource(R.string.confirm), - body = "Overwrite?", + body = stringResource(body), onCancel = { showConfirmDialog = null }, onConfirm = { onConfirm.invoke() @@ -227,3 +234,8 @@ fun HomeSettingsPage( ) } } + +data class ShowConfirm( + @param:StringRes val body: Int, + val onConfirm: () -> Unit, +) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsViewModel.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsViewModel.kt index 12db7332..62aa4eba 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsViewModel.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsViewModel.kt @@ -401,6 +401,31 @@ class HomeSettingsViewModel } } + fun loadFromRemoteWeb() { + viewModelScope.launchIO { + serverRepository.currentUser.value?.let { user -> + Timber.d("Loading home settings from web") + try { + _state.update { it.copy(loading = LoadingState.Loading) } + val result = homeSettingsService.parseFromWebConfig(user.id) + if (result != null) { + Timber.v("Got web settings") + _state.update { + it.copy(rows = result.rows) + } + } else { + Timber.v("No web settings") + showToast(context, "No server-side web settings found") + } + fetchRowData() + } catch (ex: Exception) { + Timber.e(ex) + showToast(context, "Error: ${ex.localizedMessage}") + } + } + } + } + fun saveToLocal() { // This uses injected ioScope so that it will still run when the page is closing ioScope.launchIO { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 103b4529..8b80a127 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -474,6 +474,8 @@ Load from web client Use series image Add row for %1$s + Overwrite settings on server? + Overwrite local settings? Disabled