From ed527b3d09c413158482b97efad190da80b4c736 Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Sat, 18 Apr 2026 00:36:55 -0500 Subject: [PATCH] Render every speaker for co-hosted keynote sessions The keynote-speaker enrichment loop broke after the first matching entry, so a shared keynote like "Rachell Calhoun & Tim Schilling" only rendered one of the two on the session detail page. Switch keynoteData to an array, collect every keynote speaker whose name appears in the session title, and ngFor the speaker card template. --- .../pages/session-detail/session-detail.html | 8 ++++---- src/app/pages/session-detail/session-detail.ts | 17 ++++++++--------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/app/pages/session-detail/session-detail.html b/src/app/pages/session-detail/session-detail.html index b8424b07..183170fa 100644 --- a/src/app/pages/session-detail/session-detail.html +++ b/src/app/pages/session-detail/session-detail.html @@ -42,11 +42,11 @@

{{session.name}}

-
- +
+
-

{{keynoteData.name}}

-

{{keynoteData.bio}}

+

{{keynote.name}}

+

{{keynote.bio}}

diff --git a/src/app/pages/session-detail/session-detail.ts b/src/app/pages/session-detail/session-detail.ts index ee7a363e..6869a646 100644 --- a/src/app/pages/session-detail/session-detail.ts +++ b/src/app/pages/session-detail/session-detail.ts @@ -18,7 +18,7 @@ export class SessionDetailPage { isFavorite = false; isOpenSpace = false; isKeynote = false; - keynoteData: any = null; + keynoteData: any[] = []; defaultHref = ''; private keynoteSpeakers: Record = { @@ -63,15 +63,14 @@ export class SessionDetailPage { this.isOpenSpace = this.session?.tracks?.includes('open-space'); this.isKeynote = this.session?.tracks?.includes('keynote') || this.session?.track === 'Keynote'; - // Enrich keynote sessions with speaker photo/bio + // Enrich keynote sessions with speaker photo/bio. Collect every + // matching speaker so co-hosted keynotes (e.g. "Rachell Calhoun & + // Tim Schilling") render all speakers, not just the first match. if (this.isKeynote) { - const sessionName = this.session?.name || ''; - for (const [name, data] of Object.entries(this.keynoteSpeakers)) { - if (sessionName.toLowerCase().includes(name.toLowerCase())) { - this.keynoteData = { name, ...data }; - break; - } - } + const sessionName = (this.session?.name || '').toLowerCase(); + this.keynoteData = Object.entries(this.keynoteSpeakers) + .filter(([name]) => sessionName.includes(name.toLowerCase())) + .map(([name, data]) => ({ name, ...data })); } this.isFavorite = this.userProvider.hasFavorite(