👽 Support the latest API

This commit is contained in:
2025-05-24 01:34:20 +08:00
parent 942b62fbff
commit fc2520b8f8
16 changed files with 426 additions and 86 deletions

View File

@ -311,27 +311,14 @@ class ChatRoomScreen extends HookConsumerWidget {
final attachmentProgress = useState<Map<String, Map<int, double>>>({});
// Function to send read receipt
void sendReadReceipt(String messageId) async {
// Get message from repository to check read status
final repository = await ref.read(messageRepositoryProvider(id).future);
final message = await repository.getMessageById(messageId);
// Skip if message is already marked as read
if (message?.isRead ?? false) return;
void sendReadReceipt() async {
// Send websocket packet
final wsState = ref.read(websocketStateProvider.notifier);
wsState.sendMessage(
jsonEncode(
WebSocketPacket(
type: 'messages.read',
data: {'chat_room_id': id, 'message_id': messageId},
),
WebSocketPacket(type: 'messages.read', data: {'chat_room_id': id}),
),
);
// Mark as read in local database
await repository.markMessageAsRead(messageId);
}
// Add scroll listener for pagination
@ -357,7 +344,7 @@ class ChatRoomScreen extends HookConsumerWidget {
case 'messages.new':
messagesNotifier.receiveMessage(message);
// Send read receipt for new message
sendReadReceipt(message.id);
sendReadReceipt();
case 'messages.update':
messagesNotifier.receiveMessageUpdate(message);
case 'messages.delete':
@ -365,6 +352,7 @@ class ChatRoomScreen extends HookConsumerWidget {
}
}
sendReadReceipt();
final subscription = ws.dataStream.listen(onMessage);
return () => subscription.cancel();
}, [ws, chatRoom]);
@ -553,8 +541,6 @@ class ChatRoomScreen extends HookConsumerWidget {
nextMessage == null ||
nextMessage.senderId != message.senderId;
sendReadReceipt(message.id);
return chatIdentity.when(
skipError: true,
data: