🐛 Fix message deletion
This commit is contained in:
		@@ -613,6 +613,16 @@ class MessagesNotifier extends _$MessagesNotifier {
 | 
			
		||||
        _sortMessages([localMessage, ...currentMessages]),
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    switch (remoteMessage.type) {
 | 
			
		||||
      case "messages.delete":
 | 
			
		||||
        await receiveMessageDeletion(
 | 
			
		||||
          remoteMessage.meta['message_id'] ?? remoteMessage.id,
 | 
			
		||||
        );
 | 
			
		||||
      case "messages.update":
 | 
			
		||||
      case "messages.update.links":
 | 
			
		||||
        await receiveMessageUpdate(remoteMessage);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Future<void> receiveMessageUpdate(SnChatMessage remoteMessage) async {
 | 
			
		||||
@@ -622,8 +632,12 @@ class MessagesNotifier extends _$MessagesNotifier {
 | 
			
		||||
      name: 'MessagesNotifier',
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    final targetId = remoteMessage.meta['message_id'] ?? remoteMessage.id;
 | 
			
		||||
    final updatedMessage = LocalChatMessage.fromRemoteMessage(
 | 
			
		||||
      remoteMessage,
 | 
			
		||||
      remoteMessage.copyWith(
 | 
			
		||||
        id: targetId,
 | 
			
		||||
        meta: Map.of(remoteMessage.meta)..remove('message_id'),
 | 
			
		||||
      ),
 | 
			
		||||
      MessageStatus.sent,
 | 
			
		||||
    );
 | 
			
		||||
    await _database.updateMessage(_database.messageToCompanion(updatedMessage));
 | 
			
		||||
 
 | 
			
		||||
@@ -280,6 +280,8 @@ class ChatRoomScreen extends HookConsumerWidget {
 | 
			
		||||
        if (message.chatRoomId != chatRoom.value?.id) return;
 | 
			
		||||
        switch (pkt.type) {
 | 
			
		||||
          case 'messages.new':
 | 
			
		||||
          case 'messages.update':
 | 
			
		||||
          case 'messages.delete':
 | 
			
		||||
            if (message.type.startsWith('call')) {
 | 
			
		||||
              // Handle the ongoing call.
 | 
			
		||||
              ref.invalidate(ongoingCallProvider(message.chatRoomId));
 | 
			
		||||
@@ -287,14 +289,6 @@ class ChatRoomScreen extends HookConsumerWidget {
 | 
			
		||||
            messagesNotifier.receiveMessage(message);
 | 
			
		||||
            // Send read receipt for new message
 | 
			
		||||
            sendReadReceipt();
 | 
			
		||||
          case 'messages.update':
 | 
			
		||||
            messagesNotifier.receiveMessageUpdate(message).then((_) {
 | 
			
		||||
              messagesNotifier.receiveMessage(message);
 | 
			
		||||
            });
 | 
			
		||||
          case 'messages.delete':
 | 
			
		||||
            messagesNotifier.receiveMessageDeletion(message.id).then((_) {
 | 
			
		||||
              messagesNotifier.receiveMessage(message);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
import 'package:easy_localization/easy_localization.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter/services.dart';
 | 
			
		||||
import 'package:go_router/go_router.dart';
 | 
			
		||||
import 'package:gap/gap.dart';
 | 
			
		||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
			
		||||
@@ -80,9 +81,8 @@ class PostItemCreator extends HookConsumerWidget {
 | 
			
		||||
              title: 'copyLink'.tr(),
 | 
			
		||||
              image: MenuImage.icon(Symbols.link),
 | 
			
		||||
              callback: () {
 | 
			
		||||
                context.pushNamed(
 | 
			
		||||
                  'postDetail',
 | 
			
		||||
                  pathParameters: {'id': item.id},
 | 
			
		||||
                Clipboard.setData(
 | 
			
		||||
                  ClipboardData(text: 'https://solian.app/posts/${item.id}'),
 | 
			
		||||
                );
 | 
			
		||||
              },
 | 
			
		||||
            ),
 | 
			
		||||
@@ -95,7 +95,7 @@ class PostItemCreator extends HookConsumerWidget {
 | 
			
		||||
          borderRadius: BorderRadius.circular(12),
 | 
			
		||||
          onTap: () {
 | 
			
		||||
            if (isOpenable) {
 | 
			
		||||
              context.goNamed('postDetail', pathParameters: {'id': item.id});
 | 
			
		||||
              context.pushNamed('postDetail', pathParameters: {'id': item.id});
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          child: Column(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user