From bec4c2c1d125488c3583b38656a64afc7f85a06b Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Mon, 4 Aug 2025 16:06:50 +0330 Subject: [PATCH] handle email axtion email in websocket --- src/components/EmailNotifications.tsx | 10 +++++++++- src/lib/SocketManagment.tsx | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/components/EmailNotifications.tsx b/src/components/EmailNotifications.tsx index 05828a4..e70483a 100644 --- a/src/components/EmailNotifications.tsx +++ b/src/components/EmailNotifications.tsx @@ -1,6 +1,6 @@ import React, { useState, useCallback, useEffect } from 'react'; import { useEmailWebSocket } from '@/hooks/useEmailWebSocket'; -import { useEmailEvents, EmailPayload, UnreadCountPayload } from '@/hooks/useEmailEvents'; +import { useEmailEvents, EmailPayload, UnreadCountPayload, EmailStatusPayload } from '@/hooks/useEmailEvents'; import { useNotificationSound } from '@/hooks/useNotificationSound'; import { Notification as NotificationIcon, VolumeHigh } from 'iconsax-react'; @@ -74,10 +74,18 @@ export const EmailNotifications: React.FC = ({ ); }, []); + const handleEmailSent = useCallback((data: EmailStatusPayload) => { + // Remove from notifications if it was there + setNotifications(prev => + prev.filter(notification => notification.messageId !== data.messageId) + ); + }, []); + useEmailEvents(socket, { onNewEmail: handleNewEmail, onUnreadCountUpdated: handleUnreadCountUpdate, onEmailRead: handleEmailRead, + onEmailSent: handleEmailSent, }); // Request notification permission on mount diff --git a/src/lib/SocketManagment.tsx b/src/lib/SocketManagment.tsx index f295f3c..92bbb6d 100644 --- a/src/lib/SocketManagment.tsx +++ b/src/lib/SocketManagment.tsx @@ -22,13 +22,14 @@ const SocketManagment: FC = () => { const handleEmailActionEvent = useCallback(() => { queryClient.invalidateQueries({ queryKey: ['mailbox-count'] }); queryClient.invalidateQueries({ queryKey: ['inbox'] }); + queryClient.invalidateQueries({ queryKey: ['drafts'] }); }, []); useEmailEvents(socket, { onNewEmail: handleNewEmailEvent, onEmailRead: handleEmailActionEvent, onEmailDeleted: handleEmailActionEvent, - // onMailboxUpdated: handleEmailActionEvent, + onEmailSent: handleEmailActionEvent, }); return null