Skip to content

Commit

Permalink
refactor(android): move MatchPlayEditor to sheet
Browse files Browse the repository at this point in the history
  • Loading branch information
autoreleasefool committed Feb 15, 2024
1 parent 2bbe7c2 commit 5a99391
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import ca.josephroque.bowlingcompanion.feature.accessoriesoverview.navigation.ac
import ca.josephroque.bowlingcompanion.feature.gameseditor.navigation.gamesSettingsScreen
import ca.josephroque.bowlingcompanion.feature.gameseditor.navigation.navigateToGamesEditor
import ca.josephroque.bowlingcompanion.feature.gameseditor.navigation.scoresListScreen
import ca.josephroque.bowlingcompanion.feature.matchplayeditor.navigation.matchPlayEditorScreen
import ca.josephroque.bowlingcompanion.feature.overview.navigation.navigateToQuickPlayOnboarding
import ca.josephroque.bowlingcompanion.feature.overview.navigation.quickPlay
import ca.josephroque.bowlingcompanion.feature.overview.navigation.quickPlayOnboarding
Expand Down Expand Up @@ -99,4 +100,15 @@ fun NavGraphBuilder.bottomSheetGraph(navController: NavController) {
midGameStatisticsDetailsScreen(
onBackPressed = navController::popBackStack,
)
matchPlayEditorScreen(
onBackPressed = navController::popBackStack,
onEditOpponent = { opponent, result ->
navController.navigateToResourcePickerForResult(
selectedIds = opponent?.let { setOf(it) } ?: emptySet(),
limit = 1,
navResultCallback = result,
resourceType = ResourcePickerType.BOWLER,
)
},
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import ca.josephroque.bowlingcompanion.feature.leaguedetails.navigation.navigate
import ca.josephroque.bowlingcompanion.feature.leagueform.navigation.leagueFormScreen
import ca.josephroque.bowlingcompanion.feature.leagueform.navigation.navigateToLeagueForm
import ca.josephroque.bowlingcompanion.feature.leagueform.navigation.navigateToNewLeagueForm
import ca.josephroque.bowlingcompanion.feature.matchplayeditor.navigation.matchPlayEditorScreen
import ca.josephroque.bowlingcompanion.feature.matchplayeditor.navigation.navigateToMatchPlayEditor
import ca.josephroque.bowlingcompanion.feature.onboarding.navigation.navigateToOnboarding
import ca.josephroque.bowlingcompanion.feature.onboarding.navigation.onboardingScreen
Expand Down Expand Up @@ -207,17 +206,6 @@ fun NavGraphBuilder.overviewGraph(
statisticPickerScreen(
onDismissWithResult = navController::popBackStackWithResult,
)
matchPlayEditorScreen(
onBackPressed = navController::popBackStack,
onEditOpponent = { opponent, result ->
navController.navigateToResourcePickerForResult(
selectedIds = opponent?.let { setOf(it) } ?: emptySet(),
limit = 1,
navResultCallback = result,
resourceType = ResourcePickerType.BOWLER,
)
},
)
statisticsDetailsScreen(
onBackPressed = navController::popBackStack,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,7 @@ class GamesEditorViewModel @Inject constructor(
return
}

isGameDetailsSheetVisible.value = false
sendEvent(
GamesEditorScreenEvent.EditGear(
gameDetailsState.value.gear.selectedGear.map(GearListItem::id).toSet(),
Expand All @@ -477,6 +478,7 @@ class GamesEditorViewModel @Inject constructor(
return
}

isGameDetailsSheetVisible.value = false
val gameDetails = gameDetailsState.value
sendEvent(
GamesEditorScreenEvent.EditLanes(
Expand All @@ -492,10 +494,10 @@ class GamesEditorViewModel @Inject constructor(
return
}

val gameDetails = gameDetailsState.value
isGameDetailsSheetVisible.value = false
sendEvent(
GamesEditorScreenEvent.EditAlley(
alleyId = gameDetails.alley.selectedAlley?.id,
alleyId = gameDetailsState.value.alley.selectedAlley?.id,
),
)
}
Expand All @@ -506,6 +508,7 @@ class GamesEditorViewModel @Inject constructor(
return
}

isGameDetailsSheetVisible.value = false
sendEvent(GamesEditorScreenEvent.EditMatchPlay(currentGameId.value))
}

Expand Down Expand Up @@ -545,6 +548,7 @@ class GamesEditorViewModel @Inject constructor(
return
}

isGameDetailsSheetVisible.value = false
sendEvent(
GamesEditorScreenEvent.EditRolledBall(gamesEditorState.value.rollEditor.selectedBall?.id),
)
Expand All @@ -556,6 +560,7 @@ class GamesEditorViewModel @Inject constructor(
return
}

isGameDetailsSheetVisible.value = false
val gameDetails = gameDetailsState.value
gamesEditorState.updateGamesEditor(gameDetails.gameId) {
it.copy(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,6 @@ private fun MatchPlayEditorScreen(
Scaffold(
topBar = {
MatchPlayEditorTopBar(
gameIndex = when (state) {
MatchPlayEditorScreenUiState.Loading -> 0
is MatchPlayEditorScreenUiState.Loaded -> state.matchPlayEditor.gameIndex
},
onAction = { onAction(MatchPlayEditorScreenUiAction.MatchPlayEditor(it)) },
scrollBehavior = scrollBehavior,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,24 @@ import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.NavType
import androidx.navigation.compose.composable
import androidx.navigation.navArgument
import ca.josephroque.bowlingcompanion.core.navigation.NavResultCallback
import ca.josephroque.bowlingcompanion.core.navigation.Route
import ca.josephroque.bowlingcompanion.feature.matchplayeditor.MatchPlayEditorRoute
import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi
import com.google.accompanist.navigation.material.bottomSheet
import java.util.UUID

fun NavController.navigateToMatchPlayEditor(gameId: UUID, navOptions: NavOptions? = null) {
this.navigate(Route.EditMatchPlay.createRoute(gameId), navOptions)
}

@OptIn(ExperimentalMaterialNavigationApi::class)
fun NavGraphBuilder.matchPlayEditorScreen(
onBackPressed: () -> Unit,
onEditOpponent: (UUID?, NavResultCallback<Set<UUID>>) -> Unit,
) {
composable(
bottomSheet(
route = Route.EditMatchPlay.route,
arguments = listOf(
navArgument(Route.EditMatchPlay.ARG_GAME) { type = NavType.StringType },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,22 @@ import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import ca.josephroque.bowlingcompanion.core.designsystem.components.BackButton
import ca.josephroque.bowlingcompanion.core.designsystem.components.CloseButton

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MatchPlayEditorTopBar(
gameIndex: Int,
onAction: (MatchPlayEditorUiAction) -> Unit,
scrollBehavior: TopAppBarScrollBehavior,
) {
TopAppBar(
title = {
Text(
text = stringResource(R.string.match_play_editor_title, gameIndex + 1),
text = stringResource(R.string.match_play_editor_title),
)
},
navigationIcon = {
BackButton(onClick = { onAction(MatchPlayEditorUiAction.BackClicked) })
CloseButton(onClick = { onAction(MatchPlayEditorUiAction.BackClicked) })
},
actions = {
TextButton(onClick = { onAction(MatchPlayEditorUiAction.DoneClicked) }) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="match_play_editor_title" tools:ignore="PluralsCandidate">Game %1$d Match Play</string>
<resources>
<string name="match_play_editor_title">Match Play</string>

<string name="match_play_editor_opponent">Opponent</string>
<string name="match_play_editor_opponent_none">None</string>
Expand Down

0 comments on commit 5a99391

Please sign in to comment.