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;
|
|||
|
}
|
|||
|
}
|