diff --git a/src/pages/Trash/List.tsx b/src/pages/Trash/List.tsx index cabf089..d5d5fb8 100644 --- a/src/pages/Trash/List.tsx +++ b/src/pages/Trash/List.tsx @@ -147,7 +147,7 @@ const List: FC = () => { selectedActions={selectedActions} onSelectionChange={handleSelectionChange} selectedRows={selectedMessages} - onRowClick={(id) => navigate(`/mail/${id}`)} + onRowClick={(id, item) => navigate(`/mail/${id}/${item.mailbox}`)} noDataMessage={
diff --git a/src/pages/received/Components/Header.tsx b/src/pages/received/Components/Header.tsx index 211cc7b..2377120 100644 --- a/src/pages/received/Components/Header.tsx +++ b/src/pages/received/Components/Header.tsx @@ -1,5 +1,5 @@ import Button from '@/components/Button' -import { ArrowRight, VolumeMute, More, DocumentDownload, Printer, Trash } from 'iconsax-react' +import { ArrowRight, DocumentDownload, Printer } from 'iconsax-react' import { useNavigate } from 'react-router-dom' import { FC } from 'react' import { useTranslation } from 'react-i18next' @@ -8,6 +8,7 @@ import MessageArchive from './MessageArchive' import MessageSpam from './MessageSpam' import { MailboxEnum } from '../enum/Enum' import MessageFavorite from './MessageFavorite' +import MessageTrash from './MessageTrash' const Header: FC<{ mailBoxName: MailboxEnum }> = ({ mailBoxName }) => { @@ -22,9 +23,9 @@ const Header: FC<{ mailBoxName: MailboxEnum }> = ({ mailBoxName }) => { - - - + {/* */} + + {/* */}
diff --git a/src/pages/received/Components/MessageArchive.tsx b/src/pages/received/Components/MessageArchive.tsx index e885291..eafa2fd 100644 --- a/src/pages/received/Components/MessageArchive.tsx +++ b/src/pages/received/Components/MessageArchive.tsx @@ -26,7 +26,7 @@ const MessageArchive: FC<{ isActiveArchive: boolean }> = ({ isActiveArchive }) = }) } setIsArchive(!isArchive) - }} size={18} variant={isArchive ? 'Bold' : 'Outline'} color='black' className='xl:block hidden' /> + }} size={18} variant={isArchive ? 'Bold' : 'Outline'} color='black' /> ) } diff --git a/src/pages/received/Components/MessageFavorite.tsx b/src/pages/received/Components/MessageFavorite.tsx index a8c8bfa..7eda541 100644 --- a/src/pages/received/Components/MessageFavorite.tsx +++ b/src/pages/received/Components/MessageFavorite.tsx @@ -25,7 +25,7 @@ const MessageFavorite: FC<{ isActiveFavorite: boolean }> = ({ isActiveFavorite } }) } setIsFavorite(!isFavorite) - }} size={18} variant={isFavorite ? 'Bold' : 'Outline'} color={isFavorite ? '#FFC107' : 'black'} className='xl:block hidden' /> + }} size={18} variant={isFavorite ? 'Bold' : 'Outline'} color={isFavorite ? '#FFC107' : 'black'} /> ) } diff --git a/src/pages/received/Components/MessageSpam.tsx b/src/pages/received/Components/MessageSpam.tsx index 42cb791..d596839 100644 --- a/src/pages/received/Components/MessageSpam.tsx +++ b/src/pages/received/Components/MessageSpam.tsx @@ -27,7 +27,7 @@ const MessageSpam: FC<{ isActiveSpam: boolean }> = ({ isActiveSpam }) => { }) } setIsSpam(!isSpam) - }} size={18} variant={isSpam ? 'Bold' : 'Outline'} color='black' className='xl:block hidden' /> + }} size={18} variant={isSpam ? 'Bold' : 'Outline'} color='black' /> ) } diff --git a/src/pages/received/Components/MessageTrash.tsx b/src/pages/received/Components/MessageTrash.tsx new file mode 100644 index 0000000..8f86b92 --- /dev/null +++ b/src/pages/received/Components/MessageTrash.tsx @@ -0,0 +1,32 @@ +import { Trash } from 'iconsax-react' +import { FC, useState } from 'react' +import { useNavigate, useParams } from 'react-router-dom' +import { useMoveToTrash, useRestoreMessage } from '../hooks/useEmailData' + +const MessageTrash: FC<{ isActiveTrash: boolean }> = ({ isActiveTrash }) => { + const [isTrash, setIsTrash] = useState(isActiveTrash) + const { id, mailbox } = useParams<{ id: string, mailbox: string }>() + const { mutate: moveToTrash } = useMoveToTrash() + const { mutate: restoreMessage } = useRestoreMessage() + const navigate = useNavigate() + return ( + { + setIsTrash(!isTrash) + if (isTrash) { + restoreMessage({ messageId: id || '', mailbox: mailbox || '' }, { + onSuccess: () => { + navigate(-1) + } + }) + } else { + moveToTrash({ messageId: id || '', mailbox: mailbox || '' }, { + onSuccess: () => { + navigate(-1) + } + }) + } + }} /> + ) +}; + +export default MessageTrash; \ No newline at end of file diff --git a/src/pages/received/Components/MessageUnread.tsx b/src/pages/received/Components/MessageUnread.tsx index 4d4510b..8588939 100644 --- a/src/pages/received/Components/MessageUnread.tsx +++ b/src/pages/received/Components/MessageUnread.tsx @@ -18,7 +18,7 @@ const MessageUnread: FC = () => { markAsRead({ messageId: id || '', mailbox: mailbox || '' }) } setIsRead(!isRead) - }} size={18} variant={isRead ? 'Outline' : 'Bold'} color='black' className='xl:block hidden' /> + }} size={18} variant={isRead ? 'Outline' : 'Bold'} color='black' /> ) } diff --git a/src/pages/received/hooks/useEmailData.tsx b/src/pages/received/hooks/useEmailData.tsx index 61c0e1e..6d00c7b 100644 --- a/src/pages/received/hooks/useEmailData.tsx +++ b/src/pages/received/hooks/useEmailData.tsx @@ -105,4 +105,10 @@ export const useUnFavoriteMessage = () => { return useMutation({ mutationFn: ({ messageId, mailbox }: SingleActionRequest) => api.unFavoriteMessage(messageId, mailbox), }); +}; + +export const useRestoreMessage = () => { + return useMutation({ + mutationFn: ({ messageId, mailbox }: SingleActionRequest) => api.restoreMessage(messageId, mailbox), + }); }; \ No newline at end of file