mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-03 19:54:12 +00:00 
			
		
		
		
	Can report conversation message
This commit is contained in:
		@@ -1,5 +1,6 @@
 | 
				
			|||||||
import 'dart:async';
 | 
					import 'dart:async';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:comunic/enums/report_target_type.dart';
 | 
				
			||||||
import 'package:comunic/helpers/conversations_helper.dart';
 | 
					import 'package:comunic/helpers/conversations_helper.dart';
 | 
				
			||||||
import 'package:comunic/helpers/events_helper.dart';
 | 
					import 'package:comunic/helpers/events_helper.dart';
 | 
				
			||||||
import 'package:comunic/helpers/server_config_helper.dart';
 | 
					import 'package:comunic/helpers/server_config_helper.dart';
 | 
				
			||||||
@@ -11,7 +12,9 @@ import 'package:comunic/models/config.dart';
 | 
				
			|||||||
import 'package:comunic/models/conversation.dart';
 | 
					import 'package:comunic/models/conversation.dart';
 | 
				
			||||||
import 'package:comunic/models/conversation_message.dart';
 | 
					import 'package:comunic/models/conversation_message.dart';
 | 
				
			||||||
import 'package:comunic/models/new_conversation_message.dart';
 | 
					import 'package:comunic/models/new_conversation_message.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/models/report_target.dart';
 | 
				
			||||||
import 'package:comunic/ui/dialogs/pick_file_dialog.dart';
 | 
					import 'package:comunic/ui/dialogs/pick_file_dialog.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/tiles/conversation_message_tile.dart';
 | 
					import 'package:comunic/ui/tiles/conversation_message_tile.dart';
 | 
				
			||||||
import 'package:comunic/ui/tiles/server_conversation_message_tile.dart';
 | 
					import 'package:comunic/ui/tiles/server_conversation_message_tile.dart';
 | 
				
			||||||
@@ -504,6 +507,7 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
 | 
				
			|||||||
        onRequestMessageStats: _requestMessageStats,
 | 
					        onRequestMessageStats: _requestMessageStats,
 | 
				
			||||||
        onRequestMessageUpdate: _updateMessage,
 | 
					        onRequestMessageUpdate: _updateMessage,
 | 
				
			||||||
        onRequestMessageDelete: _deleteMessage,
 | 
					        onRequestMessageDelete: _deleteMessage,
 | 
				
			||||||
 | 
					        onReportMessage: _reportMessage,
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Widget _buildDateWidget(DateTime dt) => Center(
 | 
					  Widget _buildDateWidget(DateTime dt) => Center(
 | 
				
			||||||
@@ -753,4 +757,9 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
 | 
				
			|||||||
    if (!await _conversationsHelper.deleteMessage(message.id))
 | 
					    if (!await _conversationsHelper.deleteMessage(message.id))
 | 
				
			||||||
      showSimpleSnack(context, tr("Could not delete conversation message!")!);
 | 
					      showSimpleSnack(context, tr("Could not delete conversation message!")!);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// Report message
 | 
				
			||||||
 | 
					  void _reportMessage(ConversationMessage msg) => showReportDialog(
 | 
				
			||||||
 | 
					      ctx: context,
 | 
				
			||||||
 | 
					      target: ReportTarget(ReportTargetType.ConversationMessage, msg.id!));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -115,7 +115,7 @@ class CommentTile extends StatelessWidget {
 | 
				
			|||||||
            ]..addAll(srvConfig!.isReportingEnabled && !comment.isOwner
 | 
					            ]..addAll(srvConfig!.isReportingEnabled && !comment.isOwner
 | 
				
			||||||
                ? [
 | 
					                ? [
 | 
				
			||||||
                    PopupMenuItem(
 | 
					                    PopupMenuItem(
 | 
				
			||||||
                      child: Text(tr("Report Abuse")!),
 | 
					                      child: Text(tr("Report abuse")!),
 | 
				
			||||||
                      value: _CommentAction.REPORT,
 | 
					                      value: _CommentAction.REPORT,
 | 
				
			||||||
                    )
 | 
					                    )
 | 
				
			||||||
                  ]
 | 
					                  ]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import 'package:comunic/helpers/server_config_helper.dart';
 | 
				
			||||||
import 'package:comunic/models/conversation_message.dart';
 | 
					import 'package:comunic/models/conversation_message.dart';
 | 
				
			||||||
import 'package:comunic/models/user.dart';
 | 
					import 'package:comunic/models/user.dart';
 | 
				
			||||||
import 'package:comunic/ui/widgets/conversation_file_tile.dart';
 | 
					import 'package:comunic/ui/widgets/conversation_file_tile.dart';
 | 
				
			||||||
@@ -17,6 +18,7 @@ enum _MenuChoices {
 | 
				
			|||||||
  DELETE,
 | 
					  DELETE,
 | 
				
			||||||
  REQUEST_UPDATE_CONTENT,
 | 
					  REQUEST_UPDATE_CONTENT,
 | 
				
			||||||
  GET_STATS,
 | 
					  GET_STATS,
 | 
				
			||||||
 | 
					  REPORT
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef OnRequestMessageStats = void Function(ConversationMessage);
 | 
					typedef OnRequestMessageStats = void Function(ConversationMessage);
 | 
				
			||||||
@@ -29,6 +31,7 @@ class ConversationMessageTile extends StatelessWidget {
 | 
				
			|||||||
  final OnRequestMessageStats onRequestMessageStats;
 | 
					  final OnRequestMessageStats onRequestMessageStats;
 | 
				
			||||||
  final OnRequestMessageUpdate onRequestMessageUpdate;
 | 
					  final OnRequestMessageUpdate onRequestMessageUpdate;
 | 
				
			||||||
  final OnRequestMessageDelete onRequestMessageDelete;
 | 
					  final OnRequestMessageDelete onRequestMessageDelete;
 | 
				
			||||||
 | 
					  final Function(ConversationMessage) onReportMessage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const ConversationMessageTile({
 | 
					  const ConversationMessageTile({
 | 
				
			||||||
    Key? key,
 | 
					    Key? key,
 | 
				
			||||||
@@ -37,6 +40,7 @@ class ConversationMessageTile extends StatelessWidget {
 | 
				
			|||||||
    required this.onRequestMessageStats,
 | 
					    required this.onRequestMessageStats,
 | 
				
			||||||
    required this.onRequestMessageUpdate,
 | 
					    required this.onRequestMessageUpdate,
 | 
				
			||||||
    required this.onRequestMessageDelete,
 | 
					    required this.onRequestMessageDelete,
 | 
				
			||||||
 | 
					    required this.onReportMessage,
 | 
				
			||||||
  }) : super(key: key);
 | 
					  }) : super(key: key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
@@ -90,6 +94,14 @@ class ConversationMessageTile extends StatelessWidget {
 | 
				
			|||||||
                          value: _MenuChoices.DELETE,
 | 
					                          value: _MenuChoices.DELETE,
 | 
				
			||||||
                          child: Text(tr("Delete")!),
 | 
					                          child: Text(tr("Delete")!),
 | 
				
			||||||
                        ),
 | 
					                        ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        // Report the message
 | 
				
			||||||
 | 
					                        PopupMenuItem(
 | 
				
			||||||
 | 
					                          enabled:
 | 
				
			||||||
 | 
					                              srvConfig!.isReportingEnabled && !message.isOwner,
 | 
				
			||||||
 | 
					                          value: _MenuChoices.REPORT,
 | 
				
			||||||
 | 
					                          child: Text(tr("Report abuse")!),
 | 
				
			||||||
 | 
					                        ),
 | 
				
			||||||
                      ]..removeWhere((element) => !element.enabled),
 | 
					                      ]..removeWhere((element) => !element.enabled),
 | 
				
			||||||
                    ),
 | 
					                    ),
 | 
				
			||||||
                  )
 | 
					                  )
 | 
				
			||||||
@@ -133,6 +145,10 @@ class ConversationMessageTile extends StatelessWidget {
 | 
				
			|||||||
      case _MenuChoices.DELETE:
 | 
					      case _MenuChoices.DELETE:
 | 
				
			||||||
        onRequestMessageDelete(message);
 | 
					        onRequestMessageDelete(message);
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      case _MenuChoices.REPORT:
 | 
				
			||||||
 | 
					        onReportMessage(message);
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -133,7 +133,7 @@ class ConversationTile extends StatelessWidget {
 | 
				
			|||||||
                  ]..addAll(srvConfig!.isReportingEnabled
 | 
					                  ]..addAll(srvConfig!.isReportingEnabled
 | 
				
			||||||
                      ? [
 | 
					                      ? [
 | 
				
			||||||
                          PopupMenuItem(
 | 
					                          PopupMenuItem(
 | 
				
			||||||
                            child: Text(tr("Report")!),
 | 
					                            child: Text(tr("Report abuse")!),
 | 
				
			||||||
                            value: _PopupMenuChoices.REPORT,
 | 
					                            value: _PopupMenuChoices.REPORT,
 | 
				
			||||||
                          )
 | 
					                          )
 | 
				
			||||||
                        ]
 | 
					                        ]
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user