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