mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 04:04:18 +00:00 
			
		
		
		
	Can report group
This commit is contained in:
		@@ -1,4 +1,8 @@
 | 
				
			|||||||
 | 
					import 'package:comunic/enums/report_target_type.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/report_target.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/ui/dialogs/report_dialog.dart';
 | 
				
			||||||
import 'package:comunic/ui/routes/main_route/main_route.dart';
 | 
					import 'package:comunic/ui/routes/main_route/main_route.dart';
 | 
				
			||||||
import 'package:comunic/ui/screens/group_sections/about_group_section.dart';
 | 
					import 'package:comunic/ui/screens/group_sections/about_group_section.dart';
 | 
				
			||||||
import 'package:comunic/ui/screens/group_sections/forez_presence_section.dart';
 | 
					import 'package:comunic/ui/screens/group_sections/forez_presence_section.dart';
 | 
				
			||||||
@@ -65,7 +69,10 @@ class _AuthorizedGroupPageScreenState
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // About the group
 | 
					        // About the group
 | 
				
			||||||
        _GroupPageTab(
 | 
					        _GroupPageTab(
 | 
				
			||||||
          widget: (c) => AboutGroupSection(group: _group),
 | 
					          widget: (c) => AboutGroupSection(
 | 
				
			||||||
 | 
					            group: _group,
 | 
				
			||||||
 | 
					            onReportGroup: _reportGroup,
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
          label: tr("About")!,
 | 
					          label: tr("About")!,
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -197,6 +204,10 @@ class _AuthorizedGroupPageScreenState
 | 
				
			|||||||
      ),
 | 
					      ),
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// Report group
 | 
				
			||||||
 | 
					  void _reportGroup(Group g) => showReportDialog(
 | 
				
			||||||
 | 
					      ctx: context, target: ReportTarget(ReportTargetType.Group, g.id));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _GroupPageTab {
 | 
					class _GroupPageTab {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import 'package:comunic/helpers/server_config_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/utils/date_utils.dart';
 | 
					import 'package:comunic/utils/date_utils.dart';
 | 
				
			||||||
@@ -11,10 +12,12 @@ import 'package:url_launcher/url_launcher.dart';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class AboutGroupSection extends StatelessWidget {
 | 
					class AboutGroupSection extends StatelessWidget {
 | 
				
			||||||
  final AdvancedGroupInfo group;
 | 
					  final AdvancedGroupInfo group;
 | 
				
			||||||
 | 
					  final Function(Group) onReportGroup;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const AboutGroupSection({
 | 
					  const AboutGroupSection({
 | 
				
			||||||
    Key? key,
 | 
					    Key? key,
 | 
				
			||||||
    required this.group,
 | 
					    required this.group,
 | 
				
			||||||
 | 
					    required this.onReportGroup,
 | 
				
			||||||
  }) : super(key: key);
 | 
					  }) : super(key: key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
@@ -103,6 +106,15 @@ class AboutGroupSection extends StatelessWidget {
 | 
				
			|||||||
                  subtitle: Text(tr("Forez special features enabled")!),
 | 
					                  subtitle: Text(tr("Forez special features enabled")!),
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
              : Container(),
 | 
					              : Container(),
 | 
				
			||||||
 | 
					          // Report group
 | 
				
			||||||
 | 
					          srvConfig!.isReportingEnabled
 | 
				
			||||||
 | 
					              ? ListTile(
 | 
				
			||||||
 | 
					                  textColor: Colors.red,
 | 
				
			||||||
 | 
					                  leading: Icon(Icons.flag, color: Colors.red),
 | 
				
			||||||
 | 
					                  title: Text(tr("Report abuse")!),
 | 
				
			||||||
 | 
					                  onTap: () => onReportGroup(group),
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					              : Container(),
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,10 @@
 | 
				
			|||||||
 | 
					import 'package:comunic/enums/report_target_type.dart';
 | 
				
			||||||
import 'package:comunic/helpers/groups_helper.dart';
 | 
					import 'package:comunic/helpers/groups_helper.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/helpers/server_config_helper.dart';
 | 
				
			||||||
import 'package:comunic/lists/groups_list.dart';
 | 
					import 'package:comunic/lists/groups_list.dart';
 | 
				
			||||||
import 'package:comunic/models/group.dart';
 | 
					import 'package:comunic/models/group.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/models/report_target.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/ui/dialogs/report_dialog.dart';
 | 
				
			||||||
import 'package:comunic/ui/routes/main_route/main_route.dart';
 | 
					import 'package:comunic/ui/routes/main_route/main_route.dart';
 | 
				
			||||||
import 'package:comunic/ui/widgets/group_icon_widget.dart';
 | 
					import 'package:comunic/ui/widgets/group_icon_widget.dart';
 | 
				
			||||||
import 'package:comunic/ui/widgets/group_membership_widget.dart';
 | 
					import 'package:comunic/ui/widgets/group_membership_widget.dart';
 | 
				
			||||||
@@ -70,9 +74,28 @@ class _GroupsListScreenState extends SafeState<GroupsListScreen> {
 | 
				
			|||||||
                    group: g,
 | 
					                    group: g,
 | 
				
			||||||
                    onUpdated: () => _refreshIndicatorKey.currentState!.show(),
 | 
					                    onUpdated: () => _refreshIndicatorKey.currentState!.show(),
 | 
				
			||||||
                  ),
 | 
					                  ),
 | 
				
			||||||
                  trailing: IconButton(
 | 
					                  trailing: IntrinsicWidth(
 | 
				
			||||||
                      icon: Icon(Icons.delete),
 | 
					                    child: Row(
 | 
				
			||||||
                      onPressed: () => _deleteGroup(g)),
 | 
					                      children: [
 | 
				
			||||||
 | 
					                        // Remove membership
 | 
				
			||||||
 | 
					                        IconButton(
 | 
				
			||||||
 | 
					                            icon: Icon(Icons.delete),
 | 
				
			||||||
 | 
					                            onPressed: () => _deleteGroup(g)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        // Report button
 | 
				
			||||||
 | 
					                        srvConfig!.isReportingEnabled
 | 
				
			||||||
 | 
					                            ? IconButton(
 | 
				
			||||||
 | 
					                                visualDensity: VisualDensity.compact,
 | 
				
			||||||
 | 
					                                onPressed: () => _reportGroup(g),
 | 
				
			||||||
 | 
					                                icon: Icon(
 | 
				
			||||||
 | 
					                                  Icons.flag,
 | 
				
			||||||
 | 
					                                  size: 15.0,
 | 
				
			||||||
 | 
					                                ),
 | 
				
			||||||
 | 
					                              )
 | 
				
			||||||
 | 
					                            : Container()
 | 
				
			||||||
 | 
					                      ],
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
                  onTap: () => MainController.of(context)!.openGroup(g.id),
 | 
					                  onTap: () => MainController.of(context)!.openGroup(g.id),
 | 
				
			||||||
                ))
 | 
					                ))
 | 
				
			||||||
            .toList(),
 | 
					            .toList(),
 | 
				
			||||||
@@ -122,6 +145,10 @@ class _GroupsListScreenState extends SafeState<GroupsListScreen> {
 | 
				
			|||||||
    _refreshIndicatorKey.currentState!.show();
 | 
					    _refreshIndicatorKey.currentState!.show();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// Report a group
 | 
				
			||||||
 | 
					  void _reportGroup(Group g) => showReportDialog(
 | 
				
			||||||
 | 
					      ctx: context, target: ReportTarget(ReportTargetType.Group, g.id));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Add a group
 | 
					  /// Add a group
 | 
				
			||||||
  void _createGroup() async {
 | 
					  void _createGroup() async {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user