_comuns/dist-front/local/index.js

31 lines
943 B
JavaScript

/**
* LocalStorage Tipado
* Lê ou grava um valor no localStorage, mantendo o tipo genérico <T>.
*/
export const localValor = (chave_, valor) => {
const localStorage = "localStorage" in globalThis ? globalThis.localStorage : undefined;
if (typeof localStorage == "undefined")
return null;
const chave = typeof chave_ === "string" ? chave_ : encodeURIComponent(JSON.stringify(chave_));
try {
// Grava valor se fornecido
if (valor !== undefined) {
localStorage.setItem(chave, JSON.stringify(valor));
}
// Lê valor
const v2 = localStorage.getItem(chave);
if (v2 === null)
return null;
try {
return JSON.parse(v2);
}
catch {
// Caso o valor não seja JSON válido
return v2;
}
}
catch {
// Em caso de erro de acesso ao localStorage
return null;
}
};