From 6ebde04d221b02d630ff6a176b000800b954499c Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Sat, 14 May 2016 12:24:24 +0900 Subject: [PATCH] add ConfigManager & ZoomManager --- browser/main/lib/ConfigManager.js | 45 +++++++++++++++++++++++++++++++ browser/main/lib/ZoomManager.js | 30 +++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 browser/main/lib/ConfigManager.js create mode 100644 browser/main/lib/ZoomManager.js diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js new file mode 100644 index 00000000..71153544 --- /dev/null +++ b/browser/main/lib/ConfigManager.js @@ -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 +} diff --git a/browser/main/lib/ZoomManager.js b/browser/main/lib/ZoomManager.js new file mode 100644 index 00000000..463df222 --- /dev/null +++ b/browser/main/lib/ZoomManager.js @@ -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 +}