feat: Implement message delivered event handling to update message statuses in conversations.
This commit is contained in:
@@ -4,6 +4,7 @@ import type {
|
||||
TypingIndicator,
|
||||
UserStatusChange,
|
||||
MessagesReadEvent,
|
||||
MessageDeliveredEvent,
|
||||
CreateMessageDto,
|
||||
} from '@/types/messaging';
|
||||
|
||||
@@ -11,6 +12,7 @@ type MessageHandler = (message: Message) => void;
|
||||
type TypingHandler = (data: TypingIndicator) => void;
|
||||
type StatusHandler = (data: UserStatusChange) => void;
|
||||
type ReadHandler = (data: MessagesReadEvent) => void;
|
||||
type DeliveredHandler = (data: MessageDeliveredEvent) => void;
|
||||
|
||||
class SocketService {
|
||||
private socket: Socket | null = null;
|
||||
@@ -21,6 +23,7 @@ class SocketService {
|
||||
private typingStopHandlers: Set<TypingHandler> = new Set();
|
||||
private statusHandlers: Set<StatusHandler> = new Set();
|
||||
private readHandlers: Set<ReadHandler> = new Set();
|
||||
private deliveredHandlers: Set<DeliveredHandler> = new Set();
|
||||
private connectionHandlers: Set<(connected: boolean) => void> = new Set();
|
||||
private authErrorHandlers: Set<() => void> = new Set();
|
||||
private isConnecting = false;
|
||||
@@ -125,6 +128,10 @@ class SocketService {
|
||||
this.socket.on('messages_read', (data: MessagesReadEvent) => {
|
||||
this.readHandlers.forEach((handler) => handler(data));
|
||||
});
|
||||
|
||||
this.socket.on('message_delivered', (data: MessageDeliveredEvent) => {
|
||||
this.deliveredHandlers.forEach((handler) => handler(data));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -265,6 +272,11 @@ class SocketService {
|
||||
return () => this.readHandlers.delete(handler);
|
||||
}
|
||||
|
||||
onMessageDelivered(handler: DeliveredHandler): () => void {
|
||||
this.deliveredHandlers.add(handler);
|
||||
return () => this.deliveredHandlers.delete(handler);
|
||||
}
|
||||
|
||||
onConnectionChange(handler: (connected: boolean) => void): () => void {
|
||||
this.connectionHandlers.add(handler);
|
||||
return () => this.connectionHandlers.delete(handler);
|
||||
|
||||
Reference in New Issue
Block a user