Browse Source

Rework RemoveFunctionFn and ClearData to deal with sessions.

We also no longer load the tab if it's not already enabled.

Fixes #166.
pull/3202/head
TheGoddessInari 5 years ago
parent
commit
a550861506
No known key found for this signature in database
GPG Key ID: 1209B1B7632D69A
  1. 36
      app/view/main/MainController.js

36
app/view/main/MainController.js

@ -134,38 +134,40 @@ Ext.define('Hamsket.view.main.MainController', {
// Get Record // Get Record
const rec = Ext.getStore('Services').getById(serviceId); const rec = Ext.getStore('Services').getById(serviceId);
const {session: rsession} = require('electron').remote;
if ( !rec.get('enabled') ) { if ( !rec.get('enabled') ) {
rec.set('enabled', true); const session = rsession.fromPartition(`persist:${rec.get('type')}_${serviceId}`);
me.onEnableDisableService(null, Ext.getStore('Services').indexOf(rec), true, null, true); clearData(session, null, resolve);
const tab = Ext.getCmp('tab_'+serviceId);
const webcontents = tab.getWebContents();
webview.addEventListener("did-start-loading", function() {
clearData(webcontents, tab, resolve);
});
} else { } else {
// Get Tab // Get Tab
// Clear all trash data // Clear all trash data
const tab = Ext.getCmp('tab_'+serviceId); const tab = Ext.getCmp('tab_'+serviceId);
const webcontents = tab.getWebContents(); const session = rsession.fromPartition(tab.getWebView().partition);
clearData(webcontents, tab, resolve); clearData(session, tab, resolve);
} }
const config = ipc.sendSync('getConfig'); const config = ipc.sendSync('getConfig');
if ( config.default_service === rec.get('id') ) ipc.send('setConfig', Ext.apply(config, { default_service: 'hamsketTab' })); if ( config.default_service === rec.get('id') ) ipc.send('setConfig', Ext.apply(config, { default_service: 'hamsketTab' }));
function clearData(webcontents, tab, resolve) { function clearData(session, tab, resolve) {
webcontents.clearHistory(); session.flushStorageData();
webcontents.session.flushStorageData(); session.clearCache()
webcontents.session.clearCache() .then(session.clearStorageData)
.then(webcontents.session.clearStorageData) .then(session.cookies.flushStore)
.then(webcontents.session.cookies.flushStore) .catch(err => {
console.error(`Error removing service data: ${rec.name} ${err}`);
Ext.Msg.alert(
'Error!',
`Error removing service data: ${rec.name}: ${err}`
);
})
.finally(function() { .finally(function() {
// Remove record from localStorage // Remove record from localStorage
Ext.getStore('Services').remove(rec); Ext.getStore('Services').remove(rec);
// Close tab // Close tab
tab.close(); if (tab) tab.close();
session.destroy();
if ( Ext.isFunction(resolve) ) resolve(); if ( Ext.isFunction(resolve) ) resolve();
// Close waiting message // Close waiting message
if ( total === actual ) { if ( total === actual ) {

Loading…
Cancel
Save