114 lines
2.7 KiB
JavaScript
114 lines
2.7 KiB
JavaScript
'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;
|
||
}
|
||
}
|