Refactor winner selection and persistence logic in GameResultView
Some checks failed
Pull Request Pipeline / test (pull_request) Successful in 2m25s
Pull Request Pipeline / lint (pull_request) Failing after 2m25s

This commit is contained in:
2025-12-06 14:20:37 +01:00
parent 91a7273964
commit 1ed6290628

View File

@@ -82,10 +82,11 @@ class _GameResultViewState extends State<GameResultView> {
Expanded( Expanded(
child: RadioGroup<Player>( child: RadioGroup<Player>(
groupValue: _selectedPlayer, groupValue: _selectedPlayer,
onChanged: (Player? value) { onChanged: (Player? value) async {
setState(() { setState(() {
_selectedPlayer = value; _selectedPlayer = value;
}); });
await _handleWinnerSaving();
}, },
child: ListView.builder( child: ListView.builder(
itemCount: allPlayers.length, itemCount: allPlayers.length,
@@ -95,22 +96,15 @@ class _GameResultViewState extends State<GameResultView> {
value: allPlayers[index], value: allPlayers[index],
onContainerTap: (value) async { onContainerTap: (value) async {
setState(() { setState(() {
// Check if the already selected player is the same as the newly tapped player.
if (_selectedPlayer == value) { if (_selectedPlayer == value) {
// If yes deselected the player by setting it to null.
_selectedPlayer = null; _selectedPlayer = null;
} else { } else
_selectedPlayer = value; // If no assign the newly tapped player to the selected player.
} (_selectedPlayer = value);
}); });
if (_selectedPlayer == null) { await _handleWinnerSaving();
await db.gameDao.removeWinner(
gameId: widget.game.id,
);
} else {
await db.gameDao.setWinner(
gameId: widget.game.id,
winnerId: _selectedPlayer!.id,
);
}
}, },
); );
}, },
@@ -127,6 +121,17 @@ class _GameResultViewState extends State<GameResultView> {
); );
} }
Future<void> _handleWinnerSaving() async {
if (_selectedPlayer == null) {
await db.gameDao.removeWinner(gameId: widget.game.id);
} else {
await db.gameDao.setWinner(
gameId: widget.game.id,
winnerId: _selectedPlayer!.id,
);
}
}
List<Player> getAllPlayers(Game game) { List<Player> getAllPlayers(Game game) {
if (game.group == null && game.players != null) { if (game.group == null && game.players != null) {
return [...game.players!]; return [...game.players!];