From ce8383da89afeb48021e4e7870d62226337f02fc Mon Sep 17 00:00:00 2001 From: iamkiddy Date: Wed, 3 Dec 2025 18:39:30 +0000 Subject: [PATCH] Refactor appointment components to replace Jitsi meeting URLs with moderator and participant join URLs. Update logic for joining meetings and copying room IDs based on user roles, enhancing clarity in the UI. Modify appointment model to support new join URL fields and permissions for moderators and participants. --- app/(admin)/admin/booking/[id]/page.tsx | 40 +++++++++++----------- app/(admin)/admin/booking/page.tsx | 6 ++-- app/(user)/user/appointments/[id]/page.tsx | 36 +++++++++---------- app/(user)/user/dashboard/page.tsx | 18 +++++----- lib/models/appointments.ts | 10 ++++++ 5 files changed, 60 insertions(+), 50 deletions(-) diff --git a/app/(admin)/admin/booking/[id]/page.tsx b/app/(admin)/admin/booking/[id]/page.tsx index c101ee4..17bdc38 100644 --- a/app/(admin)/admin/booking/[id]/page.tsx +++ b/app/(admin)/admin/booking/[id]/page.tsx @@ -494,7 +494,7 @@ export default function AppointmentDetailPage() { )} {/* Meeting Information */} - {appointment.jitsi_meet_url && ( + {appointment.moderator_join_url && (

@@ -513,10 +513,10 @@ export default function AppointmentDetailPage() { {appointment.jitsi_room_id}

@@ -525,21 +525,21 @@ export default function AppointmentDetailPage() { )}

- Meeting Link + Moderator Meeting Link

- {appointment.can_join_meeting !== undefined && ( -
-
-

- {appointment.can_join_meeting ? "Meeting is active - You can join now" : "Meeting is not available yet"} + {appointment.can_join_as_moderator !== undefined && ( +

+
+

+ {appointment.can_join_as_moderator ? "Meeting is active - You can join as moderator" : "Meeting is not available yet"}

)} @@ -636,18 +636,18 @@ export default function AppointmentDetailPage() { )} {/* Join Meeting Button (if scheduled) */} - {appointment.status === "scheduled" && appointment.jitsi_meet_url && ( + {appointment.status === "scheduled" && appointment.moderator_join_url && (
- {appointment.can_join_meeting ? ( + {appointment.can_join_as_moderator ? ( ) : ( @@ -467,18 +467,18 @@ export default function UserAppointmentDetailPage() { Meeting Link

- {appointment.can_join_meeting !== undefined && ( -
-
-

- {appointment.can_join_meeting ? "Meeting is active - You can join now" : "Meeting is not available yet"} + {appointment.can_join_as_participant !== undefined && ( +

+
+

+ {appointment.can_join_as_participant ? "Meeting is active - You can join now" : "Meeting is not available yet"}

)} @@ -552,12 +552,12 @@ export default function UserAppointmentDetailPage() {
{/* Join Meeting Button */} - {appointment.status === "scheduled" && appointment.jitsi_meet_url && ( + {appointment.status === "scheduled" && appointment.participant_join_url && (
- {appointment.can_join_meeting ? ( + {appointment.can_join_as_participant ? ( diff --git a/lib/models/appointments.ts b/lib/models/appointments.ts index 14d68e2..2a8b1bf 100644 --- a/lib/models/appointments.ts +++ b/lib/models/appointments.ts @@ -18,8 +18,17 @@ export interface Appointment { rejection_reason?: string; jitsi_meet_url?: string; jitsi_room_id?: string; + jitsi_meeting_created?: boolean; + meeting_started_at?: string; + meeting_ended_at?: string; + meeting_duration_actual?: number; + meeting_info?: any; has_jitsi_meeting?: boolean | string; can_join_meeting?: boolean | string; + can_join_as_moderator?: boolean | string; + can_join_as_participant?: boolean | string; + moderator_join_url?: string; + participant_join_url?: string; meeting_status?: string; matching_availability?: MatchingAvailability | Array<{ date: string; @@ -39,6 +48,7 @@ export interface Appointment { export interface SelectedSlot { day: number; // 0-6 (Monday-Sunday) + date?: string; // YYYY-MM-DD format time_slot: "morning" | "afternoon" | "evening"; }