indexedDB-storage.ts 894 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { StateStorage } from "zustand/middleware";
  2. import { get, set, del, clear } from "idb-keyval";
  3. class IndexedDBStorage implements StateStorage {
  4. public async getItem(name: string): Promise<string | null> {
  5. try {
  6. return (await get(name)) || localStorage.getItem(name);
  7. } catch (error) {
  8. return localStorage.getItem(name);
  9. }
  10. }
  11. public async setItem(name: string, value: string): Promise<void> {
  12. try {
  13. await set(name, value);
  14. } catch (error) {
  15. localStorage.setItem(name, value);
  16. }
  17. }
  18. public async removeItem(name: string): Promise<void> {
  19. try {
  20. await del(name);
  21. } catch (error) {
  22. localStorage.removeItem(name);
  23. }
  24. }
  25. public async clear(): Promise<void> {
  26. try {
  27. await clear();
  28. } catch (error) {
  29. localStorage.clear();
  30. }
  31. }
  32. }
  33. export const indexedDBStorage = new IndexedDBStorage();