From b83719f16d1f1f866fbd2b3beb90d89fd0a8c859 Mon Sep 17 00:00:00 2001 From: Mathis Kirchner Date: Sun, 8 Mar 2026 11:27:18 +0100 Subject: [PATCH] Refactor group saving logic into a separate method --- .../group_view/create_group_view.dart | 106 +++++++++--------- 1 file changed, 56 insertions(+), 50 deletions(-) diff --git a/lib/presentation/views/main_menu/group_view/create_group_view.dart b/lib/presentation/views/main_menu/group_view/create_group_view.dart index acb3c0b..18c159b 100644 --- a/lib/presentation/views/main_menu/group_view/create_group_view.dart +++ b/lib/presentation/views/main_menu/group_view/create_group_view.dart @@ -146,56 +146,7 @@ class _CreateGroupViewState extends State { (_groupNameController.text.isEmpty || (selectedPlayers.length < 2)) ? null - : () async { - Group? updatedGroup; - bool successfullNameChange = true; - bool successfullMemberChange = true; - late bool success; - if (widget.groupToEdit == null) { - success = await db.groupDao.addGroup( - group: Group( - name: _groupNameController.text.trim(), - description: '', - members: selectedPlayers, - ), - ); - } else { - updatedGroup = Group( - id: widget.groupToEdit!.id, - name: _groupNameController.text.trim(), - description: '', - members: selectedPlayers, - ); - if (widget.groupToEdit!.name != - _groupNameController.text.trim()) { - successfullNameChange = await db.groupDao - .updateGroupName( - groupId: widget.groupToEdit!.id, - newName: _groupNameController.text.trim(), - ); - } - - if (widget.groupToEdit!.members != selectedPlayers) { - successfullMemberChange = await db.groupDao - .replaceGroupPlayers( - groupId: widget.groupToEdit!.id, - newPlayers: selectedPlayers, - ); - } - success = - successfullNameChange && successfullMemberChange; - } - if (!context.mounted) return; - if (success) { - Navigator.pop(context, updatedGroup); - } else { - showSnackbar( - message: widget.groupToEdit == null - ? loc.error_creating_group - : loc.error_editing_group, - ); - } - }, + : _saveGroup, ), const SizedBox(height: 20), ], @@ -205,6 +156,61 @@ class _CreateGroupViewState extends State { ); } + /// Saves the group by creating a new one or updating the existing one, + /// depending on whether the widget is in edit mode. + Future _saveGroup() async { + final loc = AppLocalizations.of(context); + Group? updatedGroup; + bool successfullNameChange = true; + bool successfullMemberChange = true; + late bool success; + + final groupName = _groupNameController.text.trim(); + + if (widget.groupToEdit == null) { + success = await db.groupDao.addGroup( + group: Group( + name: groupName, + description: '', + members: selectedPlayers, + ), + ); + } else { + updatedGroup = Group( + id: widget.groupToEdit!.id, + name: groupName, + description: '', + members: selectedPlayers, + ); + if (widget.groupToEdit!.name != groupName) { + successfullNameChange = await db.groupDao.updateGroupName( + groupId: widget.groupToEdit!.id, + newName: groupName, + ); + } + + if (widget.groupToEdit!.members != selectedPlayers) { + successfullMemberChange = await db.groupDao.replaceGroupPlayers( + groupId: widget.groupToEdit!.id, + newPlayers: selectedPlayers, + ); + } + success = successfullNameChange && successfullMemberChange; + } + + if (!mounted) return; + + if (success) { + Navigator.pop(context, updatedGroup); + } else { + showSnackbar( + message: widget.groupToEdit == null + ? loc.error_creating_group + : loc.error_editing_group, + ); + } + } + /// Displays a snackbar with the given message and optional action. /// /// [message] The message to display in the snackbar.