Refactor group saving logic into a separate method

This commit is contained in:
2026-03-08 11:27:18 +01:00
parent feb2b756bd
commit b83719f16d

View File

@@ -146,15 +146,31 @@ class _CreateGroupViewState extends State<CreateGroupView> {
(_groupNameController.text.isEmpty ||
(selectedPlayers.length < 2))
? null
: () async {
: _saveGroup,
),
const SizedBox(height: 20),
],
),
),
),
);
}
/// Saves the group by creating a new one or updating the existing one,
/// depending on whether the widget is in edit mode.
Future<void> _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: _groupNameController.text.trim(),
name: groupName,
description: '',
members: selectedPlayers,
),
@@ -162,30 +178,28 @@ class _CreateGroupViewState extends State<CreateGroupView> {
} else {
updatedGroup = Group(
id: widget.groupToEdit!.id,
name: _groupNameController.text.trim(),
name: groupName,
description: '',
members: selectedPlayers,
);
if (widget.groupToEdit!.name !=
_groupNameController.text.trim()) {
successfullNameChange = await db.groupDao
.updateGroupName(
if (widget.groupToEdit!.name != groupName) {
successfullNameChange = await db.groupDao.updateGroupName(
groupId: widget.groupToEdit!.id,
newName: _groupNameController.text.trim(),
newName: groupName,
);
}
if (widget.groupToEdit!.members != selectedPlayers) {
successfullMemberChange = await db.groupDao
.replaceGroupPlayers(
successfullMemberChange = await db.groupDao.replaceGroupPlayers(
groupId: widget.groupToEdit!.id,
newPlayers: selectedPlayers,
);
}
success =
successfullNameChange && successfullMemberChange;
success = successfullNameChange && successfullMemberChange;
}
if (!context.mounted) return;
if (!mounted) return;
if (success) {
Navigator.pop(context, updatedGroup);
} else {
@@ -195,14 +209,6 @@ class _CreateGroupViewState extends State<CreateGroupView> {
: loc.error_editing_group,
);
}
},
),
const SizedBox(height: 20),
],
),
),
),
);
}
/// Displays a snackbar with the given message and optional action.