From 999e56e469632166c38b1b44cb3db54896c625a7 Mon Sep 17 00:00:00 2001 From: Xavier Abad <77491413+xabg2@users.noreply.github.com> Date: Mon, 29 Jun 2026 13:42:24 +0200 Subject: [PATCH 1/2] fix: reset the anchor Id when navigating through folders --- src/constants.ts | 1 + src/features/mail/MailView.tsx | 8 +++++++- src/hooks/mail/useListFolderPaginated.ts | 12 +++++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) 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/features/mail/MailView.tsx b/src/features/mail/MailView.tsx index 379300c..9918dca 100644 --- a/src/features/mail/MailView.tsx +++ b/src/features/mail/MailView.tsx @@ -1,4 +1,4 @@ -import { Activity, useState } from 'react'; +import { Activity, useEffect, useState } from 'react'; import { useTranslationContext } from '@/i18n'; import type { FolderType } from '@/types/mail'; import Settings from './components/settings'; @@ -49,8 +49,14 @@ const MailView = ({ folder }: MailViewProps) => { listEmailsCount, onLoadMore, toggleUnreadFilter, + resetListFolder, } = useListFolderPaginated(folder); + useEffect(() => { + // Needed to clear the anchorId when the folder changes + resetListFolder(); + }, [folder]); + const { selectedEmails, selectAll, selectEmail, selectNone, selectRead, selectUnread, toggleSelectAll } = useMailSelection(listFolderEmails); const { listActionContext, bulkActionContext } = useListActionContext(folder, selectedEmails, { diff --git a/src/hooks/mail/useListFolderPaginated.ts b/src/hooks/mail/useListFolderPaginated.ts index 4d2b0b5..d5946d9 100644 --- a/src/hooks/mail/useListFolderPaginated.ts +++ b/src/hooks/mail/useListFolderPaginated.ts @@ -1,4 +1,4 @@ -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'; @@ -19,7 +19,7 @@ const useListFolderPaginated = (mailbox: FolderType) => { unread: unreadFilter, }, { - pollingInterval: 30000, + pollingInterval: AUTO_POLLING_INTERVAL_IN_MILLISECONDS, skipPollingIfUnfocused: true, skip: !mailbox, }, @@ -40,16 +40,22 @@ const useListFolderPaginated = (mailbox: FolderType) => { applyUnreadFilter(unreadFilter === true ? undefined : true); }; + const resetListFolder = () => { + setAnchorId(undefined); + setUnreadFilter(undefined); + }; + const listFolderEmails = listFolder?.emails; return { listFolderEmails, isLoadingListFolder, - onLoadMore, hasMoreEmails: listFolder?.hasMoreMails, isUnreadFilter: unreadFilter, listEmailsCount: listFolderEmails?.length, + onLoadMore, toggleUnreadFilter, + resetListFolder, }; }; From 3577f9d47d3212bd83160a72b4d8ebe6e436fd22 Mon Sep 17 00:00:00 2001 From: Xavier Abad <77491413+xabg2@users.noreply.github.com> Date: Mon, 29 Jun 2026 15:40:43 +0200 Subject: [PATCH 2/2] feat: handle logic directly in custom hook --- src/features/mail/MailView.tsx | 8 +------- src/hooks/mail/useListFolderPaginated.ts | 13 +++++++------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/features/mail/MailView.tsx b/src/features/mail/MailView.tsx index 9918dca..379300c 100644 --- a/src/features/mail/MailView.tsx +++ b/src/features/mail/MailView.tsx @@ -1,4 +1,4 @@ -import { Activity, useEffect, useState } from 'react'; +import { Activity, useState } from 'react'; import { useTranslationContext } from '@/i18n'; import type { FolderType } from '@/types/mail'; import Settings from './components/settings'; @@ -49,14 +49,8 @@ const MailView = ({ folder }: MailViewProps) => { listEmailsCount, onLoadMore, toggleUnreadFilter, - resetListFolder, } = useListFolderPaginated(folder); - useEffect(() => { - // Needed to clear the anchorId when the folder changes - resetListFolder(); - }, [folder]); - const { selectedEmails, selectAll, selectEmail, selectNone, selectRead, selectUnread, toggleSelectAll } = useMailSelection(listFolderEmails); const { listActionContext, bulkActionContext } = useListActionContext(folder, selectedEmails, { diff --git a/src/hooks/mail/useListFolderPaginated.ts b/src/hooks/mail/useListFolderPaginated.ts index d5946d9..50dc4da 100644 --- a/src/hooks/mail/useListFolderPaginated.ts +++ b/src/hooks/mail/useListFolderPaginated.ts @@ -4,9 +4,16 @@ 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, @@ -40,11 +47,6 @@ const useListFolderPaginated = (mailbox: FolderType) => { applyUnreadFilter(unreadFilter === true ? undefined : true); }; - const resetListFolder = () => { - setAnchorId(undefined); - setUnreadFilter(undefined); - }; - const listFolderEmails = listFolder?.emails; return { @@ -55,7 +57,6 @@ const useListFolderPaginated = (mailbox: FolderType) => { listEmailsCount: listFolderEmails?.length, onLoadMore, toggleUnreadFilter, - resetListFolder, }; };