microwave/firefox/settings.js

114 lines
2.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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