31 lines
943 B
JavaScript
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;
|
|
}
|
|
};
|