Handle error on alteration update for a character.
This commit is contained in:
parent
2f6d0b3819
commit
57c535afd6
4 changed files with 24 additions and 10 deletions
|
|
@ -28,10 +28,13 @@ import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.Dialog
|
import androidx.compose.ui.window.Dialog
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
|
import com.pixelized.desktop.lwa.ui.composable.error.ErrorSnackHandler
|
||||||
|
import com.pixelized.desktop.lwa.ui.composable.error.ErrorSnackUio
|
||||||
import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextFieldUio
|
import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextFieldUio
|
||||||
import com.pixelized.desktop.lwa.ui.screen.gamemaster.common.GMFilterHeader
|
import com.pixelized.desktop.lwa.ui.screen.gamemaster.common.GMFilterHeader
|
||||||
import com.pixelized.desktop.lwa.ui.screen.gamemaster.common.tag.GMTagUio
|
import com.pixelized.desktop.lwa.ui.screen.gamemaster.common.tag.GMTagUio
|
||||||
import com.pixelized.desktop.lwa.ui.theme.lwa
|
import com.pixelized.desktop.lwa.ui.theme.lwa
|
||||||
|
import kotlinx.coroutines.flow.SharedFlow
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import lwacharactersheet.composeapp.generated.resources.Res
|
import lwacharactersheet.composeapp.generated.resources.Res
|
||||||
import lwacharactersheet.composeapp.generated.resources.ic_close_24dp
|
import lwacharactersheet.composeapp.generated.resources.ic_close_24dp
|
||||||
|
|
@ -50,7 +53,6 @@ data class CharacterSheetAlterationDialogUio(
|
||||||
@Composable
|
@Composable
|
||||||
fun CharacterSheetAlterationDialog(
|
fun CharacterSheetAlterationDialog(
|
||||||
dialog: State<CharacterSheetAlterationDialogUio?>,
|
dialog: State<CharacterSheetAlterationDialogUio?>,
|
||||||
onConfirm: (CharacterSheetAlterationDialogUio) -> Unit,
|
|
||||||
onTag: (String) -> Unit,
|
onTag: (String) -> Unit,
|
||||||
onAlteration: (characterSheetId: String, alterationId: String, active: Boolean) -> Unit,
|
onAlteration: (characterSheetId: String, alterationId: String, active: Boolean) -> Unit,
|
||||||
onDismissRequest: () -> Unit,
|
onDismissRequest: () -> Unit,
|
||||||
|
|
@ -65,7 +67,6 @@ fun CharacterSheetAlterationDialog(
|
||||||
content = {
|
content = {
|
||||||
CharacterSheetAlterationContent(
|
CharacterSheetAlterationContent(
|
||||||
dialog = it,
|
dialog = it,
|
||||||
onConfirm = onConfirm,
|
|
||||||
onTag = onTag,
|
onTag = onTag,
|
||||||
onAlteration = onAlteration,
|
onAlteration = onAlteration,
|
||||||
onDismissRequest = onDismissRequest,
|
onDismissRequest = onDismissRequest,
|
||||||
|
|
@ -78,7 +79,6 @@ fun CharacterSheetAlterationDialog(
|
||||||
@Composable
|
@Composable
|
||||||
fun CharacterSheetAlterationContent(
|
fun CharacterSheetAlterationContent(
|
||||||
dialog: CharacterSheetAlterationDialogUio,
|
dialog: CharacterSheetAlterationDialogUio,
|
||||||
onConfirm: (CharacterSheetAlterationDialogUio) -> Unit,
|
|
||||||
onTag: (String) -> Unit,
|
onTag: (String) -> Unit,
|
||||||
onAlteration: (characterSheetId: String, alterationId: String, active: Boolean) -> Unit,
|
onAlteration: (characterSheetId: String, alterationId: String, active: Boolean) -> Unit,
|
||||||
onDismissRequest: () -> Unit,
|
onDismissRequest: () -> Unit,
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,15 @@ import androidx.lifecycle.viewModelScope
|
||||||
import com.pixelized.desktop.lwa.repository.alteration.AlterationRepository
|
import com.pixelized.desktop.lwa.repository.alteration.AlterationRepository
|
||||||
import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository
|
import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository
|
||||||
import com.pixelized.desktop.lwa.repository.tag.TagRepository
|
import com.pixelized.desktop.lwa.repository.tag.TagRepository
|
||||||
|
import com.pixelized.desktop.lwa.ui.composable.error.ErrorSnackUio
|
||||||
import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextFieldUio
|
import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextFieldUio
|
||||||
import com.pixelized.desktop.lwa.ui.screen.gamemaster.common.tag.GMTagFactory
|
import com.pixelized.desktop.lwa.ui.screen.gamemaster.common.tag.GMTagFactory
|
||||||
import com.pixelized.desktop.lwa.ui.screen.gamemaster.common.tag.GMTagUio
|
import com.pixelized.desktop.lwa.ui.screen.gamemaster.common.tag.GMTagUio
|
||||||
import com.pixelized.desktop.lwa.utils.extention.unAccent
|
import com.pixelized.desktop.lwa.utils.extention.unAccent
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
import kotlinx.coroutines.flow.SharedFlow
|
||||||
import kotlinx.coroutines.flow.SharingStarted
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
|
|
@ -65,6 +68,9 @@ class CharacterSheetAlterationDialogViewModel(
|
||||||
initialValue = emptyList(),
|
initialValue = emptyList(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
private val _errors = MutableSharedFlow<ErrorSnackUio>()
|
||||||
|
val errors: SharedFlow<ErrorSnackUio> get() = _errors
|
||||||
|
|
||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
val alterationDialog = selectedCharacterSheetIdFlow
|
val alterationDialog = selectedCharacterSheetIdFlow
|
||||||
.flatMapLatest { characterSheetId ->
|
.flatMapLatest { characterSheetId ->
|
||||||
|
|
@ -112,10 +118,15 @@ class CharacterSheetAlterationDialogViewModel(
|
||||||
alterationId: String,
|
alterationId: String,
|
||||||
active: Boolean,
|
active: Boolean,
|
||||||
) {
|
) {
|
||||||
characterSheetRepository.updateAlteration(
|
try {
|
||||||
characterSheetId = characterSheetId,
|
characterSheetRepository.updateAlteration(
|
||||||
alterationId = alterationId,
|
characterSheetId = characterSheetId,
|
||||||
active = active.not(),
|
alterationId = alterationId,
|
||||||
)
|
active = active.not(),
|
||||||
|
)
|
||||||
|
} catch (exception: Exception) {
|
||||||
|
val message = ErrorSnackUio.from(exception = exception)
|
||||||
|
_errors.emit(value = message)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -37,6 +37,7 @@ import com.pixelized.desktop.lwa.ui.composable.character.characteristic.Characte
|
||||||
import com.pixelized.desktop.lwa.ui.composable.character.characteristic.CharacterSheetCharacteristicDialogViewModel
|
import com.pixelized.desktop.lwa.ui.composable.character.characteristic.CharacterSheetCharacteristicDialogViewModel
|
||||||
import com.pixelized.desktop.lwa.ui.composable.character.diminished.CharacterSheetDiminishedDialog
|
import com.pixelized.desktop.lwa.ui.composable.character.diminished.CharacterSheetDiminishedDialog
|
||||||
import com.pixelized.desktop.lwa.ui.composable.character.diminished.CharacterSheetDiminishedDialogViewModel
|
import com.pixelized.desktop.lwa.ui.composable.character.diminished.CharacterSheetDiminishedDialogViewModel
|
||||||
|
import com.pixelized.desktop.lwa.ui.composable.error.ErrorSnackHandler
|
||||||
import com.pixelized.desktop.lwa.ui.composable.key.KeyHandler
|
import com.pixelized.desktop.lwa.ui.composable.key.KeyHandler
|
||||||
import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController
|
import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController
|
||||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.navigateToLevelScreen
|
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.navigateToLevelScreen
|
||||||
|
|
@ -200,7 +201,6 @@ fun CampaignScreen(
|
||||||
|
|
||||||
CharacterSheetAlterationDialog(
|
CharacterSheetAlterationDialog(
|
||||||
dialog = alterationViewModel.alterationDialog.collectAsState(),
|
dialog = alterationViewModel.alterationDialog.collectAsState(),
|
||||||
onConfirm = { },
|
|
||||||
onTag = {
|
onTag = {
|
||||||
alterationViewModel.selectedTag(id = it)
|
alterationViewModel.selectedTag(id = it)
|
||||||
},
|
},
|
||||||
|
|
@ -226,6 +226,10 @@ fun CampaignScreen(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
ErrorSnackHandler(
|
||||||
|
error = alterationViewModel.errors,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,6 @@ fun GMCharacterPage(
|
||||||
|
|
||||||
CharacterSheetAlterationDialog(
|
CharacterSheetAlterationDialog(
|
||||||
dialog = alterationViewModel.alterationDialog.collectAsState(),
|
dialog = alterationViewModel.alterationDialog.collectAsState(),
|
||||||
onConfirm = { },
|
|
||||||
onTag = {
|
onTag = {
|
||||||
alterationViewModel.selectedTag(id = it)
|
alterationViewModel.selectedTag(id = it)
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue