feat: Mail infinite scroll, remove sort header + pagination, connect filter/sort to MailList
This commit is contained in:
@@ -190,7 +190,8 @@ export function MailPage() {
|
||||
const result = await fetchMails(currentFolderId, mailsPage, sortBy, sortOrder);
|
||||
// Only update if still on the same folder
|
||||
if (selectedFolderIdRef.current === currentFolderId) {
|
||||
setMails(result.mails);
|
||||
// Append for infinite scroll (page > 1), replace on page 1 or folder change
|
||||
setMails(mailsPage > 1 ? (prev) => [...prev, ...result.mails] : result.mails);
|
||||
setMailsTotal(result.total);
|
||||
}
|
||||
}
|
||||
@@ -892,20 +893,15 @@ export function MailPage() {
|
||||
selectedMailId={selectedMail?.id || null}
|
||||
onSelectMail={handleSelectMail}
|
||||
loading={loadingMails}
|
||||
currentPage={mailsPage}
|
||||
total={mailsTotal}
|
||||
pageSize={PAGE_SIZE}
|
||||
onPageChange={setMailsPage}
|
||||
selectedMailIds={selectedMailIds}
|
||||
onToggleSelect={handleToggleSelect}
|
||||
onSelectAll={handleSelectAll}
|
||||
sortBy={sortBy}
|
||||
sortOrder={sortOrder}
|
||||
onSortChange={(by, order) => {
|
||||
setSortBy(by);
|
||||
setSortOrder(order);
|
||||
setMailsPage(1);
|
||||
onLoadMore={() => {
|
||||
if (mails.length < mailsTotal) {
|
||||
setMailsPage((p) => p + 1);
|
||||
}
|
||||
}}
|
||||
hasMore={mails.length < mailsTotal}
|
||||
/>
|
||||
</ResizablePanel>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user