From 09c5244aed566aa642fd6e87cd1c6c36a2adee95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=80=E4=BA=8C?= Date: Sun, 12 Dec 2021 21:21:42 +0800 Subject: [PATCH] fix: prevent crush when destroy browser view --- src/services/view/index.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/services/view/index.ts b/src/services/view/index.ts index ecde8970..56d91442 100644 --- a/src/services/view/index.ts +++ b/src/services/view/index.ts @@ -381,12 +381,15 @@ export class View implements IViewService { public removeView = (workspaceID: string, windowName: WindowNames): void => { const view = this.getView(workspaceID, windowName); - void session.fromPartition(`persist:${workspaceID}`).clearStorageData(); - if (view !== undefined) { + const browserWindow = this.windowService.get(windowName); + if (view !== undefined && browserWindow !== undefined) { + void session.fromPartition(`persist:${workspaceID}`).clearStorageData(); // stop find in page when switching workspaces view.webContents.stopFindInPage('clearSelection'); view.webContents.send(WindowChannel.closeFindInPage); // currently use workaround https://github.com/electron/electron/issues/10096 + // eslint-disable-next-line unicorn/no-null + browserWindow.setBrowserView(null); // @ts-expect-error Property 'destroy' does not exist on type 'WebContents'.ts(2339) // eslint-disable-next-line @typescript-eslint/no-unsafe-call view.webContents.destroy();