From c340ac91126b758e92f9c036ab07d729625d6995 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Sun, 25 Dec 2022 19:27:24 +0100 Subject: [PATCH] disconnect command --- app/src/mainMenuDefinition.js | 1 + packages/api/env/dblogin/.env | 6 +++--- packages/web/src/appobj/ConnectionAppObject.svelte | 3 ++- packages/web/src/commands/stdCommands.ts | 9 +++++++++ packages/web/src/utility/api.ts | 8 ++++++++ 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/src/mainMenuDefinition.js b/app/src/mainMenuDefinition.js index 8ce7056e0..04d846c61 100644 --- a/app/src/mainMenuDefinition.js +++ b/app/src/mainMenuDefinition.js @@ -21,6 +21,7 @@ module.exports = ({ editMenu }) => [ { divider: true }, { command: 'file.exit', hideDisabled: true }, { command: 'app.logout', hideDisabled: true, skipInApp: true }, + { command: 'app.disconnect', hideDisabled: true, skipInApp: true }, ], }, { diff --git a/packages/api/env/dblogin/.env b/packages/api/env/dblogin/.env index 5c47a7d05..da933f163 100644 --- a/packages/api/env/dblogin/.env +++ b/packages/api/env/dblogin/.env @@ -6,9 +6,9 @@ SINGLE_CONNECTION=mysql LABEL_mysql=MySql localhost SERVER_mysql=localhost -USER_mysql=root +# USER_mysql=root PORT_mysql=3306 -PASSWORD_mysql=Pwd2020Db +# PASSWORD_mysql=Pwd2020Db ENGINE_mysql=mysql@dbgate-plugin-mysql # PASSWORD_MODE_mysql=askPassword -# PASSWORD_MODE_mysql=askUser +PASSWORD_MODE_mysql=askUser diff --git a/packages/web/src/appobj/ConnectionAppObject.svelte b/packages/web/src/appobj/ConnectionAppObject.svelte index 5ff11e381..5c6c94dfb 100644 --- a/packages/web/src/appobj/ConnectionAppObject.svelte +++ b/packages/web/src/appobj/ConnectionAppObject.svelte @@ -52,6 +52,7 @@ const electron = getElectron(); const currentDb = getCurrentDatabase(); openedConnections.update(list => list.filter(x => x != conid)); + removeVolatileMapping(conid); if (electron) { apiCall('server-connections/disconnect', { conid }); } @@ -100,7 +101,7 @@ import getConnectionLabel from '../utility/getConnectionLabel'; import { getDatabaseList, useUsedApps } from '../utility/metadataLoaders'; import { getLocalStorage } from '../utility/storageCache'; - import { apiCall } from '../utility/api'; + import { apiCall, removeVolatileMapping } from '../utility/api'; import ImportDatabaseDumpModal from '../modals/ImportDatabaseDumpModal.svelte'; import { closeMultipleTabs } from '../widgets/TabsPanel.svelte'; import AboutModal from '../modals/AboutModal.svelte'; diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 6a0b7f054..039cb005d 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -37,6 +37,7 @@ import { openWebLink } from '../utility/exportFileTools'; import { getSettings } from '../utility/metadataLoaders'; import { isMac } from '../utility/common'; import { doLogout, internalRedirectTo } from '../clientAuth'; +import { disconnectServerConnection } from '../appobj/ConnectionAppObject.svelte'; // function themeCommand(theme: ThemeDefinition) { // return { @@ -552,6 +553,14 @@ registerCommand({ onClick: doLogout, }); +registerCommand({ + id: 'app.disconnect', + category: 'App', + name: 'Disconnect', + testEnabled: () => getCurrentConfig()?.singleConnection != null, + onClick: () => disconnectServerConnection(getCurrentConfig()?.singleConnection?._id), +}); + export function registerFileCommands({ idPrefix, category, diff --git a/packages/web/src/utility/api.ts b/packages/web/src/utility/api.ts index c95f2c146..eb47fd55a 100644 --- a/packages/web/src/utility/api.ts +++ b/packages/web/src/utility/api.ts @@ -39,6 +39,14 @@ export function getVolatileRemappingInv(conid) { return volatileConnectionMapInv[conid] || conid; } +export function removeVolatileMapping(conid) { + const mapped = volatileConnectionMap[conid]; + if (mapped) { + delete volatileConnectionMap[conid]; + delete volatileConnectionMapInv[mapped]; + } +} + function wantEventSource() { if (!eventSource) { eventSource = new EventSource(`${resolveApi()}/stream`);