diff --git a/src/routes/idaa/(idaa)/video_conferences/+page.svelte b/src/routes/idaa/(idaa)/video_conferences/+page.svelte index 57bccd27..a3b418a3 100644 --- a/src/routes/idaa/(idaa)/video_conferences/+page.svelte +++ b/src/routes/idaa/(idaa)/video_conferences/+page.svelte @@ -75,8 +75,67 @@ } } - onMount(() => { - init_jitsi(); + onMount(async () => { + console.log('Jitsi: onMount - fetching user data and initializing Jitsi...'); + const url_params = data.params; + console.log('Jitsi: url_params:', url_params); + + // --- Start with fallback data from URL --- + user_id = url_params.uuid; // Novi Customer GUID + display_name = url_params.full_name ?? 'Guest'; // May be overridden + email = (url_params.email ?? 'guest@example.com').replace(/\s+/g, '+'); // May be overridden + room_name = url_params.room ?? 'Default-Room'; + domain = url_params.domain ?? 'jitsi.dgrzone.com'; + + console.log( + `Jitsi: Initial data: user_id: ${user_id}, display_name: ${display_name}, email: ${email}, room_name: ${room_name}, domain: ${domain}` + ); + + if (!user_id) { + const container = document.getElementById(jitsi_container_id); + if (container) { + container.innerHTML = '

User ID (uuid) is missing. Cannot start meeting.

'; + } + console.error('Jitsi: User ID (uuid) is missing. Cannot start meeting.'); + return; + } + + // --- Fetch dynamic data from Novi API --- + const novi_api_root_url = $ae_loc.site_cfg_json?.novi_api_root_url; + const novi_api_key = $ae_loc.site_cfg_json?.novi_idaa_api_key; + + if (novi_api_root_url && novi_api_key) { + const member_details = await get_novi_member_details(user_id, novi_api_root_url, novi_api_key); + if (member_details.display_name) { + display_name = member_details.display_name; + console.log(`Jitsi: Updated display_name from Novi: ${display_name}`); + } + if (member_details.email) { + email = member_details.email; + console.log(`Jitsi: Updated email from Novi: ${email}`); + } + + const novi_idaa_group_guid_li = $ae_loc.site_cfg_json?.novi_idaa_group_guid_li ?? []; + const moderatorIdSet = await get_novi_group_moderators( + novi_idaa_group_guid_li, + novi_api_root_url, + novi_api_key + ); + const normalizedUserId = String(user_id ?? '').toLowerCase().trim(); + + if (normalizedUserId && moderatorIdSet.has(normalizedUserId)) { + is_moderator = true; + console.log(`Jitsi: User ${user_id} is a moderator.`); + } else { + is_moderator = false; // Explicitly set to false if not in the set + console.log(`Jitsi: User ${user_id} is not a moderator.`); + } + } else { + console.warn('Jitsi: Novi API not configured. Skipping user details/moderator check.'); + } + + // --- All data fetched, now initialize Jitsi --- + await init_jitsi(); }); onDestroy(() => { @@ -216,63 +275,19 @@ jitsi_api = null; } - console.log('Jitsi: Starting initialization...'); - const url_params = data.params; - console.log('Jitsi: url_params:', url_params); + console.log('Jitsi: Initializing Jitsi meeting interface...'); - // --- Start with fallback data from URL --- - user_id = url_params.uuid; // Novi Customer GUID - display_name = url_params.full_name ?? 'Guest'; // May be overridden - email = (url_params.email ?? 'guest@example.com').replace(/\s+/g, '+'); // May be overridden - room_name = url_params.room ?? 'Default-Room'; - domain = url_params.domain ?? 'jitsi.dgrzone.com'; - - console.log( - `Jitsi: Initial data: user_id: ${user_id}, display_name: ${display_name}, email: ${email}, room_name: ${room_name}, domain: ${domain}` - ); - - if (!user_id) { + // These variables are now expected to be set in the component's state + if (!user_id || !display_name || !email || !room_name || !domain) { + console.error('Jitsi: Missing required data to initialize meeting. Aborting.'); const container = document.getElementById(jitsi_container_id); if (container) { - container.innerHTML = '

User ID (uuid) is missing. Cannot start meeting.

'; + container.innerHTML = '

Could not initialize meeting: missing user data.

'; } - console.error('Jitsi: User ID (uuid) is missing. Cannot start meeting.'); return; } - // --- Fetch dynamic data from Novi API --- - const novi_api_root_url = $ae_loc.site_cfg_json?.novi_api_root_url; - const novi_api_key = $ae_loc.site_cfg_json?.novi_idaa_api_key; - - if (novi_api_root_url && novi_api_key) { - const member_details = await get_novi_member_details(user_id, novi_api_root_url, novi_api_key); - if (member_details.display_name) { - display_name = member_details.display_name; - console.log(`Jitsi: Updated display_name from Novi: ${display_name}`); - } - if (member_details.email) { - email = member_details.email; - console.log(`Jitsi: Updated email from Novi: ${email}`); - } - - const novi_idaa_group_guid_li = $ae_loc.site_cfg_json?.novi_idaa_group_guid_li ?? []; - const moderatorIdSet = await get_novi_group_moderators( - novi_idaa_group_guid_li, - novi_api_root_url, - novi_api_key - ); - const normalizedUserId = String(user_id ?? '').toLowerCase().trim(); - - if (normalizedUserId && moderatorIdSet.has(normalizedUserId)) { - is_moderator = true; - console.log(`Jitsi: User ${user_id} is a moderator.`); - } else { - is_moderator = false; // Explicitly set to false if not in the set - console.log(`Jitsi: User ${user_id} is not a moderator.`); - } - } else { - console.warn('Jitsi: Novi API not configured. Skipping user details/moderator check.'); - } + const url_params = data.params; // --- Initialize Jitsi --- let jwt_token = null;