From ba3cfd7baec24e78ee5ec2b83b43ff8a7637fe15 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Wed, 23 Apr 2025 14:02:57 +0200 Subject: [PATCH] fix(console): list of unique v2 sessions (#9778) This PR ensures that the list of recent sessions has no duplicate entries. To ensure the sessions are unique, we create a map using the loginName property. --------- Co-authored-by: conblem (cherry picked from commit ceaa73734d490b8ced19960ab2f297f2e82abc1d) --- .../app/modules/accounts-card/accounts-card.component.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/console/src/app/modules/accounts-card/accounts-card.component.ts b/console/src/app/modules/accounts-card/accounts-card.component.ts index d91148e862..273af86467 100644 --- a/console/src/app/modules/accounts-card/accounts-card.component.ts +++ b/console/src/app/modules/accounts-card/accounts-card.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, NgIterable, Output } from '@angular/core'; import { Router } from '@angular/router'; import { AuthConfig } from 'angular-oauth2-oidc'; import { SessionState as V1SessionState, User, UserState } from 'src/app/proto/generated/zitadel/user_pb'; @@ -52,7 +52,7 @@ export class AccountsCardComponent { protected readonly user$ = new ReplaySubject(1); protected readonly UserState = UserState; private readonly labelpolicy = toSignal(this.userService.labelpolicy$, { initialValue: undefined }); - protected readonly sessions$: Observable; + protected readonly sessions$: Observable; constructor( protected readonly authService: AuthenticationService, @@ -135,7 +135,9 @@ export class AccountsCardComponent { authState: V2SessionState.ACTIVE, userName: s.factors?.user?.loginName ?? '', })), + map((s) => [s.loginName, s] as const), toArray(), + map((sessions) => Array.from(new Map(sessions).values())), // Ensure unique loginNames ); }