fix(browser-manager): await login-window close during shutdown
This commit is contained in:
1 parent
3bdc8b4be1
commit
4fd1326089
3 files changed
+17
-5
No files matched your search
@@ -130,8 +130,8 @@ export function createBrowserActionService({
|
||||
return requireBrowserManager().launchLoginBrowser(socialAccountId, platform, loginUrl);
|
||||
}
|
||||
|
||||
function resetBrowserManager() {
|
||||
browserManagerRef.current?.shutdown();
|
||||
async function resetBrowserManager() {
|
||||
await browserManagerRef.current?.shutdown();
|
||||
browserManagerRef.current = new BrowserManager(join(db.artifactsDir, "browser"));
|
||||
}
|
||||
|
||||
|
||||
@@ -300,10 +300,22 @@ export class BrowserManager {
|
||||
}
|
||||
}
|
||||
|
||||
shutdown() {
|
||||
async shutdown() {
|
||||
// Wait for each pending window-close to finish so any callers that chain
|
||||
// `await shutdown()` before recreating the manager don't observe torn
|
||||
// state (half-closed login windows still holding a partition).
|
||||
const closePromises: Promise<void>[] = [];
|
||||
for (const [, win] of this.loginWindows) {
|
||||
if (!win.isDestroyed()) win.close();
|
||||
if (!win.isDestroyed()) {
|
||||
closePromises.push(
|
||||
new Promise<void>((resolve) => {
|
||||
win.once("closed", () => resolve());
|
||||
win.close();
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
await Promise.all(closePromises);
|
||||
this.loginWindows.clear();
|
||||
this.activeActionWindows.clear();
|
||||
this.cancelledActionIds.clear();
|
||||
|
||||
@@ -151,7 +151,7 @@ export function createMainRuntimeSupport(state: MainRuntimeState) {
|
||||
getWorkerProcess: () => requireServiceGraph().getWorkerService()?.getWorker() ?? null,
|
||||
resetAfterRestore: () => {
|
||||
initializeAgentTokenSigningKey(requireDb().profileDir);
|
||||
requireBrowserActionService().resetBrowserManager();
|
||||
void requireBrowserActionService().resetBrowserManager();
|
||||
},
|
||||
getApiPort: () => state.apiServer?.port ?? 0,
|
||||
notify: (options) => requireIpcSupport().notify(options),
|
||||
|
||||
Reference in new issue
Block a user