gitscope
https://dev.kronoz.win/r/marzneshin.git
app/dashboard/src/utils/userPreferenceStorage.ts · v0.1.0
Source
1 912788f Mardin 2y ago
2 a47eb4c Dawsh 2y ago
3 6aab6f0 Mrdn 2y ago export class PageSizeManager {
4 6aab6f0 Mrdn 2y ago private localStorageKey: string;
5 6aab6f0 Mrdn 2y ago private defaultPageSize: number;
6 912788f Mardin 2y ago
7 6aab6f0 Mrdn 2y ago constructor(localStorageKey: string, defaultPageSize: number) {
8 6aab6f0 Mrdn 2y ago this.localStorageKey = `marzneshin-num-${localStorageKey}-per-page`;
9 6aab6f0 Mrdn 2y ago this.defaultPageSize = defaultPageSize;
10 6aab6f0 Mrdn 2y ago }
11 912788f Mardin 2y ago
12 6aab6f0 Mrdn 2y ago private getStoredPageSize(): string | null {
13 6aab6f0 Mrdn 2y ago return localStorage.getItem(this.localStorageKey);
14 6aab6f0 Mrdn 2y ago }
15 912788f Mardin 2y ago
16 6aab6f0 Mrdn 2y ago getPageSize(): number {
17 6aab6f0 Mrdn 2y ago const storedPageSize = this.getStoredPageSize();
18 6aab6f0 Mrdn 2y ago const parsedPageSize = parseInt(storedPageSize || '', 10);
19 6aab6f0 Mrdn 2y ago return isNaN(parsedPageSize) ? this.defaultPageSize : parsedPageSize;
20 6aab6f0 Mrdn 2y ago }
21 5bb2712 Mardin 2y ago
22 6aab6f0 Mrdn 2y ago setPageSize(value: string): void {
23 6aab6f0 Mrdn 2y ago localStorage.setItem(this.localStorageKey, value);
24 6aab6f0 Mrdn 2y ago }
25 6aab6f0 Mrdn 2y ago }
26 5bb2712 Mardin 2y ago
27 6aab6f0 Mrdn 2y ago export const pageSizeManagers = {
28 6aab6f0 Mrdn 2y ago users: new PageSizeManager('users', 10),
29 6aab6f0 Mrdn 2y ago inbounds: new PageSizeManager('inbounds', 10),
30 6aab6f0 Mrdn 2y ago nodes: new PageSizeManager('nodes', 10),
31 6aab6f0 Mrdn 2y ago hosts: new PageSizeManager('hosts', 10),
32 6aab6f0 Mrdn 2y ago services: new PageSizeManager('services', 10),
33 6aab6f0 Mrdn 2y ago }