mirror of
https://github.com/marktext/marktext.git
synced 2025-05-19 02:10:34 +08:00
52 lines
1.4 KiB
JavaScript
52 lines
1.4 KiB
JavaScript
import fs from 'fs'
|
|
import path from 'path'
|
|
import { app, Menu } from 'electron'
|
|
|
|
const JSON_REG = /```json(.+)```/g
|
|
const preferencePath = path.join(__static, 'preference.md')
|
|
let PREFERENCE_CACHE = null
|
|
|
|
export const getMenuItem = menuName => {
|
|
const menus = Menu.getApplicationMenu()
|
|
return menus.items.find(menu => menu.label === menuName)
|
|
}
|
|
|
|
export const getUserPreference = () => {
|
|
if (PREFERENCE_CACHE) {
|
|
return PREFERENCE_CACHE
|
|
} else {
|
|
const content = fs.readFileSync(preferencePath, 'utf-8')
|
|
try {
|
|
const userSetting = JSON_REG.exec(content.replace(/\n/g, ''))[1]
|
|
PREFERENCE_CACHE = JSON.parse(userSetting)
|
|
return PREFERENCE_CACHE
|
|
} catch (err) {
|
|
// todo notice the user
|
|
console.log(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
export const setUserPreference = (key, value) => {
|
|
const preUserSetting = getUserPreference()
|
|
const newUserSetting = PREFERENCE_CACHE = Object.assign({}, preUserSetting, { [key]: value })
|
|
|
|
return new Promise((resolve, reject) => {
|
|
const content = fs.readFileSync(preferencePath, 'utf-8')
|
|
const tokens = content.split('```')
|
|
const newContent = tokens[0] +
|
|
'```json\n' +
|
|
JSON.stringify(newUserSetting, null, 2) +
|
|
'\n```' +
|
|
tokens[2]
|
|
fs.writeFile(preferencePath, newContent, 'utf-8', err => {
|
|
if (err) reject(err)
|
|
else resolve(newUserSetting)
|
|
})
|
|
})
|
|
}
|
|
|
|
export const getPath = directory => {
|
|
return app.getPath(directory)
|
|
}
|