mirror of
https://github.com/earthjasonlin/zzz-signal-search-export.git
synced 2025-04-21 07:50:19 +08:00
Departure commit
This commit is contained in:
77
src/main/config.js
Normal file
77
src/main/config.js
Normal file
@ -0,0 +1,77 @@
|
||||
const { readJSON, saveJSON, decipherAes, cipherAes, detectLocale } = require('./utils')
|
||||
|
||||
const config = {
|
||||
urls: [],
|
||||
logType: 0,
|
||||
lang: detectLocale(),
|
||||
current: 0,
|
||||
proxyPort: 8325,
|
||||
proxyMode: false,
|
||||
autoUpdate: true,
|
||||
fetchFullHistory: false,
|
||||
hideNovice: false
|
||||
}
|
||||
|
||||
const getLocalConfig = async () => {
|
||||
const localConfig = await readJSON('config.json')
|
||||
if (!localConfig) return
|
||||
const configTemp = {}
|
||||
for (let key in localConfig) {
|
||||
if (typeof config[key] !== 'undefined') {
|
||||
configTemp[key] = localConfig[key]
|
||||
}
|
||||
}
|
||||
configTemp.urls.forEach(item => {
|
||||
try {
|
||||
item[1] = decipherAes(item[1])
|
||||
} catch (e) {
|
||||
item[1] = ''
|
||||
}
|
||||
})
|
||||
Object.assign(config, configTemp)
|
||||
}
|
||||
|
||||
getLocalConfig()
|
||||
|
||||
let urlsMap = null
|
||||
const setConfig = (key, value) => {
|
||||
Reflect.set(config, key, value)
|
||||
}
|
||||
|
||||
const saveConfig = async () => {
|
||||
let configTemp = config
|
||||
if (urlsMap) {
|
||||
const urls = [...urlsMap]
|
||||
urls.forEach(item => {
|
||||
try {
|
||||
item[1] = cipherAes(item[1])
|
||||
} catch (e) {
|
||||
item[1] = ''
|
||||
}
|
||||
})
|
||||
configTemp = Object.assign({}, config, { urls })
|
||||
}
|
||||
await saveJSON('config.json', configTemp)
|
||||
}
|
||||
|
||||
const getPlainConfig = () => config
|
||||
|
||||
const configProxy = new Proxy(config, {
|
||||
get: function (obj, prop) {
|
||||
if (prop === 'urls') {
|
||||
if (!urlsMap) {
|
||||
urlsMap = new Map(obj[prop])
|
||||
}
|
||||
return urlsMap
|
||||
} else if (prop === 'set') {
|
||||
return setConfig
|
||||
} else if (prop === 'save') {
|
||||
return saveConfig
|
||||
} else if (prop === 'value') {
|
||||
return getPlainConfig
|
||||
}
|
||||
return obj[prop]
|
||||
}
|
||||
})
|
||||
|
||||
module.exports = configProxy
|
Reference in New Issue
Block a user