mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-10-31 02:04:52 +00:00 
			
		
		
		
	Can report conversation
This commit is contained in:
		| @@ -1,6 +1,7 @@ | ||||
| import 'dart:math'; | ||||
|  | ||||
| import 'package:comunic/enums/load_error_level.dart'; | ||||
| import 'package:comunic/enums/report_target_type.dart'; | ||||
| import 'package:comunic/helpers/conversations_helper.dart'; | ||||
| import 'package:comunic/helpers/events_helper.dart'; | ||||
| import 'package:comunic/helpers/groups_helper.dart'; | ||||
| @@ -9,6 +10,8 @@ import 'package:comunic/lists/conversations_list.dart'; | ||||
| import 'package:comunic/lists/groups_list.dart'; | ||||
| import 'package:comunic/lists/users_list.dart'; | ||||
| import 'package:comunic/models/conversation.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/screens/create_conversation_screen.dart'; | ||||
| import 'package:comunic/ui/tiles/conversation_tile.dart'; | ||||
| @@ -160,6 +163,11 @@ class _ConversationScreenState extends SafeState<ConversationsListScreen> { | ||||
|     _loadConversationsList(false); | ||||
|   } | ||||
|  | ||||
|   /// Handle conversation report request | ||||
|   void _reportConversation(Conversation conversation) => showReportDialog( | ||||
|       ctx: context, | ||||
|       target: ReportTarget(ReportTargetType.Conversation, conversation.id!)); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     if (_error == LoadErrorLevel.MAJOR) return _buildErrorCard(); | ||||
| @@ -201,6 +209,7 @@ class _ConversationScreenState extends SafeState<ConversationsListScreen> { | ||||
|                       }, | ||||
|                       onRequestUpdate: _updateConversation, | ||||
|                       onRequestLeave: _requestLeaveConversation, | ||||
|                       onReport: _reportConversation, | ||||
|                     ); | ||||
|                   }, | ||||
|                   itemCount: max(_list!.length, 1), | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| import 'package:comunic/helpers/conversations_helper.dart'; | ||||
| import 'package:comunic/helpers/server_config_helper.dart'; | ||||
| import 'package:comunic/lists/groups_list.dart'; | ||||
| import 'package:comunic/lists/users_list.dart'; | ||||
| import 'package:comunic/models/config.dart'; | ||||
| @@ -18,7 +19,7 @@ typedef OpenConversationCallback = void Function(Conversation); | ||||
| typedef RequestLeaveConversationCallback = void Function(Conversation); | ||||
| typedef RequestUpdateConversationCallback = void Function(Conversation); | ||||
|  | ||||
| enum _PopupMenuChoices { UPDATE, LEAVE } | ||||
| enum _PopupMenuChoices { UPDATE, LEAVE, REPORT } | ||||
|  | ||||
| class ConversationTile extends StatelessWidget { | ||||
|   final Conversation conversation; | ||||
| @@ -27,6 +28,7 @@ class ConversationTile extends StatelessWidget { | ||||
|   final OpenConversationCallback onOpen; | ||||
|   final RequestUpdateConversationCallback onRequestUpdate; | ||||
|   final RequestLeaveConversationCallback onRequestLeave; | ||||
|   final Function(Conversation) onReport; | ||||
|  | ||||
|   const ConversationTile({ | ||||
|     Key? key, | ||||
| @@ -36,7 +38,8 @@ class ConversationTile extends StatelessWidget { | ||||
|     required this.onOpen, | ||||
|     required this.onRequestUpdate, | ||||
|     required this.onRequestLeave, | ||||
|   })  : super(key: key); | ||||
|     required this.onReport, | ||||
|   }) : super(key: key); | ||||
|  | ||||
|   _buildSubInformation(IconData icon, String content) { | ||||
|     return Row( | ||||
| @@ -116,18 +119,26 @@ class ConversationTile extends StatelessWidget { | ||||
|  | ||||
|         onLongPressOpenMenu: (position) { | ||||
|           showMenu<_PopupMenuChoices>( | ||||
|               context: context, | ||||
|               position: position, | ||||
|               items: [ | ||||
|                 PopupMenuItem( | ||||
|                   child: Text(tr("Update")!), | ||||
|                   value: _PopupMenuChoices.UPDATE, | ||||
|                 ), | ||||
|                 PopupMenuItem( | ||||
|                   child: Text(tr("Leave")!), | ||||
|                   value: _PopupMenuChoices.LEAVE, | ||||
|                 ) | ||||
|               ]).then(_conversationMenuCallback); | ||||
|                   context: context, | ||||
|                   position: position, | ||||
|                   items: [ | ||||
|                     PopupMenuItem( | ||||
|                       child: Text(tr("Update")!), | ||||
|                       value: _PopupMenuChoices.UPDATE, | ||||
|                     ), | ||||
|                     PopupMenuItem( | ||||
|                       child: Text(tr("Leave")!), | ||||
|                       value: _PopupMenuChoices.LEAVE, | ||||
|                     ) | ||||
|                   ]..addAll(srvConfig!.isReportingEnabled | ||||
|                       ? [ | ||||
|                           PopupMenuItem( | ||||
|                             child: Text(tr("Report")!), | ||||
|                             value: _PopupMenuChoices.REPORT, | ||||
|                           ) | ||||
|                         ] | ||||
|                       : [])) | ||||
|               .then(_conversationMenuCallback); | ||||
|         }, | ||||
|       ); | ||||
|  | ||||
| @@ -158,7 +169,11 @@ class ConversationTile extends StatelessWidget { | ||||
|         onRequestLeave(conversation); | ||||
|         break; | ||||
|  | ||||
|       default: | ||||
|       case _PopupMenuChoices.REPORT: | ||||
|         onReport(conversation); | ||||
|         break; | ||||
|  | ||||
|       case null: | ||||
|         break; | ||||
|     } | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user