From c44c32a43697eb0c34a1179eefdf6af8aa6220dd Mon Sep 17 00:00:00 2001 From: zhangyue Date: Sat, 16 Mar 2024 22:52:51 +0800 Subject: [PATCH] feat: finish picgo store ataptor --- .../src/lib/JSONStore.ts | 4 +-- .../src/lib/adapters/LocalForgeAdapter.ts | 30 ------------------- .../src/lib/adapters/LocalStorageAdapter.ts | 25 ++++++++++++++++ 3 files changed, 27 insertions(+), 32 deletions(-) delete mode 100644 libs/Universal-PicGo-Store/src/lib/adapters/LocalForgeAdapter.ts create mode 100644 libs/Universal-PicGo-Store/src/lib/adapters/LocalStorageAdapter.ts diff --git a/libs/Universal-PicGo-Store/src/lib/JSONStore.ts b/libs/Universal-PicGo-Store/src/lib/JSONStore.ts index 6ad9334..a99dd82 100644 --- a/libs/Universal-PicGo-Store/src/lib/JSONStore.ts +++ b/libs/Universal-PicGo-Store/src/lib/JSONStore.ts @@ -3,7 +3,7 @@ import { JSONAdapter } from "./adapters/JSONAdapter" import _ from "lodash" import { IJSON } from "../types" import { hasNodeEnv } from "./utils" -import { LocalForgeAdapter } from "./adapters/LocalForgeAdapter" +import { LocalStorageAdapter } from "./adapters/LocalStorageAdapter" class LowWithLodash extends LowSync { chain: _.ExpChain = _.chain(this).get("data") @@ -21,7 +21,7 @@ class JSONStore { if (hasNodeEnv) { adapter = new JSONAdapter(dbPath) } else { - adapter = new LocalForgeAdapter(dbPath) + adapter = new LocalStorageAdapter(dbPath) } this.db = new LowWithLodash(adapter) this.read() diff --git a/libs/Universal-PicGo-Store/src/lib/adapters/LocalForgeAdapter.ts b/libs/Universal-PicGo-Store/src/lib/adapters/LocalForgeAdapter.ts deleted file mode 100644 index 9f9b831..0000000 --- a/libs/Universal-PicGo-Store/src/lib/adapters/LocalForgeAdapter.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { IJSON } from "../../types" -import localForage from "localforage" - -export class LocalForgeAdapter { - private readonly adapter: LocalForage - private readonly dbPath: string - - constructor(dbPath: string) { - this.dbPath = dbPath - this.adapter = localForage - localForage.config({ - driver: localForage.LOCALSTORAGE, // Force WebSQL; same as using setDriver() - name: "universal-picgo-store", - version: 1.0, - storeName: "picgo-store", // Should be alphanumeric, with underscores. - description: "universal picgo store", - }) - } - - read(): IJSON { - console.log(this.adapter) - throw new Error("Method LocalForgeAdapter.read not implemented") - - const data = this.adapter.getItem(this.dbPath) - } - - write(obj: any): void { - throw new Error("Method LocalForgeAdapter.write not implemented") - } -} diff --git a/libs/Universal-PicGo-Store/src/lib/adapters/LocalStorageAdapter.ts b/libs/Universal-PicGo-Store/src/lib/adapters/LocalStorageAdapter.ts new file mode 100644 index 0000000..31cdf09 --- /dev/null +++ b/libs/Universal-PicGo-Store/src/lib/adapters/LocalStorageAdapter.ts @@ -0,0 +1,25 @@ +import { IJSON } from "../../types" +import { LocalKey, LocalStorage } from "ts-localstorage" + +export class LocalStorageAdapter { + private readonly adapter: typeof LocalStorage + private readonly key: LocalKey + + constructor(dbPath: string) { + this.adapter = LocalStorage + this.key = new LocalKey(dbPath, {}) + } + + read(): IJSON { + const data = this.adapter.getItem(this.key) + /* istanbul ignore if */ + if (data === null) { + return {} + } + return data + } + + write(obj: any): void { + this.adapter.setItem(this.key, obj) + } +}