diff --git a/src/browser/api/browser_view.ts b/src/browser/api/browser_view.ts index 472034e47..b5038cef7 100644 --- a/src/browser/api/browser_view.ts +++ b/src/browser/api/browser_view.ts @@ -99,24 +99,25 @@ export async function attach(ofView: OfView, toIdentity: Identity) { throw new Error(`Could not locate origin window ${previousTarget.uuid}/${previousTarget.name}`); } - const oldwinMap = windowCloseListenerMap.get(oldWin); - - if (previousTarget.name !== toIdentity.name) { - oldWin.browserWindow.removeBrowserView(view); - of_events.emit(route.window('view-detached', previousTarget.uuid, previousTarget.name), { - viewIdentity: {uuid: ofView.uuid, name: ofView.name}, - target: toIdentity, - previousTarget - }); - if (oldwinMap) { - const listener = oldwinMap.get(ofView); - if (typeof listener === 'function') { - of_events.removeListener(route.window('closed', previousTarget.uuid, previousTarget.name), listener); + if (oldWin) { + const oldWinMap = windowCloseListenerMap.get(oldWin); + if (previousTarget.name !== toIdentity.name) { + oldWin.browserWindow.removeBrowserView(view); + of_events.emit(route.window('view-detached', previousTarget.uuid, previousTarget.name), { + viewIdentity: {uuid: ofView.uuid, name: ofView.name}, + target: toIdentity, + previousTarget + }); + if (oldWinMap) { + const listener = oldWinMap.get(ofView); + if (typeof listener === 'function') { + of_events.removeListener(route.window('closed', previousTarget.uuid, previousTarget.name), listener); + } + oldWinMap.delete(ofView); } - oldwinMap.delete(ofView); - } - } else if (oldwinMap && oldwinMap.has(ofView)) { - return; + } else if (oldWinMap && oldWinMap.has(ofView)) { + return; + } } const bWin = ofWin.browserWindow; @@ -145,6 +146,7 @@ export async function attach(ofView: OfView, toIdentity: Identity) { }); } } + export async function destroy (ofView: OfView) { const {uuid, name, target, view} = ofView; removeBrowserView(ofView); @@ -200,4 +202,4 @@ export function addEventListener({uuid, name}: Identity, type: string, listener: of_events.removeListener(eventString, safeListener); }; return unsubscribe; -} \ No newline at end of file +}