SHA256
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
const STORAGE_KEYS = Object.freeze({
|
|
developerTools: 'shine-feature-developer-tools-v1',
|
|
dmFileTransfer: 'shine-feature-dm-file-transfer-v1',
|
|
});
|
|
|
|
function readBoolean(key, defaultValue = true) {
|
|
try {
|
|
const raw = localStorage.getItem(key);
|
|
if (raw == null) return Boolean(defaultValue);
|
|
return raw !== '0' && raw !== 'false';
|
|
} catch {
|
|
return Boolean(defaultValue);
|
|
}
|
|
}
|
|
|
|
function writeBoolean(key, enabled) {
|
|
const value = Boolean(enabled);
|
|
try {
|
|
localStorage.setItem(key, value ? '1' : '0');
|
|
} catch {
|
|
// В приватном режиме/при запрете storage оставляем значение только на уровне default.
|
|
}
|
|
window.dispatchEvent(new CustomEvent('shine-feature-settings-updated', {
|
|
detail: { key, enabled: value },
|
|
}));
|
|
return value;
|
|
}
|
|
|
|
export function isDeveloperToolsEnabled() {
|
|
return readBoolean(STORAGE_KEYS.developerTools, true);
|
|
}
|
|
|
|
export function setDeveloperToolsEnabled(enabled) {
|
|
return writeBoolean(STORAGE_KEYS.developerTools, enabled);
|
|
}
|
|
|
|
export function isDmFileTransferEnabled() {
|
|
return readBoolean(STORAGE_KEYS.dmFileTransfer, true);
|
|
}
|
|
|
|
export function setDmFileTransferEnabled(enabled) {
|
|
return writeBoolean(STORAGE_KEYS.dmFileTransfer, enabled);
|
|
}
|