Fixed an issue where the connection wasn't being closed when the user switched

to a new connection and closed the query tool. Fixes #7461

Fixed the 'Show activity?' issue which was missed during Dashboard porting.
This commit is contained in:
Pradip Parkale
2022-06-23 18:15:16 +05:30
committed by Akshay Joshi
parent 2556771c32
commit e95eb14651
5 changed files with 64 additions and 74 deletions

View File

@@ -288,16 +288,6 @@ export default class SQLEditor {
panelTitleFunc.setQueryToolDockerTitle(queryToolPanel, is_query_tool, _.unescape(panel_title));
queryToolPanel.focus();
// Listen on the panel closed event.
if (queryToolPanel.isVisible()) {
queryToolPanel.on(wcDocker.EVENT.CLOSED, function() {
$.ajax({
url: closeUrl,
method: 'DELETE',
});
});
}
queryToolPanel.on(wcDocker.EVENT.VISIBILITY_CHANGED, function() {
queryToolPanel.trigger(wcDocker.EVENT.RESIZED);
});

View File

@@ -346,6 +346,15 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
}, []);
useEffect(()=>{
const closeConn = ()=>{
api.delete(
url_for('sqleditor.close', {
'trans_id': qtState.params.trans_id,
})
);
};
window.addEventListener('unload', closeConn);
const pushHistory = (h)=>{
api.post(
url_for('sqleditor.add_query_history', {
@@ -355,7 +364,10 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
).catch((error)=>{console.error(error);});
};
eventBus.current.registerListener(QUERY_TOOL_EVENTS.PUSH_HISTORY, pushHistory);
return ()=>{eventBus.current.deregisterListener(QUERY_TOOL_EVENTS.PUSH_HISTORY, pushHistory);};
return ()=>{
eventBus.current.deregisterListener(QUERY_TOOL_EVENTS.PUSH_HISTORY, pushHistory);
window.removeEventListener('unload', closeConn);
};
}, [qtState.params.trans_id]);

View File

@@ -42,21 +42,6 @@
window.pgAdmin.Tools.SQLEditor.loadComponent(
document.getElementById('sqleditor-container'), {{ params|safe }});
if(window.opener) {
$(window).on('unload', function(ev) {
$.ajax({
method: 'DELETE',
url: '{{close_url}}'
});
});
} else {
$(window).on('beforeunload', function(ev) {
$.ajax({
method: 'DELETE',
url: '{{close_url}}'
});
});
}
}, function() {
console.log(arguments);
});