Skip to content

Commit dad35e3

Browse files
Merge branch 'enhancement-#906/persist-amount-of-entries' of github.com:Pallavikumarimdb/pangolin into Pallavikumarimdb-enhancement-#906/persist-amount-of-entries
2 parents 39afabd + e9494ef commit dad35e3

File tree

16 files changed

+172
-14
lines changed

16 files changed

+172
-14
lines changed

src/app/[orgId]/settings/access/invitations/InvitationsDataTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export function InvitationsDataTable<TData, TValue>({
2222
<DataTable
2323
columns={columns}
2424
data={data}
25+
persistPageSize="invitations-table"
2526
title={t('invite')}
2627
searchPlaceholder={t('inviteSearch')}
2728
searchColumn="email"

src/app/[orgId]/settings/access/roles/RolesDataTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export function RolesDataTable<TData, TValue>({
2424
<DataTable
2525
columns={columns}
2626
data={data}
27+
persistPageSize="roles-table"
2728
title={t('roles')}
2829
searchPlaceholder={t('accessRolesSearch')}
2930
searchColumn="name"

src/app/[orgId]/settings/access/users/UsersDataTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export function UsersDataTable<TData, TValue>({
2424
<DataTable
2525
columns={columns}
2626
data={data}
27+
persistPageSize="users-table"
2728
title={t('users')}
2829
searchPlaceholder={t('accessUsersSearch')}
2930
searchColumn="email"

src/app/[orgId]/settings/api-keys/OrgApiKeysDataTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export function OrgApiKeysDataTable<TData, TValue>({
2222
<DataTable
2323
columns={columns}
2424
data={data}
25+
persistPageSize="Org-apikeys-table"
2526
title={t('apiKeys')}
2627
searchPlaceholder={t('searchApiKeys')}
2728
searchColumn="name"

src/app/[orgId]/settings/clients/ClientsDataTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export function ClientsDataTable<TData, TValue>({
2020
<DataTable
2121
columns={columns}
2222
data={data}
23+
persistPageSize="clients-table"
2324
title="Clients"
2425
searchPlaceholder="Search clients..."
2526
searchColumn="name"

src/app/[orgId]/settings/domains/DomainsDataTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export function DomainsDataTable<TData, TValue>({
2525
<DataTable
2626
columns={columns}
2727
data={data}
28+
persistPageSize="domains-table"
2829
title={t("domains")}
2930
searchPlaceholder={t("domainsSearch")}
3031
searchColumn="baseDomain"

src/app/[orgId]/settings/resources/ResourcesTable.tsx

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,43 @@ type ResourcesTableProps = {
9999
defaultView?: "proxy" | "internal";
100100
};
101101

102+
103+
const STORAGE_KEYS = {
104+
PAGE_SIZE: 'datatable-page-size',
105+
getTablePageSize: (tableId?: string) =>
106+
tableId ? `datatable-${tableId}-page-size` : STORAGE_KEYS.PAGE_SIZE
107+
};
108+
109+
const getStoredPageSize = (tableId?: string, defaultSize = 20): number => {
110+
if (typeof window === 'undefined') return defaultSize;
111+
112+
try {
113+
const key = STORAGE_KEYS.getTablePageSize(tableId);
114+
const stored = localStorage.getItem(key);
115+
if (stored) {
116+
const parsed = parseInt(stored, 10);
117+
if (parsed > 0 && parsed <= 1000) {
118+
return parsed;
119+
}
120+
}
121+
} catch (error) {
122+
console.warn('Failed to read page size from localStorage:', error);
123+
}
124+
return defaultSize;
125+
};
126+
127+
const setStoredPageSize = (pageSize: number, tableId?: string): void => {
128+
if (typeof window === 'undefined') return;
129+
130+
try {
131+
const key = STORAGE_KEYS.getTablePageSize(tableId);
132+
localStorage.setItem(key, pageSize.toString());
133+
} catch (error) {
134+
console.warn('Failed to save page size to localStorage:', error);
135+
}
136+
};
137+
138+
102139
export default function ResourcesTable({
103140
resources,
104141
internalResources,
@@ -113,6 +150,13 @@ export default function ResourcesTable({
113150

114151
const api = createApiClient({ env });
115152

153+
const [proxyPageSize, setProxyPageSize] = useState<number>(() =>
154+
getStoredPageSize('proxy-resources', 20)
155+
);
156+
const [internalPageSize, setInternalPageSize] = useState<number>(() =>
157+
getStoredPageSize('internal-resources', 20)
158+
);
159+
116160
const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);
117161
const [selectedResource, setSelectedResource] =
118162
useState<ResourceRow | null>();
@@ -559,7 +603,7 @@ export default function ResourcesTable({
559603
onGlobalFilterChange: setProxyGlobalFilter,
560604
initialState: {
561605
pagination: {
562-
pageSize: 20,
606+
pageSize: proxyPageSize,
563607
pageIndex: 0
564608
}
565609
},
@@ -582,7 +626,7 @@ export default function ResourcesTable({
582626
onGlobalFilterChange: setInternalGlobalFilter,
583627
initialState: {
584628
pagination: {
585-
pageSize: 20,
629+
pageSize: internalPageSize,
586630
pageIndex: 0
587631
}
588632
},
@@ -593,6 +637,16 @@ export default function ResourcesTable({
593637
}
594638
});
595639

640+
const handleProxyPageSizeChange = (newPageSize: number) => {
641+
setProxyPageSize(newPageSize);
642+
setStoredPageSize(newPageSize, 'proxy-resources');
643+
};
644+
645+
const handleInternalPageSizeChange = (newPageSize: number) => {
646+
setInternalPageSize(newPageSize);
647+
setStoredPageSize(newPageSize, 'internal-resources');
648+
};
649+
596650
return (
597651
<>
598652
{selectedResource && (
@@ -761,7 +815,10 @@ export default function ResourcesTable({
761815
</TableBody>
762816
</Table>
763817
<div className="mt-4">
764-
<DataTablePagination table={proxyTable} />
818+
<DataTablePagination
819+
table={proxyTable}
820+
onPageSizeChange={handleProxyPageSizeChange}
821+
/>
765822
</div>
766823
</TabsContent>
767824
<TabsContent value="internal">
@@ -861,6 +918,7 @@ export default function ResourcesTable({
861918
<div className="mt-4">
862919
<DataTablePagination
863920
table={internalTable}
921+
onPageSizeChange={handleInternalPageSizeChange}
864922
/>
865923
</div>
866924
</TabsContent>

src/app/[orgId]/settings/share-links/ShareLinksDataTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export function ShareLinksDataTable<TData, TValue>({
2424
<DataTable
2525
columns={columns}
2626
data={data}
27+
persistPageSize="shareLinks-table"
2728
title={t('shareLinks')}
2829
searchPlaceholder={t('shareSearch')}
2930
searchColumn="name"

src/app/[orgId]/settings/sites/SitesDataTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export function SitesDataTable<TData, TValue>({
2626
<DataTable
2727
columns={columns}
2828
data={data}
29+
persistPageSize="sites-table"
2930
title={t('sites')}
3031
searchPlaceholder={t('searchSitesProgress')}
3132
searchColumn="name"

src/app/admin/api-keys/ApiKeysDataTable.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export function ApiKeysDataTable<TData, TValue>({
4747
<DataTable
4848
columns={columns}
4949
data={data}
50+
persistPageSize="apiKeys-table"
5051
title={t('apiKeys')}
5152
searchPlaceholder={t('searchApiKeys')}
5253
searchColumn="name"

0 commit comments

Comments
 (0)