Rework ExtensionAnonLayoutWrapperDataService to use BehaviorSubject

This commit is contained in:
Alec Rippberger 2024-10-21 08:32:14 -05:00
parent 808d31c790
commit 8889ed3d3c
No known key found for this signature in database
GPG Key ID: 9DD8DA583B28154A
6 changed files with 24 additions and 21 deletions

View File

@ -1,9 +1,6 @@
import { Observable, Subject } from "rxjs";
import { BehaviorSubject, Observable } from "rxjs";
import {
AnonLayoutWrapperDataService,
DefaultAnonLayoutWrapperDataService,
} from "@bitwarden/auth/angular";
import { AnonLayoutWrapperData, AnonLayoutWrapperDataService , DefaultAnonLayoutWrapperDataService } from "@bitwarden/auth/angular";
import { ExtensionAnonLayoutWrapperData } from "./extension-anon-layout-wrapper.component";
@ -11,13 +8,20 @@ export class ExtensionAnonLayoutWrapperDataService
extends DefaultAnonLayoutWrapperDataService
implements AnonLayoutWrapperDataService
{
protected override anonLayoutWrapperDataSubject = new Subject<ExtensionAnonLayoutWrapperData>();
protected anonLayoutWrapperDataSubject = new BehaviorSubject<ExtensionAnonLayoutWrapperData>(
null,
);
anonLayoutWrapperDataObservable$ = this.anonLayoutWrapperDataSubject.asObservable();
override setAnonLayoutWrapperData(data: ExtensionAnonLayoutWrapperData): void {
anonLayoutWrapperData$(): Observable<AnonLayoutWrapperData> {
return this.anonLayoutWrapperDataObservable$;
}
setAnonLayoutWrapperData(data: ExtensionAnonLayoutWrapperData): void {
this.anonLayoutWrapperDataSubject.next(data);
}
override anonLayoutWrapperData$(): Observable<ExtensionAnonLayoutWrapperData> {
return this.anonLayoutWrapperDataSubject.asObservable();
getAnonLayoutWrapperData$(): Observable<ExtensionAnonLayoutWrapperData> {
return this.anonLayoutWrapperDataObservable$;
}
}

View File

@ -3,11 +3,7 @@ import { Component, OnDestroy, OnInit } from "@angular/core";
import { ActivatedRoute, Data, NavigationEnd, Router, RouterModule } from "@angular/router";
import { Subject, filter, switchMap, takeUntil, tap } from "rxjs";
import {
AnonLayoutComponent,
AnonLayoutWrapperData,
AnonLayoutWrapperDataService,
} from "@bitwarden/auth/angular";
import { AnonLayoutComponent, AnonLayoutWrapperData } from "@bitwarden/auth/angular";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { Icon, IconModule, Translation } from "@bitwarden/components";
@ -16,6 +12,7 @@ import { PopupHeaderComponent } from "../../../platform/popup/layout/popup-heade
import { PopupPageComponent } from "../../../platform/popup/layout/popup-page.component";
import { CurrentAccountComponent } from "../account-switching/current-account.component";
import { ExtensionAnonLayoutWrapperDataService } from "./extension-anon-layout-wrapper-data.service";
import { ExtensionBitwardenLogo } from "./extension-bitwarden-logo.icon";
export interface ExtensionAnonLayoutWrapperData extends AnonLayoutWrapperData {
@ -58,7 +55,7 @@ export class ExtensionAnonLayoutWrapperComponent implements OnInit, OnDestroy {
private router: Router,
private route: ActivatedRoute,
private i18nService: I18nService,
private extensionAnonLayoutWrapperDataService: AnonLayoutWrapperDataService,
private extensionAnonLayoutWrapperDataService: ExtensionAnonLayoutWrapperDataService,
) {}
async ngOnInit(): Promise<void> {

View File

@ -37,7 +37,9 @@ export class ExtensionLoginComponentService
return flagEnabled("showPasswordless");
}
showBackButton(): void {
this.extensionAnonLayoutWrapperDataService.setAnonLayoutWrapperData({ showBackButton: true });
showBackButton(show: boolean): void {
this.extensionAnonLayoutWrapperDataService.setAnonLayoutWrapperData({
showBackButton: show,
});
}
}

View File

@ -93,7 +93,7 @@ export class DefaultLoginComponentService implements LoginComponentService {
/**
* No-op implementation of showBackButton
*/
showBackButton(): void {
showBackButton(show: boolean): void {
return;
}
}

View File

@ -42,5 +42,5 @@ export abstract class LoginComponentService {
/**
* Shows the back button.
*/
showBackButton: () => void;
showBackButton: (show: boolean) => void;
}

View File

@ -327,6 +327,8 @@ export class LoginComponent implements OnInit, OnDestroy {
pageSubtitle: this.emailFormControl.value,
pageIcon: this.Icons.WaveIcon,
});
this.loginComponentService.showBackButton(true);
}
}
@ -348,8 +350,6 @@ export class LoginComponent implements OnInit, OnDestroy {
this.masterPasswordInputRef?.nativeElement?.focus();
});
}
this.loginComponentService.showBackButton();
}
}