1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-06-21 17:25:16 +00:00

Can delete conversation messages

This commit is contained in:
2019-05-04 08:58:14 +02:00
parent 533d2a86a3
commit 1f0d70848f
4 changed files with 110 additions and 15 deletions

View File

@ -3,8 +3,8 @@ import 'package:comunic/models/conversation_message.dart';
import 'package:comunic/models/user.dart';
import 'package:comunic/ui/widgets/account_image_widget.dart';
import 'package:comunic/ui/widgets/text_rich_content_widget.dart';
import 'package:comunic/utils/account_utils.dart';
import 'package:comunic/utils/date_utils.dart';
import 'package:comunic/utils/intl_utils.dart';
import 'package:comunic/utils/ui_utils.dart';
import 'package:flutter/material.dart';
@ -12,31 +12,48 @@ import 'package:flutter/material.dart';
///
/// @author Pierre HUBERT
enum _MenuChoices { DELETE }
typedef OnRequestMessageDelete = void Function(ConversationMessage);
class ConversationMessageTile extends StatelessWidget {
final ConversationMessage message;
final User userInfo;
final bool isLastMessage;
final bool isFirstMessage;
final OnRequestMessageDelete onRequestMessageDelete;
const ConversationMessageTile(
{Key key,
@required this.message,
@required this.userInfo,
@required this.isLastMessage,
@required this.isFirstMessage})
: assert(message != null),
const ConversationMessageTile({
Key key,
@required this.message,
@required this.userInfo,
@required this.isLastMessage,
@required this.isFirstMessage,
@required this.onRequestMessageDelete,
}) : assert(message != null),
assert(userInfo != null),
assert(isLastMessage != null),
assert(isFirstMessage != null),
assert(onRequestMessageDelete != null),
super(key: key);
/// Build account image
Widget _buildAccountImage() {
Widget _buildAccountImage(BuildContext context) {
return Container(
margin: EdgeInsets.all(10.0),
child: AccountImageWidget(
user: userInfo,
width: 35.0,
child: PopupMenuButton<_MenuChoices>(
child: AccountImageWidget(
user: userInfo,
width: 35.0,
),
itemBuilder: (c) => [
PopupMenuItem(
enabled: message.isOwner,
value: _MenuChoices.DELETE,
child: Text(tr("Delete")),
),
],
onSelected: _menuOptionSelected,
),
);
}
@ -141,7 +158,7 @@ class ConversationMessageTile extends StatelessWidget {
),
// Account image
_buildAccountImage()
_buildAccountImage(context)
],
),
@ -180,7 +197,7 @@ class ConversationMessageTile extends StatelessWidget {
Row(
children: <Widget>[
// Account image
_buildAccountImage(),
_buildAccountImage(context),
Column(
children: <Widget>[
@ -232,8 +249,19 @@ class ConversationMessageTile extends StatelessWidget {
@override
Widget build(BuildContext context) {
return userID() == message.userID
return message.isOwner
? _buildRightMessage(context)
: _buildLeftMessage(context);
}
/// Process menu choice
void _menuOptionSelected(_MenuChoices value) {
switch(value){
case _MenuChoices.DELETE:
onRequestMessageDelete(message);
break;
}
}
}