Skip to content

Commit

Permalink
Merge pull request #263 from fmasa/fix-create-char
Browse files Browse the repository at this point in the history
Invalidate Careers in selectbox when changed by GM
  • Loading branch information
fmasa authored Mar 14, 2024
2 parents 470fcaf + a41a9b1 commit 1cbb6b4
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.ArrowBackIos
import androidx.compose.material.icons.rounded.ArrowForwardIos
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
Expand All @@ -44,11 +43,11 @@ import androidx.compose.ui.unit.dp
import cafe.adriel.voyager.core.screen.Screen
import cz.frantisekmasa.wfrp_master.common.Str
import cz.frantisekmasa.wfrp_master.common.character.CharacterDetailScreen
import cz.frantisekmasa.wfrp_master.common.compendium.domain.Career
import cz.frantisekmasa.wfrp_master.common.core.auth.UserId
import cz.frantisekmasa.wfrp_master.common.core.domain.character.CharacterType
import cz.frantisekmasa.wfrp_master.common.core.domain.party.PartyId
import cz.frantisekmasa.wfrp_master.common.core.ui.buttons.BackButton
import cz.frantisekmasa.wfrp_master.common.core.ui.flow.collectWithLifecycle
import cz.frantisekmasa.wfrp_master.common.core.ui.forms.FormData
import cz.frantisekmasa.wfrp_master.common.core.ui.navigation.LocalNavigationTransaction
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.FullScreenProgress
Expand All @@ -58,7 +57,6 @@ import cz.frantisekmasa.wfrp_master.common.core.ui.scaffolding.SubheadBar
import dev.icerock.moko.resources.compose.stringResource
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

private enum class FormState {
EDITED_BY_USER,
Expand Down Expand Up @@ -90,15 +88,7 @@ private fun Screen.MainContainer(partyId: PartyId, type: CharacterType, userId:
val screenModel: CharacterCreationScreenModel = rememberScreenModel(arg = partyId)
val coroutineScope = rememberCoroutineScope()

val (careers, setCareers) = rememberSaveable {
mutableStateOf<List<Career>?>(null)
}

LaunchedEffect(Unit) {
withContext(Dispatchers.IO) {
setCareers(screenModel.getCareers())
}
}
val careers = screenModel.careers.collectWithLifecycle(null).value

if (careers == null) {
FullScreenProgress()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,29 @@ import cz.frantisekmasa.wfrp_master.common.core.domain.party.PartyId
import cz.frantisekmasa.wfrp_master.common.core.domain.party.PartyRepository
import cz.frantisekmasa.wfrp_master.common.core.logging.Reporter
import cz.frantisekmasa.wfrp_master.common.core.ui.forms.SelectedCareer
import cz.frantisekmasa.wfrp_master.common.core.utils.right
import io.github.aakira.napier.Napier
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.withContext

class CharacterCreationScreenModel(
private val partyId: PartyId,
private val characters: CharacterRepository,
private val careerCompendium: Compendium<Career>,
careerCompendium: Compendium<Career>,
private val userProvider: UserProvider,
private val parties: PartyRepository,
parties: PartyRepository,
) : ScreenModel {

suspend fun getCareers(): List<Career> {
val careers = careerCompendium.liveForParty(partyId).first()
val party = parties.get(partyId)

if (userProvider.userId == party.gameMasterId) {
return careers
val careers: Flow<List<Career>> = careerCompendium.liveForParty(partyId)
.combine(parties.getLive(partyId).right()) { careers, party ->
if (userProvider.userId == party.gameMasterId) {
careers
} else {
careers.filter { it.isVisibleToPlayers }
}
}

return careers.filter { it.isVisibleToPlayers }
}

suspend fun createCharacter(
userId: UserId?,
type: CharacterType,
Expand Down

0 comments on commit 1cbb6b4

Please sign in to comment.