diff --git a/app/Services/Meet/EventMeetRoomLinkService.php b/app/Services/Meet/EventMeetRoomLinkService.php index 9db8137..ac96b6e 100644 --- a/app/Services/Meet/EventMeetRoomLinkService.php +++ b/app/Services/Meet/EventMeetRoomLinkService.php @@ -110,11 +110,14 @@ class EventMeetRoomLinkService $event = $this->sync->sync($event->fresh(), $owner); + $linkedSession = collect($event->content()['virtual_sessions'] ?? []) + ->first(fn ($session) => is_array($session) && (string) ($session['id'] ?? '') === $sessionId); + return array_merge($this->summarizeEvent($event), [ 'entity_id' => $sessionId, 'meet_room_uuid' => $roomUuid, 'join_url' => $joinUrl, - ]); + ], $this->sync->programmePayloadForSession($event, is_array($linkedSession) ? $linkedSession : $sessions[$matchedIndex])); } /** @return array */ diff --git a/app/Services/Meet/EventMeetSyncService.php b/app/Services/Meet/EventMeetSyncService.php index 9e9f0fe..d696c80 100644 --- a/app/Services/Meet/EventMeetSyncService.php +++ b/app/Services/Meet/EventMeetSyncService.php @@ -137,6 +137,21 @@ class EventMeetSyncService } } + /** + * @param array $session + * @return array{programme_snapshot: array|null, linked_programme_items: list>} + */ + public function programmePayloadForSession(QrCode $event, array $session): array + { + $programmeSnapshot = $this->programmeSnapshotFor($event); + $itemRefs = (array) ($session['programme_item_refs'] ?? []); + + return [ + 'programme_snapshot' => $programmeSnapshot, + 'linked_programme_items' => $this->programmes->itemsForRefs($programmeSnapshot, $itemRefs), + ]; + } + /** @return array|null */ private function programmeSnapshotFor(QrCode $event): ?array { diff --git a/tests/Feature/ServiceMeetLinkTest.php b/tests/Feature/ServiceMeetLinkTest.php index 5460a0f..f8384a1 100644 --- a/tests/Feature/ServiceMeetLinkTest.php +++ b/tests/Feature/ServiceMeetLinkTest.php @@ -149,7 +149,9 @@ class ServiceMeetLinkTest extends TestCase 'title' => 'Opening keynote', ]) ->assertOk() - ->assertJsonPath('event.meet_room_uuid', 'existing-room-uuid'); + ->assertJsonPath('event.meet_room_uuid', 'existing-room-uuid') + ->assertJsonPath('event.programme_snapshot.title', 'Summit programme') + ->assertJsonPath('event.programme_snapshot.days.0.items.0.title', 'Opening keynote'); Http::assertSent(function ($request) { return $request->method() === 'PATCH'