diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index 7d38682c200..0f124d2c5dd 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -1234,6 +1234,18 @@ export default class MainBackground { ); } + // If the user is logged out, switch to the next account + const active = await firstValueFrom(this.accountService.activeAccount$); + if (active == null) { + return; + } + const authStatus = await firstValueFrom( + this.authService.authStatuses$.pipe(map((statuses) => statuses[active.id])), + ); + if (authStatus === AuthenticationStatus.LoggedOut) { + const nextUpAccount = await firstValueFrom(this.accountService.nextUpAccount$); + await this.switchAccount(nextUpAccount?.id); + } await this.initOverlayAndTabsBackground(); return new Promise((resolve) => { diff --git a/apps/desktop/src/app/layout/account-switcher.component.ts b/apps/desktop/src/app/layout/account-switcher.component.ts index f641d801b8d..02d98512609 100644 --- a/apps/desktop/src/app/layout/account-switcher.component.ts +++ b/apps/desktop/src/app/layout/account-switcher.component.ts @@ -151,6 +151,24 @@ export class AccountSwitcherComponent { ); } + async ngOnInit() { + const active = await firstValueFrom(this.accountService.activeAccount$); + if (active == null) { + return; + } + const authStatus = await firstValueFrom( + this.authService.authStatuses$.pipe(map((statuses) => statuses[active.id])), + ); + if (authStatus === AuthenticationStatus.LoggedOut) { + const nextUpAccount = await firstValueFrom(this.accountService.nextUpAccount$); + if (nextUpAccount != null) { + await this.switch(nextUpAccount.id); + } else { + await this.addAccount(); + } + } + } + toggle() { this.isOpen = !this.isOpen; }