mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-09 08:01:20 +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
|
package com.github.damontecres.wholphin.ui.main.settings
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
|
|
@ -48,7 +49,7 @@ fun HomeSettingsPage(
|
||||||
val scope = rememberCoroutineScope()
|
val scope = rememberCoroutineScope()
|
||||||
val listState = rememberLazyListState()
|
val listState = rememberLazyListState()
|
||||||
val backStack = rememberNavBackStack(HomeSettingsDestination.RowList)
|
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()
|
val state by viewModel.state.collectAsState()
|
||||||
// TODO discover rows
|
// TODO discover rows
|
||||||
|
|
@ -180,16 +181,22 @@ fun HomeSettingsPage(
|
||||||
HomeSettingsGlobal(
|
HomeSettingsGlobal(
|
||||||
onClickResize = { viewModel.resizeCards(it) },
|
onClickResize = { viewModel.resizeCards(it) },
|
||||||
onClickSave = {
|
onClickSave = {
|
||||||
showConfirmDialog = {
|
showConfirmDialog =
|
||||||
viewModel.saveToRemote()
|
ShowConfirm(R.string.overwrite_server_settings) {
|
||||||
}
|
viewModel.saveToRemote()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onClickLoad = {
|
onClickLoad = {
|
||||||
showConfirmDialog = {
|
showConfirmDialog =
|
||||||
viewModel.loadFromRemote()
|
ShowConfirm(R.string.overwrite_local_settings) {
|
||||||
}
|
viewModel.loadFromRemote()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onClickLoadWeb = {
|
onClickLoadWeb = {
|
||||||
|
showConfirmDialog =
|
||||||
|
ShowConfirm(R.string.overwrite_local_settings) {
|
||||||
|
viewModel.loadFromRemoteWeb()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
modifier = destModifier,
|
modifier = destModifier,
|
||||||
)
|
)
|
||||||
|
|
@ -215,10 +222,10 @@ fun HomeSettingsPage(
|
||||||
.weight(1f),
|
.weight(1f),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
showConfirmDialog?.let { onConfirm ->
|
showConfirmDialog?.let { (body, onConfirm) ->
|
||||||
ConfirmDialog(
|
ConfirmDialog(
|
||||||
title = stringResource(R.string.confirm),
|
title = stringResource(R.string.confirm),
|
||||||
body = "Overwrite?",
|
body = stringResource(body),
|
||||||
onCancel = { showConfirmDialog = null },
|
onCancel = { showConfirmDialog = null },
|
||||||
onConfirm = {
|
onConfirm = {
|
||||||
onConfirm.invoke()
|
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() {
|
fun saveToLocal() {
|
||||||
// This uses injected ioScope so that it will still run when the page is closing
|
// This uses injected ioScope so that it will still run when the page is closing
|
||||||
ioScope.launchIO {
|
ioScope.launchIO {
|
||||||
|
|
|
||||||
|
|
@ -474,6 +474,8 @@
|
||||||
<string name="load_from_web_client">Load from web client</string>
|
<string name="load_from_web_client">Load from web client</string>
|
||||||
<string name="use_series">Use series image</string>
|
<string name="use_series">Use series image</string>
|
||||||
<string name="add_row_for">Add row for %1$s</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">
|
<string-array name="theme_song_volume">
|
||||||
<item>Disabled</item>
|
<item>Disabled</item>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue