1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-06-19 00:05:16 +00:00

Can copy message to clipboard

This commit is contained in:
2021-03-11 17:04:18 +01:00
parent 8705aa1b0d
commit 217111e3fd
5 changed files with 43 additions and 136 deletions

View File

@ -1,3 +1,4 @@
import 'package:clipboard/clipboard.dart';
import 'package:comunic/models/conversation.dart';
import 'package:comunic/models/conversation_message.dart';
import 'package:comunic/models/user.dart';
@ -13,7 +14,12 @@ import 'package:flutter/material.dart';
///
/// @author Pierre HUBERT
enum _MenuChoices { DELETE, REQUEST_UPDATE_CONTENT }
enum _MenuChoices {
COPY_URL,
COPY_MESSAGE,
DELETE,
REQUEST_UPDATE_CONTENT
}
typedef OnRequestMessageUpdate = void Function(ConversationMessage);
typedef OnRequestMessageDelete = void Function(ConversationMessage);
@ -60,6 +66,18 @@ class ConversationMessageTile extends StatelessWidget {
width: 35.0,
),
itemBuilder: (c) => [
PopupMenuItem(
enabled: (message.message?.content ?? "") != "",
value: _MenuChoices.COPY_MESSAGE,
child: Text(tr("Copy message")),
),
PopupMenuItem(
enabled: message.file != null,
value: _MenuChoices.COPY_URL,
child: Text(tr("Copy URL")),
),
// Update message content
PopupMenuItem(
enabled: message.isOwner,
@ -249,6 +267,14 @@ class ConversationMessageTile extends StatelessWidget {
/// Process menu choice
void _menuOptionSelected(_MenuChoices value) {
switch (value) {
case _MenuChoices.COPY_MESSAGE:
FlutterClipboard.copy(message.message.content);
break;
case _MenuChoices.COPY_URL:
FlutterClipboard.copy(message.file.url);
break;
case _MenuChoices.REQUEST_UPDATE_CONTENT:
onRequestMessageUpdate(message);
break;