converse-desktop/app/services/settings-service.js

110 lines
3.3 KiB
JavaScript
Raw Normal View History

2020-05-12 15:06:16 +00:00
let angApp = require(__dirname+'/../init')
angApp.factory('SettingsService', () => {
let settingsService = {}
const electronSettings = require('electron-settings')
const settings = {
2020-08-07 11:53:57 +00:00
converseDesktop: {
2020-05-12 15:06:16 +00:00
runMinimized: {
default: false,
title: 'Run minimized',
2020-08-07 11:53:57 +00:00
hint: 'Default: false. Whether run Converse Desktop minimized to tray or not.'
2020-05-12 15:06:16 +00:00
},
minimizeOnClose: {
default: false,
title: 'Minimize on close',
2020-08-07 11:53:57 +00:00
hint: 'Default: false. Minimize or close Converse Desktop window.'
2020-05-12 15:06:16 +00:00
},
preserveWindowSize: {
default: true,
title: 'Preserve window size',
hint: 'Default: true, 800x600 otherwise.'
},
preserveWindowPosition: {
default: true,
title: 'Preserve window position',
hint: 'Default: true, screen center otherwise.'
}
},
conversejs: {
allowBookmarks: {
default: false,
title: 'Allow server bookmarks',
hint: 'Default: false. Enables/disables chatroom bookmarks functionality.'
},
omemoDefault: {
default: false,
title: 'Use OMEMO encryption by default',
hint: 'Default: false. Use OMEMO encryption by default when the chat supports it.'
2020-05-12 15:06:16 +00:00
}
}
}
const iterateSettings = (callback, settingsObj) => {
if(typeof settingsObj === "undefined") {
settingsObj = settings
}
angular.forEach(settingsObj, (value, key) => {
let settingsList = settingsObj[key]
angular.forEach(settingsList, (value, key) => {
let itemDefault = settingsList[key]['default']
callback(key, itemDefault, settingsList)
})
})
}
// Callback
// TODO: replace with promise?
const saveDefault = (key, value) => {
2021-02-13 02:52:49 +00:00
if (!electronSettings.hasSync(key)) {
electronSettings.setSync(key, value)
2020-05-12 15:06:16 +00:00
}
}
// Callback
const save = (key, defaultValue, settingsList) => {
let value = settingsList[key]['value']
2021-02-13 02:52:49 +00:00
electronSettings.setSync(key, value)
2020-05-12 15:06:16 +00:00
}
// Callback
const loadAll = (key, defaultValue, settingsList) => {
2021-02-13 02:52:49 +00:00
if (!electronSettings.hasSync(key)) {
2020-05-12 15:06:16 +00:00
settingsList[key]['value'] = defaultValue
}
2021-02-13 02:52:49 +00:00
settingsList[key]['value'] = electronSettings.getSync(key)
2020-05-12 15:06:16 +00:00
}
/**
* SettingsService
*/
settingsService.initDefaults = () => {
iterateSettings(saveDefault)
// Logout for versions with BOSH only
2021-02-13 02:52:49 +00:00
if (electronSettings.hasSync('bosh')) {
electronSettings.unsetSync('bosh')
electronSettings.unsetSync('login')
}
2020-05-12 15:06:16 +00:00
}
settingsService.get = (key) => {
2021-02-13 02:52:49 +00:00
return electronSettings.getSync(key)
2020-05-12 15:06:16 +00:00
}
settingsService.loadAll = () => {
let currentSettings = angular.copy(settings)
iterateSettings(loadAll, currentSettings)
return currentSettings
}
settingsService.saveAll = (currentSettings) => {
iterateSettings(save, currentSettings)
}
return settingsService
})