From 35b31dd0872ed81da7f004138e40b68a4b7e6b51 Mon Sep 17 00:00:00 2001 From: Vijay Aravamudhan Date: Sun, 26 Sep 2021 11:14:23 +0530 Subject: refactor: remove references to 'electron/remote' - part deux (#1987) --- recipes | 2 +- src/api/server/LocalApi.ts | 13 ++++--------- src/electron/ipc-api/index.ts | 2 ++ src/electron/ipc-api/sessionStorage.ts | 35 ++++++++++++++++++++++++++++++++++ src/stores/AppStore.js | 2 +- src/stores/UserStore.js | 7 +++---- src/webview/lib/RecipeWebview.js | 4 ++-- src/webview/sessionHandler.ts | 13 ------------- 8 files changed, 48 insertions(+), 30 deletions(-) create mode 100644 src/electron/ipc-api/sessionStorage.ts diff --git a/recipes b/recipes index a8115f7e9..882da3870 160000 --- a/recipes +++ b/recipes @@ -1 +1 @@ -Subproject commit a8115f7e952458329a657b49b23573163bc3c804 +Subproject commit 882da387029a0026e4417aae4224bcf8df3ce266 diff --git a/src/api/server/LocalApi.ts b/src/api/server/LocalApi.ts index 9a6ab2a82..cc7822e78 100644 --- a/src/api/server/LocalApi.ts +++ b/src/api/server/LocalApi.ts @@ -1,5 +1,4 @@ import { ipcRenderer } from 'electron'; -import { session } from '@electron/remote'; import du from 'du'; import { getServicePartitionsDirectory } from '../../helpers/service-helpers'; @@ -41,12 +40,7 @@ export default class LocalApi { } async clearCache(serviceId: string | null = null) { - const s = serviceId - ? session.fromPartition(`persist:service-${serviceId}`) - : session.defaultSession; - - debug('LocalApi::clearCache resolves', serviceId || 'clearAppCache'); - await s.clearStorageData({ + const targetsToClear = { storages: [ 'appcache', 'filesystem', @@ -57,7 +51,8 @@ export default class LocalApi { 'cachestorage', ], quotas: ['temporary', 'persistent', 'syncable'], - }); - return s.clearCache(); + }; + ipcRenderer.send('clear-storage-data', { serviceId, targetsToClear }); + return ipcRenderer.invoke('clear-cache', { serviceId }); } } diff --git a/src/electron/ipc-api/index.ts b/src/electron/ipc-api/index.ts index 06c50be10..f03f61517 100644 --- a/src/electron/ipc-api/index.ts +++ b/src/electron/ipc-api/index.ts @@ -1,6 +1,7 @@ import { BrowserWindow, Tray } from 'electron'; import autoUpdate from './autoUpdate'; import settings from './settings'; +import sessionStorage from './sessionStorage'; import appIndicator from './appIndicator'; import download from './download'; import localServer from './localServer'; @@ -14,6 +15,7 @@ export default (params: { tray: Tray; }) => { settings(params); + sessionStorage(); autoUpdate(params); appIndicator(params); download(params); diff --git a/src/electron/ipc-api/sessionStorage.ts b/src/electron/ipc-api/sessionStorage.ts new file mode 100644 index 000000000..3eda568a1 --- /dev/null +++ b/src/electron/ipc-api/sessionStorage.ts @@ -0,0 +1,35 @@ +import { ipcMain, Session, session } from 'electron'; + +import { TODOS_PARTITION_ID } from '../../config'; + +const debug = require('debug')('Ferdi:ipcApi:sessionStorage'); + +function deduceSession(serviceId: string | undefined | null): Session { + if (serviceId) { + return session.fromPartition(serviceId === TODOS_PARTITION_ID ? TODOS_PARTITION_ID : `persist:service-${serviceId}`); + } + return session.defaultSession; +} + +export default async () => { + ipcMain.on('clear-storage-data', (_event, { serviceId, targetsToClear }) => { + try { + const serviceSession = deduceSession(serviceId); + serviceSession.flushStorageData(); + if (targetsToClear) { + debug('Clearing targets:', targetsToClear); + serviceSession.clearStorageData(targetsToClear); + } else { + debug('Clearing all targets'); + serviceSession.clearStorageData(); + } + } catch (error) { + debug(error); + } + }); + + ipcMain.handle('clear-cache', (_event, { serviceId }) => { + const serviceSession = deduceSession(serviceId); + return serviceSession.clearCache(); + }); +}; diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 85f74a91e..cb17447c0 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js @@ -258,7 +258,7 @@ export default class AppStore extends Store { body: 'Have a wonderful day & happy messaging.', }); - localStorage.setItem(CATALINA_NOTIFICATION_HACK_KEY, true); + localStorage.setItem(CATALINA_NOTIFICATION_HACK_KEY, 'true'); } } diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index e3d57c662..77dd28d7c 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js @@ -2,13 +2,13 @@ import { observable, computed, action } from 'mobx'; import moment from 'moment'; import jwt from 'jsonwebtoken'; import localStorage from 'mobx-localstorage'; -import { session } from '@electron/remote'; +import { ipcRenderer } from 'electron'; +import { TODOS_PARTITION_ID } from '../config'; import { isDevMode } from '../environment'; import Store from './lib/Store'; import Request from './lib/Request'; import CachedRequest from './lib/CachedRequest'; -import { TODOS_PARTITION_ID } from '../config'; const debug = require('debug')('Ferdi:UserStore'); @@ -256,8 +256,7 @@ export default class UserStore extends Store { this.stores.services.allServicesRequest.invalidate().reset(); if (this.stores.todos.isTodosEnabled) { - const sess = session.fromPartition(TODOS_PARTITION_ID); - sess.clearStorageData(); + ipcRenderer.send('clear-storage-data', { sessionId: TODOS_PARTITION_ID }); } } diff --git a/src/webview/lib/RecipeWebview.js b/src/webview/lib/RecipeWebview.js index 9c195a9f0..b2a9f3ee8 100644 --- a/src/webview/lib/RecipeWebview.js +++ b/src/webview/lib/RecipeWebview.js @@ -126,8 +126,8 @@ class RecipeWebview { } } - clearStorageData(storageLocations) { - this.sessionHandler.clearStorageData(storageLocations); + clearStorageData(serviceId, targetsToClear) { + ipcRenderer.send('clear-storage-data', { serviceId, targetsToClear }); } releaseServiceWorkers() { diff --git a/src/webview/sessionHandler.ts b/src/webview/sessionHandler.ts index 4961da12b..0c6d23f23 100644 --- a/src/webview/sessionHandler.ts +++ b/src/webview/sessionHandler.ts @@ -1,19 +1,6 @@ -import { getCurrentWebContents } from '@electron/remote'; - const debug = require('debug')('Ferdi:Plugin:SessionHandler'); export class SessionHandler { - clearStorageData(storageLocations: string[]) { - try { - debug('Clearing storageLocations:', storageLocations); - const { session } = getCurrentWebContents(); - session.flushStorageData(); - session.clearStorageData({ storages: storageLocations }); - } catch (error) { - debug(error); - } - } - async releaseServiceWorkers() { try { const registrations = -- cgit v1.2.3-54-g00ecf