microwave/firefox/settings.js

114 lines
2.7 KiB
JavaScript
Raw Normal View History

2022-11-18 06:27:17 +07:00
'use strict'
/**
* @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
*/
class settings {
/**
* Хранилище
*/
static storage = browser.storage;
/**
* Префикс в журнале
*/
static prefix = 'настройки';
/**
* Записать
*
* @param {string} name
* @param {*} value
*
* @return {bool} Статус записи в базу данных
*/
static async write(name, value = null) {
if (typeof name === 'string') {
// Переданы строки
// Инициализация буфера для записи в хранилище
let buffer = {};
// Запись в буфер
buffer[name] = value;
// Запись в базу данных
await this.storage.sync.set(buffer);
// Запись в журнал
settings.log('Записана настройка: ' + name + ` (${value})`);
return true;
}
// Запись в журнал
settings.log('Не удалось записать настройку: ' + name + ` (${value})`);
return false;
}
/**
* Прочитать
*
* @param {string} name
*
* @return {Promise|null} Значение, если найдено
*/
static async read(name) {
if (typeof name === 'string') {
// Передана строка
// Чтение из базы данных
let value = await this.storage.sync.get(name);
return value[name];
}
return null;
}
/**
* Удалить
*
* @param {string} name
*
* @return {bool} Статус удаления из базы данных
*/
static async delete(name) {
if (typeof name === 'string') {
// Передана строка
// Удаление из базы данных
await this.storage.sync.remove(name);
// Запись в журнал
settings.log('Удалена настройка: ' + name);
return true;
}
// Запись в журнал
settings.log('Не удалось удалить настройку: ' + name);
return false;
}
/**
* Запись в журнал
*
* @param {string} text
*
* @return {bool} Статус записи в журнал
*/
static log(text) {
if (typeof text === 'string') {
// Передана строка
// Запись в журнал
return log.write(settings.prefix, text);
}
return false;
}
}