diff --git a/lib/content_views/messages_page.dart b/lib/content_views/messages_page.dart index 4a227ab..b1c1755 100644 --- a/lib/content_views/messages_page.dart +++ b/lib/content_views/messages_page.dart @@ -84,6 +84,9 @@ class _MessagesPageState extends State { showUserAvatars: false, showUserNames: false, user: _user, + onMessageTap: (context, message) => { + _showDeleteMessageDialog(context, message) + }, ), ], ); @@ -129,8 +132,10 @@ class _MessagesPageState extends State { _messages.insert(0, types.TextMessage( author: message.from == _sid ? _user : _central, - createdAt: DateTime.parse(message.time).millisecondsSinceEpoch, - id: const Uuid().v4().toString(), + createdAt: DateTime + .parse(message.time) + .millisecondsSinceEpoch, + id: message.id.toString(), text: text, )); @@ -142,4 +147,56 @@ class _MessagesPageState extends State { setState(() {}); } + + _showDeleteMessageDialog(BuildContext context, types.Message message) async { + await showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + contentPadding: EdgeInsets.zero, + shadowColor: Colors.transparent, + backgroundColor: Colors.white, + content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) { + return SizedBox( + key: GlobalKey(), + height: 120, + width: MediaQuery + .of(context) + .size + .width * 1.2, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + height: 100, + padding: const EdgeInsets.all(5), + child: Column( + children: [ + const Text('Soll die Nachricht gelöscht werden?'), + const SizedBox(height: 20), + Row(children: [ + Expanded( + child: getDefaultButton('Nein', () => {Navigator.of(context).pop()}), + ), + const SizedBox(width: 20), + Expanded( + child: getDefaultButton('Ja', () => { + MyApp.isarInstance.writeTxnSync(() => {MyApp.isarInstance.messages.deleteSync(int.parse(message.id))}), + + _fetchMessages(), + + setState(() {}), + + Navigator.of(context).pop() + }), + ) + ]) + ], + ), + ), + ) + ); + }) + ); + }); + } }