mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-08 23:51:21 +02:00
Load from web client
This commit is contained in:
parent
d3448771c8
commit
8437ddb51d
3 changed files with 48 additions and 9 deletions
|
|
@ -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<ShowConfirm?>(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,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -474,6 +474,8 @@
|
|||
<string name="load_from_web_client">Load from web client</string>
|
||||
<string name="use_series">Use series image</string>
|
||||
<string name="add_row_for">Add row for %1$s</string>
|
||||
<string name="overwrite_server_settings">Overwrite settings on server?</string>
|
||||
<string name="overwrite_local_settings">Overwrite local settings?</string>
|
||||
|
||||
<string-array name="theme_song_volume">
|
||||
<item>Disabled</item>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue