diff --git a/src/main/browser-store.js b/src/main/browser-store.js index 8c00f537..581a0548 100644 --- a/src/main/browser-store.js +++ b/src/main/browser-store.js @@ -124,6 +124,19 @@ class BrowserStore extends ServiceWorkerComponent { }); } + // eslint-disable-next-line class-methods-use-this + clear() { + return new Promise((resolve, reject) => { + chrome.storage.local.clear(() => { + if (chrome.runtime.lastError) { + reject(chrome.runtime.lastError); + } else { + resolve(); + } + }); + }); + } + list() { return new Promise((resolve, reject) => { chrome.storage.local.get(null, (items) => { diff --git a/src/main/connect-locator.js b/src/main/connect-locator.js index 77e4eefd..7f078f4a 100644 --- a/src/main/connect-locator.js +++ b/src/main/connect-locator.js @@ -37,8 +37,8 @@ class ConnectLocator extends ServiceWorkerComponent { return this.worker.serverConnector .asRuntimeInfo() .then((info) => ({ connectRegistration: { connectUrl: undefined }, ...info })) - .then(({ serverUrl: nuxeoUrl, connectRegistration: { connectUrl } }) => { - if (!connectUrl) { + .then(({ serverUrl: nuxeoUrl, connectRegistration: { connectUrl: connectLocation } }) => { + if (!connectLocation) { return { location: 'about:blank', credentials: undefined @@ -54,7 +54,7 @@ class ConnectLocator extends ServiceWorkerComponent { .then(() => this.asRegistration()); } return this.worker.browserStore - .get({ [nuxeoKey]: connectUrl }) + .get({ [nuxeoKey]: connectLocation }) .then((store) => new URL(store[nuxeoKey])) .then((location) => ({ location, credentialsKey: this.credentialsKeyOf(location) })) .then(({ location, credentialsKey }) => this.worker.browserStore.get({ [credentialsKey]: undefined }) diff --git a/src/main/service-worker.js b/src/main/service-worker.js index d8e9c998..1ad945c0 100644 --- a/src/main/service-worker.js +++ b/src/main/service-worker.js @@ -89,6 +89,20 @@ class ServiceWorkerComponentInventory extends ServiceWorkerComponent { const componentNames = this.componentNamesOf(this.worker, recursive); return Promise.resolve(componentNames); } + + reset() { + return this + .worker + .browserStore + .clear() + .then(() => chrome.runtime.reload()); + } + + reload() { + return this + .asPromise() + .then(() => chrome.runtime.reload()); + } } class ServiceWorker extends ServiceWorkerComponent { diff --git a/src/popup/index.js b/src/popup/index.js index 79137692..3f83263c 100644 --- a/src/popup/index.js +++ b/src/popup/index.js @@ -278,7 +278,7 @@ function loadPage(worker) { ? worker.connectLocator.asRegistration(value) : worker.connectLocator.asRegistration(); return registration - .then(({ location }) => (field.val(location), location)); + .then(({ location }) => (field.val(location), new URL(location))); })); // studio package name @@ -300,12 +300,7 @@ function loadPage(worker) { Promise .all(savingPromises) - // eslint-disable-next-line no-unused-vars, no-shadow - .then(([{ connectUrl }, packageName, highlight]) => { - studioPackageFound(connectUrl, packageName); - checkDependencyMismatch(); - }) - .then(() => worker.tabNavigationHandler.reloadServerTab()); + .then(() => worker.componentInventory.reload()); }); $('#reset').click(() => { @@ -317,18 +312,7 @@ function loadPage(worker) { cancelButtonText: 'Cancel', }).then((result) => { if (!result.isConfirmed) return; - Promise.all([ - worker.connectLocator - .asRegistration('https://connect.nuxeo.com'), - worker.jsonHighlighter - .withHighlight(true) - ]) - .then(() => { - $('#connect-url-input').val(''); - $('#connect-url').hide(); - $('#studio-package-name-input').hide(); - $('#highlight-input').prop('checked', true); - }); + worker.componentInventory.reset(); }); });