44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
import { Preferences } from "@capacitor/preferences";
|
|
import { defineDriver, joinKeys, normalizeKey } from "./utils/index.mjs";
|
|
const DRIVER_NAME = "capacitor-preferences";
|
|
export default defineDriver(
|
|
(opts) => {
|
|
const base = normalizeKey(opts?.base || "");
|
|
const resolveKey = (key) => joinKeys(base, key);
|
|
return {
|
|
name: DRIVER_NAME,
|
|
options: opts,
|
|
getInstance: () => Preferences,
|
|
hasItem(key) {
|
|
return Preferences.keys().then((r) => r.keys.includes(resolveKey(key)));
|
|
},
|
|
getItem(key) {
|
|
return Preferences.get({ key: resolveKey(key) }).then((r) => r.value);
|
|
},
|
|
getItemRaw(key) {
|
|
return Preferences.get({ key: resolveKey(key) }).then((r) => r.value);
|
|
},
|
|
setItem(key, value) {
|
|
return Preferences.set({ key: resolveKey(key), value });
|
|
},
|
|
setItemRaw(key, value) {
|
|
return Preferences.set({ key: resolveKey(key), value });
|
|
},
|
|
removeItem(key) {
|
|
return Preferences.remove({ key: resolveKey(key) });
|
|
},
|
|
async getKeys() {
|
|
const { keys } = await Preferences.keys();
|
|
return keys.map((key) => key.slice(base.length));
|
|
},
|
|
async clear(prefix) {
|
|
const { keys } = await Preferences.keys();
|
|
const _prefix = resolveKey(prefix || "");
|
|
await Promise.all(
|
|
keys.filter((key) => key.startsWith(_prefix)).map((key) => Preferences.remove({ key }))
|
|
);
|
|
}
|
|
};
|
|
}
|
|
);
|