diff --git a/packages/api/src/controllers/config.js b/packages/api/src/controllers/config.js index f47c5245a..a7425ab72 100644 --- a/packages/api/src/controllers/config.js +++ b/packages/api/src/controllers/config.js @@ -289,16 +289,11 @@ module.exports = { const res = await lock.acquire('settings', async () => { const currentValue = await this.loadSettings(); try { - let updated = currentValue; + let updated = { + ...currentValue, + ...values, + }; if (process.env.STORAGE_DATABASE) { - updated = { - ...currentValue, - ..._.mapValues(values, v => { - if (v === true) return 'true'; - if (v === false) return 'false'; - return v; - }), - }; await storage.writeConfig({ group: 'settings', config: updated, diff --git a/packages/api/src/storageModel.js b/packages/api/src/storageModel.js index dfeb773eb..208358e5d 100644 --- a/packages/api/src/storageModel.js +++ b/packages/api/src/storageModel.js @@ -360,6 +360,12 @@ module.exports = { "columnName": "value", "dataType": "varchar(1000)", "notNull": false + }, + { + "pureName": "config", + "columnName": "valueType", + "dataType": "varchar(50)", + "notNull": false } ], "foreignKeys": [], diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 938d56bff..fdf6556b1 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -40,8 +40,6 @@ import { getSettings } from '../utility/metadataLoaders'; import { isMac, switchCurrentDatabase } from '../utility/common'; import { doLogout } from '../clientAuth'; import { disconnectServerConnection } from '../appobj/ConnectionAppObject.svelte'; -import UploadErrorModal from '../modals/UploadErrorModal.svelte'; -import ErrorMessageModal from '../modals/ErrorMessageModal.svelte'; import NewCollectionModal from '../modals/NewCollectionModal.svelte'; import ConfirmModal from '../modals/ConfirmModal.svelte'; import localforage from 'localforage'; @@ -73,7 +71,8 @@ registerCommand({ category: __t('command.theme', { defaultMessage: 'Theme' }), name: __t('command.theme.change', { defaultMessage: 'Change' }), toolbarName: __t('command.theme.changeToolbar', { defaultMessage: 'Change theme' }), - onClick: () => openNewTab({ + onClick: () => + openNewTab({ title: 'Settings', icon: 'icon settings', tabComponent: 'SettingsTab', @@ -1230,8 +1229,7 @@ registerCommand({ }, }); -if ( hasPermission('application-log')) -{ +if (hasPermission('application-log')) { registerCommand({ id: 'app.showLogs', category: __t('command.application', { defaultMessage: 'Application' }), @@ -1246,8 +1244,7 @@ if ( hasPermission('application-log')) }); } -if (hasPermission('widgets/plugins')) -{ +if (hasPermission('widgets/plugins')) { registerCommand({ id: 'app.managePlugins', category: __t('command.application', { defaultMessage: 'Application' }), diff --git a/packages/web/src/settings/ConnectionSettings.svelte b/packages/web/src/settings/ConnectionSettings.svelte index 31903e5a4..0576be217 100644 --- a/packages/web/src/settings/ConnectionSettings.svelte +++ b/packages/web/src/settings/ConnectionSettings.svelte @@ -1,81 +1,64 @@
- +
{_t('settings.connection', { defaultMessage: 'Connection' })}
- { - $lockedDatabaseMode = !$lockedDatabaseMode; - }, - }} - > - ($lockedDatabaseMode = e.target.checked)} data-testid="ConnectionSettings_lockedDatabaseMode"/> - -
{_t('settings.session', { defaultMessage: 'Query sessions' })}
-
+
- \ No newline at end of file + diff --git a/packages/web/src/settings/GeneralSettings.svelte b/packages/web/src/settings/GeneralSettings.svelte index 364c6d939..c5fd0fe2d 100644 --- a/packages/web/src/settings/GeneralSettings.svelte +++ b/packages/web/src/settings/GeneralSettings.svelte @@ -10,6 +10,9 @@ import { isMac } from '../utility/common'; import getElectron from '../utility/getElectron'; import ConfirmModal from '../modals/ConfirmModal.svelte'; + import hasPermission from '../utility/hasPermission'; + import CheckboxField from '../forms/CheckboxField.svelte'; + import { lockedDatabaseMode } from '../stores'; const electron = getElectron(); let restartWarning = false; @@ -78,6 +81,24 @@ /> {/if} + { + $lockedDatabaseMode = !$lockedDatabaseMode; + }, + }} + > + ($lockedDatabaseMode = e.target['checked'])} + data-testid="ConnectionSettings_lockedDatabaseMode" + /> + +
{_t('settings.appearance', { defaultMessage: 'Appearance' })}
{#if electron} @@ -106,6 +127,7 @@ defaultMessage: 'Show server name alongside database name in title of the tab group', })} defaultValue={false} + disabled={!hasPermission('settings/change')} /> diff --git a/packages/web/src/settings/settingsTools.ts b/packages/web/src/settings/settingsTools.ts index 41028529d..8e2e2ec79 100644 --- a/packages/web/src/settings/settingsTools.ts +++ b/packages/web/src/settings/settingsTools.ts @@ -29,6 +29,13 @@ export function getStringSettingsValue(name, defaultValue) { return res; } +export function getObjectSettingsValue(name, defaultValue) { + const settings = getCurrentSettings(); + const res = settings[name]; + if (res == null) return defaultValue; + return res; +} + export function getConnectionClickActionSetting(): 'connect' | 'openDetails' | 'none' { return getStringSettingsValue('defaultAction.connectionClick', 'connect'); } diff --git a/packages/web/src/tabs/SettingsTab.svelte b/packages/web/src/tabs/SettingsTab.svelte index 290530b96..431a15ceb 100644 --- a/packages/web/src/tabs/SettingsTab.svelte +++ b/packages/web/src/tabs/SettingsTab.svelte @@ -3,111 +3,114 @@ - - \ No newline at end of file +