mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 04:04:18 +00:00 
			
		
		
		
	Can delete group
This commit is contained in:
		@@ -238,11 +238,22 @@ class GroupsHelper {
 | 
				
			|||||||
          .execWithFilesAndThrow();
 | 
					          .execWithFilesAndThrow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Delete group logo
 | 
					  /// Delete group logo
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// Throws in case of error
 | 
				
			||||||
  static Future<void> deleteLogo(int groupID) async =>
 | 
					  static Future<void> deleteLogo(int groupID) async =>
 | 
				
			||||||
      await APIRequest(uri: "groups/delete_logo", needLogin: true)
 | 
					      await APIRequest(uri: "groups/delete_logo", needLogin: true)
 | 
				
			||||||
          .addInt("id", groupID)
 | 
					          .addInt("id", groupID)
 | 
				
			||||||
          .execWithThrow();
 | 
					          .execWithThrow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// Delete a group
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// Throws in case of error
 | 
				
			||||||
 | 
					  static Future<void> deleteGroup(int groupID, String password) async =>
 | 
				
			||||||
 | 
					      await APIRequest(uri: "groups/delete", needLogin: true)
 | 
				
			||||||
 | 
					          .addInt("groupID", groupID)
 | 
				
			||||||
 | 
					          .addString("password", password)
 | 
				
			||||||
 | 
					          .execWithThrow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Turn an API entry into a group object
 | 
					  /// Turn an API entry into a group object
 | 
				
			||||||
  Group _getGroupFromAPI(Map<String, dynamic> map) {
 | 
					  Group _getGroupFromAPI(Map<String, dynamic> map) {
 | 
				
			||||||
    return Group(
 | 
					    return Group(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,8 +3,10 @@ import 'dart:typed_data';
 | 
				
			|||||||
import 'package:comunic/helpers/groups_helper.dart';
 | 
					import 'package:comunic/helpers/groups_helper.dart';
 | 
				
			||||||
import 'package:comunic/models/advanced_group_info.dart';
 | 
					import 'package:comunic/models/advanced_group_info.dart';
 | 
				
			||||||
import 'package:comunic/models/group.dart';
 | 
					import 'package:comunic/models/group.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/ui/dialogs/input_user_password_dialog.dart';
 | 
				
			||||||
import 'package:comunic/ui/dialogs/multi_choices_dialog.dart';
 | 
					import 'package:comunic/ui/dialogs/multi_choices_dialog.dart';
 | 
				
			||||||
import 'package:comunic/ui/dialogs/virtual_directory_dialog.dart';
 | 
					import 'package:comunic/ui/dialogs/virtual_directory_dialog.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/ui/routes/main_route.dart';
 | 
				
			||||||
import 'package:comunic/ui/widgets/async_screen_widget.dart';
 | 
					import 'package:comunic/ui/widgets/async_screen_widget.dart';
 | 
				
			||||||
import 'package:comunic/ui/widgets/comunic_back_button_widget.dart';
 | 
					import 'package:comunic/ui/widgets/comunic_back_button_widget.dart';
 | 
				
			||||||
import 'package:comunic/ui/widgets/group_icon_widget.dart';
 | 
					import 'package:comunic/ui/widgets/group_icon_widget.dart';
 | 
				
			||||||
@@ -81,7 +83,8 @@ class _GroupSettingsScreenState extends SafeState<GroupSettingsScreen> {
 | 
				
			|||||||
      sections: [
 | 
					      sections: [
 | 
				
			||||||
        _buildGeneralSection(),
 | 
					        _buildGeneralSection(),
 | 
				
			||||||
        _buildAccessRestrictions(),
 | 
					        _buildAccessRestrictions(),
 | 
				
			||||||
        _buildGroupLogoArea()
 | 
					        _buildGroupLogoArea(),
 | 
				
			||||||
 | 
					        _buildDangerZone(),
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -316,4 +319,38 @@ class _GroupSettingsScreenState extends SafeState<GroupSettingsScreen> {
 | 
				
			|||||||
      showSimpleSnack(context, tr("Could not delete group logo!"));
 | 
					      showSimpleSnack(context, tr("Could not delete group logo!"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Widget _buildDangerZone() {
 | 
				
			||||||
 | 
					    return SettingsSection(
 | 
				
			||||||
 | 
					      title: tr("Danger zone"),
 | 
				
			||||||
 | 
					      tiles: [
 | 
				
			||||||
 | 
					        SettingsTile(
 | 
				
			||||||
 | 
					          title: tr("Delete group"),
 | 
				
			||||||
 | 
					          onTap: _deleteGroup,
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// Delete the group
 | 
				
			||||||
 | 
					  void _deleteGroup() async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final password = await showUserPasswordDialog(context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (password == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (!await showConfirmDialog(
 | 
				
			||||||
 | 
					          context: context,
 | 
				
			||||||
 | 
					          message: tr(
 | 
				
			||||||
 | 
					              "Do you really want to delete this group ? All the posts related to it will be permanently deleted!")))
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      await GroupsHelper.deleteGroup(_groupSettings.id, password);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      MainController.of(context).popPage();
 | 
				
			||||||
 | 
					    } catch (e, s) {
 | 
				
			||||||
 | 
					      print("Could not delete the group! $e\n$s");
 | 
				
			||||||
 | 
					      showSimpleSnack(context, tr("Could not delete the group"));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user