UNPKG

web-shared-preferences

Version:

An simple class to manage the loacal storage, including React like useString, useJSON and more!

39 lines 1.61 kB
import { useReducer } from "react"; import { SharedPreferences } from "./SharedPreferences"; /** * Used to build different hooks for the `localStorage` implementation * @param key To get the value from the local storage * @param defValue Default value to return if the key does not exist * @param coreGetter * @param coreSetter * @returns */ export function usePref(key, defValue, coreGetter, coreSetter) { const [, forceRender] = useReducer((x) => x + 1, 0); const getter = coreGetter(key, defValue); const setter = (value) => { coreSetter(key, typeof value == "function" ? value(getter) : value); if (getter !== value) { forceRender(); } }; return [getter, setter]; } export function Dispatcher(storage) { const pref = new SharedPreferences(storage); return { useString(key, defValue) { return usePref(key, defValue, (key, defValue) => pref.getString(key, defValue), (key, value) => pref.setString(key, value)); }, useBoolean(key, defValue) { return usePref(key, defValue, (key, defValue) => pref.getBoolean(key, defValue), (key, value) => pref.setBoolean(key, value)); }, useNumber(key, defValue) { return usePref(key, defValue, (key, defValue) => pref.getNumber(key, defValue), (key, value) => pref.setNumber(key, value)); }, useJSON(key, defValue) { return usePref(key, defValue, (key, defValue) => pref.getJSON(key, defValue), (key, value) => pref.setJSON(key, value)); }, }; } //# sourceMappingURL=Dispatcher.js.map