diff --git a/src/constants.ts b/src/constants.ts index 1e192aa..6e5568f 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -11,3 +11,4 @@ export const INTERNXT_EMAIL_DOMAINS = ['@inxt.me', '@inxt.eu', '@encrypt.eu'] as export const DEFAULT_FOLDER_LIMIT = 15; export const MAX_TOTAL_ATTACHMENT_BYTES_PER_MAIL = 25 * 1024 * 1024; +export const AUTO_POLLING_INTERVAL_IN_MILLISECONDS = 30000; diff --git a/src/hooks/mail/useListFolderPaginated.ts b/src/hooks/mail/useListFolderPaginated.ts index 4d2b0b5..50dc4da 100644 --- a/src/hooks/mail/useListFolderPaginated.ts +++ b/src/hooks/mail/useListFolderPaginated.ts @@ -1,12 +1,19 @@ -import { DEFAULT_FOLDER_LIMIT } from '@/constants'; +import { AUTO_POLLING_INTERVAL_IN_MILLISECONDS, DEFAULT_FOLDER_LIMIT } from '@/constants'; import { useGetListFolderQuery } from '@/store/api/mail'; import type { FolderType } from '@/types/mail'; import { useState } from 'react'; const useListFolderPaginated = (mailbox: FolderType) => { + const [currentMailbox, setCurrentMailbox] = useState(mailbox); const [anchorId, setAnchorId] = useState(undefined); const [unreadFilter, setUnreadFilter] = useState(undefined); + if (currentMailbox !== mailbox) { + setCurrentMailbox(mailbox); + setAnchorId(undefined); + setUnreadFilter(undefined); + } + const { data: listFolder, isLoading: isLoadingListFolder, @@ -19,7 +26,7 @@ const useListFolderPaginated = (mailbox: FolderType) => { unread: unreadFilter, }, { - pollingInterval: 30000, + pollingInterval: AUTO_POLLING_INTERVAL_IN_MILLISECONDS, skipPollingIfUnfocused: true, skip: !mailbox, }, @@ -45,10 +52,10 @@ const useListFolderPaginated = (mailbox: FolderType) => { return { listFolderEmails, isLoadingListFolder, - onLoadMore, hasMoreEmails: listFolder?.hasMoreMails, isUnreadFilter: unreadFilter, listEmailsCount: listFolderEmails?.length, + onLoadMore, toggleUnreadFilter, }; };