]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/shared/rest/rest-table.ts
Add zh-Hans-CN to client.sh
[github/Chocobozzz/PeerTube.git] / client / src / app / shared / rest / rest-table.ts
index d04d91c688b046486031653aa9fa115c8dcafd66..fe1a91d2d6e8bcd6479841e50a2a69be33d18a5b 100644 (file)
@@ -1,16 +1,32 @@
+import { peertubeLocalStorage } from '@app/shared/misc/peertube-local-storage'
 import { LazyLoadEvent } from 'primeng/components/common/lazyloadevent'
 import { SortMeta } from 'primeng/components/common/sortmeta'
 
 import { RestPagination } from './rest-pagination'
 
 export abstract class RestTable {
+
   abstract totalRecords: number
   abstract rowsPerPage: number
   abstract sort: SortMeta
   abstract pagination: RestPagination
 
+  private sortLocalStorageKey = 'rest-table-sort-' + this.constructor.name
+
   protected abstract loadData (): void
 
+  loadSort () {
+    const result = peertubeLocalStorage.getItem(this.sortLocalStorageKey)
+
+    if (result) {
+      try {
+        this.sort = JSON.parse(result)
+      } catch (err) {
+        console.error('Cannot load sort of local storage key ' + this.sortLocalStorageKey, err)
+      }
+    }
+  }
+
   loadLazy (event: LazyLoadEvent) {
     this.sort = {
       order: event.sortOrder,
@@ -23,6 +39,11 @@ export abstract class RestTable {
     }
 
     this.loadData()
+    this.saveSort()
+  }
+
+  saveSort () {
+    peertubeLocalStorage.setItem(this.sortLocalStorageKey, JSON.stringify(this.sort))
   }
 
 }