1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 17:56:25 +00:00

add ConfigManager & ZoomManager

This commit is contained in:
Rokt33r
2016-05-14 12:24:24 +09:00
parent 9deaa8694e
commit 6ebde04d22
2 changed files with 75 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
import _ from 'lodash'
const defaultConfig = {
zoom: 1,
isSideNavFolded: false
}
function _validate (config) {
if (!_.isObject(config)) return false
if (!_.isNumber(config.zoom) || config.zoom < 0) return false
if (!_.isBoolean(config.isSideNavFolded)) return false
return true
}
function _save (config) {
window.localStorage.setItem('config', JSON.stringify(config))
}
function get () {
let config = window.localStorage.getItem('config')
try {
config = JSON.parse(config)
if (!_validate(config)) throw new Error('INVALID CONFIG')
} catch (err) {
console.warn('Boostnote resets the malformed configuration.')
config = defaultConfig
_save(config)
}
return config
}
function set (updates) {
let currentConfig = get()
let newConfig = Object.assign({}, defaultConfig, currentConfig, updates)
if (!_validate(newConfig)) throw new Error('INVALID CONFIG')
_save(newConfig)
}
export default {
get,
set
}

View File

@@ -0,0 +1,30 @@
import ConfigManager from './ConfigManager'
const electron = require('electron')
const { remote } = electron
_init()
function _init () {
setZoom(getZoom(), true)
}
function _saveZoom (zoomFactor) {
ConfigManager.set({zoom: zoomFactor})
}
function setZoom (zoomFactor, noSave = false) {
if (!noSave) _saveZoom(zoomFactor)
remote.getCurrentWebContents().setZoomFactor(zoomFactor)
}
function getZoom () {
let config = ConfigManager.get()
return config.zoom
}
export default {
setZoom,
getZoom
}