matrix-react-sdk
Version:
SDK for matrix.org using React
39 lines (35 loc) • 4.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useLocalStorageState = void 0;
var _react = require("react");
/*
Copyright 2024 New Vector Ltd.
Copyright 2020 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
const getValue = (key, initialValue) => {
try {
const item = window.localStorage.getItem(key);
return item ? JSON.parse(item) : initialValue;
} catch (error) {
return initialValue;
}
};
// Hook behaving like useState but persisting the value to localStorage. Returns same as useState
const useLocalStorageState = (key, initialValue) => {
const lsKey = "mx_" + key;
const [value, setValue] = (0, _react.useState)(getValue(lsKey, initialValue));
(0, _react.useEffect)(() => {
setValue(getValue(lsKey, initialValue));
}, [lsKey, initialValue]);
const _setValue = (0, _react.useCallback)(v => {
window.localStorage.setItem(lsKey, JSON.stringify(v));
setValue(v);
}, [lsKey]);
return [value, _setValue];
};
exports.useLocalStorageState = useLocalStorageState;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiZ2V0VmFsdWUiLCJrZXkiLCJpbml0aWFsVmFsdWUiLCJpdGVtIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIkpTT04iLCJwYXJzZSIsImVycm9yIiwidXNlTG9jYWxTdG9yYWdlU3RhdGUiLCJsc0tleSIsInZhbHVlIiwic2V0VmFsdWUiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIl9zZXRWYWx1ZSIsInVzZUNhbGxiYWNrIiwidiIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUxvY2FsU3RvcmFnZVN0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IERpc3BhdGNoLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBnZXRWYWx1ZSA9IDxUPihrZXk6IHN0cmluZywgaW5pdGlhbFZhbHVlOiBUKTogVCA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICByZXR1cm4gaXRlbSA/IEpTT04ucGFyc2UoaXRlbSkgOiBpbml0aWFsVmFsdWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZTtcbiAgICB9XG59O1xuXG4vLyBIb29rIGJlaGF2aW5nIGxpa2UgdXNlU3RhdGUgYnV0IHBlcnNpc3RpbmcgdGhlIHZhbHVlIHRvIGxvY2FsU3RvcmFnZS4gUmV0dXJucyBzYW1lIGFzIHVzZVN0YXRlXG5leHBvcnQgY29uc3QgdXNlTG9jYWxTdG9yYWdlU3RhdGUgPSA8VD4oa2V5OiBzdHJpbmcsIGluaXRpYWxWYWx1ZTogVCk6IFtULCBEaXNwYXRjaDxUPl0gPT4ge1xuICAgIGNvbnN0IGxzS2V5ID0gXCJteF9cIiArIGtleTtcblxuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGU8VD4oZ2V0VmFsdWUobHNLZXksIGluaXRpYWxWYWx1ZSkpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0VmFsdWUoZ2V0VmFsdWUobHNLZXksIGluaXRpYWxWYWx1ZSkpO1xuICAgIH0sIFtsc0tleSwgaW5pdGlhbFZhbHVlXSk7XG5cbiAgICBjb25zdCBfc2V0VmFsdWU6IERpc3BhdGNoPFQ+ID0gdXNlQ2FsbGJhY2soXG4gICAgICAgICh2OiBUKSA9PiB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0obHNLZXksIEpTT04uc3RyaW5naWZ5KHYpKTtcbiAgICAgICAgICAgIHNldFZhbHVlKHYpO1xuICAgICAgICB9LFxuICAgICAgICBbbHNLZXldLFxuICAgICk7XG5cbiAgICByZXR1cm4gW3ZhbHVlLCBfc2V0VmFsdWVdO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBSUEsTUFBTUMsUUFBUSxHQUFHQSxDQUFJQyxHQUFXLEVBQUVDLFlBQWUsS0FBUTtFQUNyRCxJQUFJO0lBQ0EsTUFBTUMsSUFBSSxHQUFHQyxNQUFNLENBQUNDLFlBQVksQ0FBQ0MsT0FBTyxDQUFDTCxHQUFHLENBQUM7SUFDN0MsT0FBT0UsSUFBSSxHQUFHSSxJQUFJLENBQUNDLEtBQUssQ0FBQ0wsSUFBSSxDQUFDLEdBQUdELFlBQVk7RUFDakQsQ0FBQyxDQUFDLE9BQU9PLEtBQUssRUFBRTtJQUNaLE9BQU9QLFlBQVk7RUFDdkI7QUFDSixDQUFDOztBQUVEO0FBQ08sTUFBTVEsb0JBQW9CLEdBQUdBLENBQUlULEdBQVcsRUFBRUMsWUFBZSxLQUF1QjtFQUN2RixNQUFNUyxLQUFLLEdBQUcsS0FBSyxHQUFHVixHQUFHO0VBRXpCLE1BQU0sQ0FBQ1csS0FBSyxFQUFFQyxRQUFRLENBQUMsR0FBRyxJQUFBQyxlQUFRLEVBQUlkLFFBQVEsQ0FBQ1csS0FBSyxFQUFFVCxZQUFZLENBQUMsQ0FBQztFQUVwRSxJQUFBYSxnQkFBUyxFQUFDLE1BQU07SUFDWkYsUUFBUSxDQUFDYixRQUFRLENBQUNXLEtBQUssRUFBRVQsWUFBWSxDQUFDLENBQUM7RUFDM0MsQ0FBQyxFQUFFLENBQUNTLEtBQUssRUFBRVQsWUFBWSxDQUFDLENBQUM7RUFFekIsTUFBTWMsU0FBc0IsR0FBRyxJQUFBQyxrQkFBVyxFQUNyQ0MsQ0FBSSxJQUFLO0lBQ05kLE1BQU0sQ0FBQ0MsWUFBWSxDQUFDYyxPQUFPLENBQUNSLEtBQUssRUFBRUosSUFBSSxDQUFDYSxTQUFTLENBQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ3JETCxRQUFRLENBQUNLLENBQUMsQ0FBQztFQUNmLENBQUMsRUFDRCxDQUFDUCxLQUFLLENBQ1YsQ0FBQztFQUVELE9BQU8sQ0FBQ0MsS0FBSyxFQUFFSSxTQUFTLENBQUM7QUFDN0IsQ0FBQztBQUFDSyxPQUFBLENBQUFYLG9CQUFBLEdBQUFBLG9CQUFBIiwiaWdub3JlTGlzdCI6W119