From 2214ea8e7d6b6da1d3011ae8922422dc477a62d0 Mon Sep 17 00:00:00 2001 From: Mathis Kirchner Date: Sun, 8 Mar 2026 15:10:31 +0100 Subject: [PATCH] Refactor group creation and editing logic into separate methods --- .../group_view/create_group_view.dart | 82 +++++++++++-------- 1 file changed, 50 insertions(+), 32 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 18c159b..97a49e4 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 @@ -160,42 +160,15 @@ class _CreateGroupViewState extends State { /// 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(); + Group? updatedGroup; if (widget.groupToEdit == null) { - success = await db.groupDao.addGroup( - group: Group( - name: groupName, - description: '', - members: selectedPlayers, - ), - ); + success = await _createGroup(); } 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; + final result = await _editGroup(); + success = result.$1; + updatedGroup = result.$2; } if (!mounted) return; @@ -211,6 +184,51 @@ class _CreateGroupViewState extends State { } } + /// Handles creating a new group and returns whether the operation was successful. + Future _createGroup() async { + final groupName = _groupNameController.text.trim(); + + final success = await db.groupDao.addGroup( + group: Group(name: groupName, description: '', members: selectedPlayers), + ); + + return success; + } + + /// Handles editing an existing group and returns a tuple of + /// (success, updatedGroup). + Future<(bool, Group?)> _editGroup() async { + final groupName = _groupNameController.text.trim(); + + Group? updatedGroup = Group( + id: widget.groupToEdit!.id, + name: groupName, + description: '', + members: selectedPlayers, + ); + + bool successfullNameChange = true; + bool successfullMemberChange = true; + + 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, + ); + } + + final success = successfullNameChange && successfullMemberChange; + + return (success, updatedGroup); + } + /// Displays a snackbar with the given message and optional action. /// /// [message] The message to display in the snackbar.