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.window.Dialog
|
||||
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.screen.gamemaster.common.GMFilterHeader
|
||||
import com.pixelized.desktop.lwa.ui.screen.gamemaster.common.tag.GMTagUio
|
||||
import com.pixelized.desktop.lwa.ui.theme.lwa
|
||||
import kotlinx.coroutines.flow.SharedFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import lwacharactersheet.composeapp.generated.resources.Res
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_close_24dp
|
||||
|
|
@ -50,7 +53,6 @@ data class CharacterSheetAlterationDialogUio(
|
|||
@Composable
|
||||
fun CharacterSheetAlterationDialog(
|
||||
dialog: State<CharacterSheetAlterationDialogUio?>,
|
||||
onConfirm: (CharacterSheetAlterationDialogUio) -> Unit,
|
||||
onTag: (String) -> Unit,
|
||||
onAlteration: (characterSheetId: String, alterationId: String, active: Boolean) -> Unit,
|
||||
onDismissRequest: () -> Unit,
|
||||
|
|
@ -65,7 +67,6 @@ fun CharacterSheetAlterationDialog(
|
|||
content = {
|
||||
CharacterSheetAlterationContent(
|
||||
dialog = it,
|
||||
onConfirm = onConfirm,
|
||||
onTag = onTag,
|
||||
onAlteration = onAlteration,
|
||||
onDismissRequest = onDismissRequest,
|
||||
|
|
@ -78,7 +79,6 @@ fun CharacterSheetAlterationDialog(
|
|||
@Composable
|
||||
fun CharacterSheetAlterationContent(
|
||||
dialog: CharacterSheetAlterationDialogUio,
|
||||
onConfirm: (CharacterSheetAlterationDialogUio) -> Unit,
|
||||
onTag: (String) -> Unit,
|
||||
onAlteration: (characterSheetId: String, alterationId: String, active: Boolean) -> 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.characterSheet.CharacterSheetRepository
|
||||
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.screen.gamemaster.common.tag.GMTagFactory
|
||||
import com.pixelized.desktop.lwa.ui.screen.gamemaster.common.tag.GMTagUio
|
||||
import com.pixelized.desktop.lwa.utils.extention.unAccent
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.SharedFlow
|
||||
import kotlinx.coroutines.flow.SharingStarted
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.combine
|
||||
|
|
@ -65,6 +68,9 @@ class CharacterSheetAlterationDialogViewModel(
|
|||
initialValue = emptyList(),
|
||||
)
|
||||
|
||||
private val _errors = MutableSharedFlow<ErrorSnackUio>()
|
||||
val errors: SharedFlow<ErrorSnackUio> get() = _errors
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
val alterationDialog = selectedCharacterSheetIdFlow
|
||||
.flatMapLatest { characterSheetId ->
|
||||
|
|
@ -112,10 +118,15 @@ class CharacterSheetAlterationDialogViewModel(
|
|||
alterationId: String,
|
||||
active: Boolean,
|
||||
) {
|
||||
characterSheetRepository.updateAlteration(
|
||||
characterSheetId = characterSheetId,
|
||||
alterationId = alterationId,
|
||||
active = active.not(),
|
||||
)
|
||||
try {
|
||||
characterSheetRepository.updateAlteration(
|
||||
characterSheetId = characterSheetId,
|
||||
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.diminished.CharacterSheetDiminishedDialog
|
||||
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.navigation.screen.LocalScreenController
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.navigateToLevelScreen
|
||||
|
|
@ -200,7 +201,6 @@ fun CampaignScreen(
|
|||
|
||||
CharacterSheetAlterationDialog(
|
||||
dialog = alterationViewModel.alterationDialog.collectAsState(),
|
||||
onConfirm = { },
|
||||
onTag = {
|
||||
alterationViewModel.selectedTag(id = it)
|
||||
},
|
||||
|
|
@ -226,6 +226,10 @@ fun CampaignScreen(
|
|||
}
|
||||
}
|
||||
)
|
||||
|
||||
ErrorSnackHandler(
|
||||
error = alterationViewModel.errors,
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
|
|
|||
|
|
@ -155,7 +155,6 @@ fun GMCharacterPage(
|
|||
|
||||
CharacterSheetAlterationDialog(
|
||||
dialog = alterationViewModel.alterationDialog.collectAsState(),
|
||||
onConfirm = { },
|
||||
onTag = {
|
||||
alterationViewModel.selectedTag(id = it)
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue