From 47ea474555210e1de87cc169f3335deb47f4d8a0 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 29 Apr 2021 11:28:32 +0200 Subject: [PATCH] settings optimalization --- packages/api/src/controllers/config.js | 20 ++++++++++++------- .../src/controllers/databaseConnections.js | 2 +- .../api/src/controllers/serverConnections.js | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/api/src/controllers/config.js b/packages/api/src/controllers/config.js index 088af6656..4f6e05e33 100644 --- a/packages/api/src/controllers/config.js +++ b/packages/api/src/controllers/config.js @@ -9,6 +9,16 @@ const currentVersion = require('../currentVersion'); const platformInfo = require('../utility/platformInfo'); module.exports = { + settingsValue: {}, + + async _init() { + try { + this.settingsValue = JSON.parse(await fs.readFile(path.join(datadir(), 'settings.json'), { encoding: 'utf-8' })); + } catch (err) { + this.settingsValue = {}; + } + }, + get_meta: 'get', async get() { // const toolbarButtons = process.env.TOOLBAR; @@ -47,23 +57,19 @@ module.exports = { getSettings_meta: 'get', async getSettings() { - try { - return JSON.parse(await fs.readFile(path.join(datadir(), 'settings.json'), { encoding: 'utf-8' })); - } catch (err) { - return {}; - } + return this.settingsValue; }, updateSettings_meta: 'post', async updateSettings(values) { if (!hasPermission(`settings/change`)) return false; - const oldSettings = await this.getSettings(); try { const updated = { - ...oldSettings, + ...this.settingsValue, ...values, }; await fs.writeFile(path.join(datadir(), 'settings.json'), JSON.stringify(updated, undefined, 2)); + this.settingsValue = updated; socket.emitChanged(`settings-changed`); return updated; } catch (err) { diff --git a/packages/api/src/controllers/databaseConnections.js b/packages/api/src/controllers/databaseConnections.js index e56010538..f8c49c345 100644 --- a/packages/api/src/controllers/databaseConnections.js +++ b/packages/api/src/controllers/databaseConnections.js @@ -80,7 +80,7 @@ module.exports = { msgtype: 'connect', connection: { ...connection, database }, structure: lastClosed ? lastClosed.structure : null, - globalSettings: await config.getSettings() + globalSettings: config.settingsValue }); return newOpened; }, diff --git a/packages/api/src/controllers/serverConnections.js b/packages/api/src/controllers/serverConnections.js index 97548d5fa..e9d253298 100644 --- a/packages/api/src/controllers/serverConnections.js +++ b/packages/api/src/controllers/serverConnections.js @@ -66,7 +66,7 @@ module.exports = { if (newOpened.disconnected) return; this.close(conid, false); }); - subprocess.send({ msgtype: 'connect', ...connection, globalSettings: await config.getSettings() }); + subprocess.send({ msgtype: 'connect', ...connection, globalSettings: config.settingsValue }); return newOpened; }); return res;