Fixed an issue where object explorer last tree state was not saving. #7066
parent
41a62c8082
commit
cede5cf899
|
@ -57,29 +57,47 @@ _.extend(pgBrowser.browserTreeState, {
|
||||||
|
|
||||||
init: function() {
|
init: function() {
|
||||||
|
|
||||||
const save_tree_state_period = usePreferences.getState().getPreferences('browser', 'browser_tree_state_save_interval');
|
let saveIntervalId, offExpandFromPrevState, offRemoveFromTreeState, offUpdateTreeState;
|
||||||
|
usePreferences.subscribe((prefStore)=>{
|
||||||
|
// Subscribe to listen for preferences change
|
||||||
|
const save_tree_state_period = prefStore.getPreferences('browser', 'browser_tree_state_save_interval')?.value;
|
||||||
|
if (saveIntervalId) {
|
||||||
|
clearInterval(saveIntervalId);
|
||||||
|
saveIntervalId = null;
|
||||||
|
offEventListener();
|
||||||
|
}
|
||||||
|
if (!_.isUndefined(save_tree_state_period) && save_tree_state_period !== -1) {
|
||||||
|
// Save the tree state at given save_tree_state_period
|
||||||
|
saveIntervalId = setInterval(this.save_state, (save_tree_state_period) * 1000);
|
||||||
|
this.fetch_state.apply(this);
|
||||||
|
onEventListener();
|
||||||
|
} else if (!_.isUndefined(save_tree_state_period)) {
|
||||||
|
offEventListener();
|
||||||
|
getApiInstance().delete(url_for('settings.reset_tree_state'))
|
||||||
|
.catch(function(error) {
|
||||||
|
console.warn(
|
||||||
|
gettext('Error resetting the tree saved state."'), error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (!_.isUndefined(save_tree_state_period) && save_tree_state_period.value !== -1) {
|
const onEventListener = () => {
|
||||||
// Save the tree state every 30 seconds
|
// Register event listener
|
||||||
setInterval(this.save_state, (save_tree_state_period.value) * 1000);
|
offExpandFromPrevState = pgBrowser.Events.on('pgadmin:browser:tree:expand-from-previous-tree-state',
|
||||||
|
|
||||||
// Fetch the tree last state while loading the browser tree
|
|
||||||
this.fetch_state.apply(this);
|
|
||||||
|
|
||||||
pgBrowser.Events.on('pgadmin:browser:tree:expand-from-previous-tree-state',
|
|
||||||
this.expand_from_previous_state.bind(this));
|
this.expand_from_previous_state.bind(this));
|
||||||
pgBrowser.Events.on('pgadmin:browser:tree:remove-from-tree-state',
|
offRemoveFromTreeState = pgBrowser.Events.on('pgadmin:browser:tree:remove-from-tree-state',
|
||||||
this.remove_from_cache.bind(this));
|
this.remove_from_cache.bind(this));
|
||||||
pgBrowser.Events.on('pgadmin:browser:tree:update-tree-state',
|
offUpdateTreeState = pgBrowser.Events.on('pgadmin:browser:tree:update-tree-state',
|
||||||
this.update_cache.bind(this));
|
this.update_cache.bind(this));
|
||||||
} else if (!_.isUndefined(save_tree_state_period)) {
|
};
|
||||||
getApiInstance().delete(url_for('settings.reset_tree_state'))
|
|
||||||
.catch(function(error) {
|
|
||||||
console.warn(
|
|
||||||
gettext('Error resetting the tree saved state."'), error);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
const offEventListener = () => {
|
||||||
|
// Deregister event listener
|
||||||
|
offExpandFromPrevState?.();
|
||||||
|
offRemoveFromTreeState?.();
|
||||||
|
offUpdateTreeState?.();
|
||||||
|
};
|
||||||
|
|
||||||
},
|
},
|
||||||
save_state: function() {
|
save_state: function() {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue