UNPKG

electorrent

Version:

An Electron/Node/AngularJS remote client app for uTorrent server

114 lines (94 loc) 2.2 kB
const fs = require('fs'); const path = require('path'); const {app} = require('electron'); var data = null; var defaultSettings = { server: { }, ui: { resizeMode: 'FixedResizer', notifications: true } }; const dataFilePath = path.join(app.getPath('userData'), 'config.json'); load(); function load() { if (data !== null) { return; } if (!fs.existsSync(dataFilePath)) { data = copy(defaultSettings); return; } data = JSON.parse(fs.readFileSync(dataFilePath, 'utf-8')); } function save(callback) { fs.writeFile(dataFilePath, JSON.stringify(data, null, 4), callback); } function saveSync() { fs.writeFileSync(dataFilePath, JSON.stringify(data, null, 4)); } function copy(object) { if (object === null){ return object; } else if (typeof object === 'object'){ if (Array.isArray(object)){ return copyArray(object); } else { return copyObject(object); } } else { return object; } } function copyObject(_obj){ var copyObj = {} for (var key in _obj) { if (_obj.hasOwnProperty(key)) { copyObj[key] = copy(_obj[key]) } } return copyObj; } function copyArray(_obj){ var copyArray = [] for (var i = 0; i < _obj.length; i++){ copyArray[i] = copy(_obj[i]) } return copyArray; } exports.put = function (key, value, callback) { load(); data[key] = value; save(callback); } exports.getAllSettings = function() { load(); return copy(data); } exports.settingsReference = function() { return data; } exports.write = function() { saveSync(); } exports.saveAll = function(settings, callback) { load(); data = settings; save(callback) } exports.get = function (key) { load(); var value = null; if (key in data) { value = copy(data[key]); } return value; } exports.unset = function (key, callback) { load(); if (key in data) { delete data[key]; save(callback); } }