diff --git a/bitwarden_license/bit-common/src/dirt/reports/risk-insights/services/domain/risk-insights-orchestrator.service.ts b/bitwarden_license/bit-common/src/dirt/reports/risk-insights/services/domain/risk-insights-orchestrator.service.ts index f52ab68985b..b6d6e10fbbc 100644 --- a/bitwarden_license/bit-common/src/dirt/reports/risk-insights/services/domain/risk-insights-orchestrator.service.ts +++ b/bitwarden_license/bit-common/src/dirt/reports/risk-insights/services/domain/risk-insights-orchestrator.service.ts @@ -91,6 +91,22 @@ export class RiskInsightsOrchestratorService { private _enrichedReportDataSubject = new BehaviorSubject(null); enrichedReportData$ = this._enrichedReportDataSubject.asObservable(); + // New applications that haven't been reviewed (reviewedDate === null) + newApplications$: Observable = this.rawReportData$.pipe( + map((reportState) => { + if (!reportState.data?.applicationData) { + return []; + } + return reportState.data.applicationData + .filter((app) => app.reviewedDate === null) + .map((app) => app.applicationName); + }), + distinctUntilChanged( + (prev, curr) => prev.length === curr.length && prev.every((app, i) => app === curr[i]), + ), + shareReplay({ bufferSize: 1, refCount: true }), + ); + // Generate report trigger and state private _generateReportTriggerSubject = new BehaviorSubject(false); generatingReport$ = this._generateReportTriggerSubject.asObservable();