From eb517e6df8b13bfe05fb52e1a72ee5d19bc6baf2 Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Thu, 2 Jan 2025 13:24:13 +0530 Subject: [PATCH] =?UTF-8?q?Fixed=20following=20issues=20for=20Workspace:?= =?UTF-8?q?=201.=20On=20the=20welcome=20page,=20the=20Password=20should=20?= =?UTF-8?q?be=20cleared=20when=20the=20user/db=20is=20changed.=202.=20Adde?= =?UTF-8?q?d=20a=C2=A0spinner=20when=20we=20tried=20to=20connect=20to=20th?= =?UTF-8?q?e=20existing=20remote=20server.=203.=20Details=20should=20be=20?= =?UTF-8?q?cleared=20when=20we=20select=20the=20existing=20server=20but=20?= =?UTF-8?q?cancel=20when=20it=20asks=20for=20the=20password.=204)=20Return?= =?UTF-8?q?=20from=20the=20chageWorkspace=C2=A0function=20if=20clicking=20?= =?UTF-8?q?on=20the=20same=20workspace=20button=20multiple=20times.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workspaces/static/js/AdHocConnection.jsx | 26 ++++++++++++------- .../static/js/WorkspaceProvider.jsx | 2 +- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/web/pgadmin/misc/workspaces/static/js/AdHocConnection.jsx b/web/pgadmin/misc/workspaces/static/js/AdHocConnection.jsx index 09e34a452..cdaa1e65c 100644 --- a/web/pgadmin/misc/workspaces/static/js/AdHocConnection.jsx +++ b/web/pgadmin/misc/workspaces/static/js/AdHocConnection.jsx @@ -146,15 +146,16 @@ class AdHocConnectionSchema extends BaseUISchema { self.flatServers, (s) => s.value == state.sid ); return { - server_name: selectedServer?.label, + server_name: null, did: null, user: null, role: null, sid: null, - host: selectedServer?.host, - port: selectedServer?.port, - service: selectedServer?.service, - connection_params: selectedServer?.connection_params, + host: null, + port: null, + service: null, + connection_params: null, + password: null, connected: selectedServer?.connected }; }, @@ -165,13 +166,13 @@ class AdHocConnectionSchema extends BaseUISchema { if(sid && !_.find(self.flatServers, (s) => s.value == sid)?.connected) { this.connectExistingServer(sid, state.user, null, (data) => { self.setServerConnected(sid, data.icon); - resolve(() => ({ sid: sid, host: selectedServer?.host, + resolve(() => ({ sid: sid, server_name:selectedServer?.label, host: selectedServer?.host, port: selectedServer?.port, service: selectedServer?.service, connection_params: selectedServer?.connection_params, connected: true })); }); } else { - resolve(()=>({ sid: sid, host: selectedServer?.host, + resolve(()=>({ sid: sid, server_name:selectedServer?.label, host: selectedServer?.host, port: selectedServer?.port, service: selectedServer?.service, connection_params: selectedServer?.connection_params, connected: true })); @@ -236,7 +237,12 @@ class AdHocConnectionSchema extends BaseUISchema { maxLength: null, autoComplete: 'new-password' }, - deps: ['sid', 'connected'], + deps: ['sid', 'did', 'user', 'role'], + depChange: (state, source)=> { + if (source == 'sid' || source == 'did' || source == 'user' || source == 'role') { + state.password = null; + } + } },{ id: 'role', label: gettext('Role'), deps: ['sid', 'connected'], controlProps: {creatable: true}, @@ -433,19 +439,21 @@ export default function AdHocConnection({mode}) { }; const onSaveClick = async (isNew, formData) => { + setConnecting(true); try { let {data: respData} = await api({ method: 'POST', url: url_for('workspace.adhoc_connect_server'), data: JSON.stringify(formData) }); - + setConnecting(false); if (mode == 'Query Tool') { openQueryTool(respData, formData); } else if (mode == 'PSQL') { openPSQLTool(respData, formData); } } catch (error) { + setConnecting(false); if(!error.response) { pgAdmin.Browser.notifier.pgNotifier('error', error, 'Connection error', gettext('Connect to server.')); } else { diff --git a/web/pgadmin/misc/workspaces/static/js/WorkspaceProvider.jsx b/web/pgadmin/misc/workspaces/static/js/WorkspaceProvider.jsx index 31424914b..bda995764 100644 --- a/web/pgadmin/misc/workspaces/static/js/WorkspaceProvider.jsx +++ b/web/pgadmin/misc/workspaces/static/js/WorkspaceProvider.jsx @@ -56,6 +56,7 @@ export function WorkspaceProvider({children}) { const changeWorkspace = (newVal)=>{ // Set the currentWorkspace flag. + if (currentWorkspace == newVal) return; pgAdmin.Browser.docker.currentWorkspace = newVal; if (newVal == WORKSPACES.DEFAULT) { setTimeout(() => { @@ -76,7 +77,6 @@ export function WorkspaceProvider({children}) { const hasOpenTabs = (forWs)=>{ const wsConfig = config.find((i)=>i.workspace == forWs); if(wsConfig) { - //return Boolean(pgAdmin.Browser.docker[wsConfig.docker]?.layoutObj?.getRootElement().querySelector('.dock-tab')); return Boolean(pgAdmin.Browser.docker[wsConfig.docker]?.layoutObj?.getLayout()?.dockbox?.children?.[0]?.tabs?.length); } return true;