| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /**
- * FeHelper Settings Tools
- * @author zhaoxianlie
- */
- import Awesome from '../background/awesome.js';
- export default (() => {
- // 所有配置项
- let optionItemsWithDefaultValue = {
- 'OPT_ITEM_CONTEXTMENUS': true,
- 'JSON_PAGE_FORMAT': true,
- 'FORBID_OPEN_IN_NEW_TAB': false,
- 'AUTO_DARK_MODE': false,
- 'ALWAYS_DARK_MODE': false,
- 'CONTENT_SCRIPT_ALLOW_ALL_FRAMES': false
- };
- /**
- * 获取全部配置项
- * @returns {string[]}
- * @private
- */
- let _getAllOpts = () => Object.keys(optionItemsWithDefaultValue);
- /**
- * 提取配置项
- * @param {Function} callback 回调方法
- */
- let _getOptions = function (callback) {
- let rst = {};
- chrome.storage.local.get(_getAllOpts(),(objs) => {
- Object.keys(objs).forEach(item => {
- let opt = objs[item];
- if (opt !== null) {
- rst[item] = opt;
- } else {
- rst[item] = optionItemsWithDefaultValue[item];
- }
- });
- callback.call(null, rst);
- });
- };
- /**
- * 保存配置
- * @param items
- * @param callback
- * @private
- */
- let _setOptions = function (items, callback) {
- // 确保items是数组类型
- if (!Array.isArray(items)) {
- // 如果传入的是对象类型,转换为数组形式
- if (typeof items === 'object') {
- let tempItems = [];
- Object.keys(items).forEach(key => {
- let obj = {};
- obj[key] = items[key];
- tempItems.push(obj);
- });
- items = tempItems;
- } else {
- items = [];
- }
- }
- _getAllOpts().forEach((opt) => {
- let found = items.some(it => {
- if (typeof(it) === 'string' && it === opt) {
- chrome.storage.local.set({[opt]: 'true'});
- return true;
- }
- else if (typeof(it) === 'object' && it.hasOwnProperty(opt)) {
- chrome.storage.local.set({[opt]: it[opt]});
- return true;
- }
- return false;
- });
- if (!found) {
- chrome.storage.local.set({[opt]: 'false'});
- }
- });
- callback && callback();
- };
- return {
- getAllOpts: _getAllOpts,
- getOptions: _getOptions,
- setOptions: _setOptions
- };
- })();
|