Saving a mostly working Jitsi update
This commit is contained in:
10
src/app.d.ts
vendored
10
src/app.d.ts
vendored
@@ -14,12 +14,4 @@ declare global {
|
||||
namespace App {
|
||||
interface Platform {}
|
||||
}
|
||||
interface ImportMetaEnv {
|
||||
VITE_NOVI_API_KEY: string;
|
||||
VITE_NOVI_MOD_GROUP_GUID: string;
|
||||
VITE_JITSI_TOKEN_ENDPOINT: string;
|
||||
}
|
||||
interface ImportMeta {
|
||||
readonly env: ImportMetaEnv;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<script lang="ts">
|
||||
import { onMount, onDestroy } from 'svelte';
|
||||
import { ae_loc } from '$lib/stores/ae_stores';
|
||||
|
||||
interface Props {
|
||||
data: any;
|
||||
@@ -16,7 +17,7 @@
|
||||
room_name: string,
|
||||
user_id: string
|
||||
) {
|
||||
const token_endpoint = import.meta.env.VITE_JITSI_TOKEN_ENDPOINT;
|
||||
const token_endpoint = $ae_loc.site_cfg_json?.jitsi_token_endpoint;
|
||||
|
||||
const payload = {
|
||||
name: display_name,
|
||||
@@ -88,7 +89,7 @@
|
||||
}
|
||||
|
||||
// --- Fetch dynamic data from Novi API ---
|
||||
const novi_api_key = import.meta.env.VITE_NOVI_API_KEY;
|
||||
const novi_api_key = $ae_loc.site_cfg_json?.novi_idaa_api_key;
|
||||
const novi_api_headers = new Headers();
|
||||
novi_api_headers.append('Authorization', `Basic ${novi_api_key}`);
|
||||
const requestOptions = {
|
||||
@@ -99,48 +100,59 @@
|
||||
|
||||
try {
|
||||
// Fetch the list of moderators from the Novi group
|
||||
const mod_group_guid = import.meta.env.VITE_NOVI_MOD_GROUP_GUID;
|
||||
const mod_list_url = `https://www.idaa.org/api/groups/${mod_group_guid}/members?pageSize=200`;
|
||||
console.log(`Fetching moderator list from Novi API: ${mod_list_url}`);
|
||||
const mods_response = await fetch(mod_list_url, requestOptions);
|
||||
const novi_idaa_group_guid_li = $ae_loc.site_cfg_json?.novi_idaa_group_guid_li ?? [];
|
||||
let allModeratorsRaw: any[] = [];
|
||||
|
||||
if (mods_response.ok) {
|
||||
const moderatorsRaw = await mods_response.json();
|
||||
console.log('Fetched moderators raw:', moderatorsRaw);
|
||||
if (novi_idaa_group_guid_li.length === 0) {
|
||||
console.warn('Jitsi: novi_idaa_group_guid_li is empty. No moderator groups to check.');
|
||||
}
|
||||
|
||||
// Normalise the payload: support both Array and { Results: Array } shapes
|
||||
let modList: any[] = [];
|
||||
if (Array.isArray(moderatorsRaw)) {
|
||||
modList = moderatorsRaw;
|
||||
} else if (Array.isArray(moderatorsRaw.Results)) {
|
||||
modList = moderatorsRaw.Results;
|
||||
} else if (Array.isArray(moderatorsRaw.Members)) {
|
||||
modList = moderatorsRaw.Members;
|
||||
for (const group_guid of novi_idaa_group_guid_li) {
|
||||
const mod_list_url = `https://www.idaa.org/api/groups/${group_guid}/members?pageSize=200`;
|
||||
console.log(`Jitsi: Fetching moderator list from Novi API for group: ${group_guid}`);
|
||||
const mods_response = await fetch(mod_list_url, requestOptions);
|
||||
|
||||
if (mods_response.ok) {
|
||||
const groupModeratorsRaw = await mods_response.json();
|
||||
// Normalise the payload and combine
|
||||
let groupModList: any[] = [];
|
||||
if (Array.isArray(groupModeratorsRaw)) {
|
||||
groupModList = groupModeratorsRaw;
|
||||
} else if (Array.isArray(groupModeratorsRaw.Results)) {
|
||||
groupModList = groupModeratorsRaw.Results;
|
||||
} else if (Array.isArray(groupModeratorsRaw.Members)) {
|
||||
groupModList = groupModeratorsRaw.Members;
|
||||
} else {
|
||||
console.warn(`Jitsi: Moderator list format is unexpected for group ${group_guid}. Falling back to empty list for this group.`, groupModeratorsRaw);
|
||||
}
|
||||
allModeratorsRaw = allModeratorsRaw.concat(groupModList);
|
||||
console.log(`Jitsi: Fetched ${groupModList.length} moderators from group ${group_guid}. Total: ${allModeratorsRaw.length}`);
|
||||
} else {
|
||||
console.warn('Moderator list format is unexpected. Falling back to empty list.', moderatorsRaw);
|
||||
modList = [];
|
||||
console.warn(`Jitsi: Could not fetch moderator list from Novi API for group: ${group_guid}. Status: ${mods_response.status}`);
|
||||
}
|
||||
}
|
||||
|
||||
// Build a set of normalized IDs from a few possible fields
|
||||
const modIdSet = new Set(
|
||||
modList
|
||||
.map((m: any) => (m?.UniqueID ?? m?.UniqueId ?? m?.DuesPayerUniqueID ?? m?.id ?? ''))
|
||||
.filter(Boolean)
|
||||
.map((id: string) => id.toLowerCase().trim())
|
||||
);
|
||||
if (allModeratorsRaw.length === 0) {
|
||||
console.warn('Jitsi: No moderators fetched across all specified Novi groups. Falling back to empty list.');
|
||||
}
|
||||
console.log('Jitsi: Fetched all moderators raw (combined):', allModeratorsRaw);
|
||||
|
||||
const normalizedUserId = String(user_id ?? '').toLowerCase().trim();
|
||||
// Build a set of normalized IDs from a few possible fields using allModeratorsRaw
|
||||
const modIdSet = new Set(
|
||||
allModeratorsRaw
|
||||
.map((m: any) => (m?.UniqueID ?? m?.UniqueId ?? m?.DuesPayerUniqueID ?? m?.id ?? ''))
|
||||
.filter(Boolean)
|
||||
.map((id: string) => id.toLowerCase().trim())
|
||||
);
|
||||
|
||||
console.log(`Moderator IDs (${modIdSet.size}) sample:`, Array.from(modIdSet).slice(0, 10));
|
||||
if (normalizedUserId && modIdSet.has(normalizedUserId)) {
|
||||
is_moderator = true;
|
||||
console.log(`User ${user_id} is a moderator (matched by UniqueID).`);
|
||||
} else {
|
||||
// Also check by matching name/email if needed (optional)
|
||||
console.log(`User ${user_id} is not a moderator.`);
|
||||
}
|
||||
const normalizedUserId = String(user_id ?? '').toLowerCase().trim();
|
||||
|
||||
console.log(`Jitsi: Moderator IDs (${modIdSet.size}) sample:`, Array.from(modIdSet).slice(0, 10));
|
||||
if (normalizedUserId && modIdSet.has(normalizedUserId)) {
|
||||
is_moderator = true;
|
||||
console.log(`Jitsi: User ${user_id} is a moderator (matched by UniqueID).`);
|
||||
} else {
|
||||
console.warn('Could not fetch moderator list from Novi API.');
|
||||
console.log(`Jitsi: User ${user_id} is not a moderator.`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Jitsi: Error fetching data from Novi API:', error);
|
||||
|
||||
Reference in New Issue
Block a user