Starting to wrap up for the night. Gemini cleaned up the tools and settings section.

This commit is contained in:
Scott Idem
2025-12-15 18:30:57 -05:00
parent a7bf03e449
commit f529f4baac

View File

@@ -14,7 +14,7 @@
// Toggles for collapsible sections // Toggles for collapsible sections
let show_meeting_details: boolean = $state(false); let show_meeting_details: boolean = $state(false);
let show_live_stats: boolean = $state(false); let show_live_stats: boolean = $state(false);
let show_name_changer: boolean = $state(false); let show_profile_editor: boolean = $state(false);
let show_sound_settings: boolean = $state(false); let show_sound_settings: boolean = $state(false);
let user_id: null | string = $state(null); let user_id: null | string = $state(null);
@@ -35,6 +35,7 @@
let disable_raise_hand_sound: boolean = $state(true); // NOTE: Disable by default let disable_raise_hand_sound: boolean = $state(true); // NOTE: Disable by default
let name_input: string = $state(''); let name_input: string = $state('');
let email_input: string = $state('');
// State for Live Meeting Stats // State for Live Meeting Stats
let meeting_participants = $state(new Map<string, any>()); let meeting_participants = $state(new Map<string, any>());
@@ -114,13 +115,23 @@
); );
} }
async function handle_name_update() { async function handle_profile_update() {
if (name_input && name_input.trim() !== '' && name_input !== display_name) { const name_changed = name_input && name_input.trim() !== '' && name_input !== display_name;
console.log(`Jitsi: User updating name from "${display_name}" to "${name_input}"`); const email_changed = email_input && email_input.trim() !== '' && email_input !== email;
display_name = name_input.trim();
if (name_changed || email_changed) {
console.log(`Jitsi: User updating profile.`);
if (name_changed) {
console.log(` - Name from "${display_name}" to "${name_input}"`);
display_name = name_input.trim();
}
if (email_changed) {
console.log(` - Email from "${email}" to "${email_input}"`);
email = email_input.trim();
}
await init_jitsi(); await init_jitsi();
} else { } else {
console.log('Jitsi: Name update skipped. New name is same as old or empty.'); console.log('Jitsi: Profile update skipped. No changes detected.');
} }
} }
@@ -243,8 +254,9 @@
console.warn('Jitsi: Novi API not configured. Skipping user details/moderator check.'); console.warn('Jitsi: Novi API not configured. Skipping user details/moderator check.');
} }
// Set initial value for the name input // Set initial value for the profile editor inputs
name_input = display_name; name_input = display_name;
email_input = email;
// --- All data fetched, now initialize Jitsi --- // --- All data fetched, now initialize Jitsi ---
await init_jitsi(); await init_jitsi();
@@ -540,7 +552,7 @@
</ul> </ul>
</div> </div>
<div class="mt-1"> <div class="mt-1">
<h4 class="font-semibold">Participants:</h4> <div class="font-bold">Participants:</div>
<ul class="pl-4 list-disc"> <ul class="pl-4 list-disc">
{#each Array.from(meeting_participants.values()).filter((p) => p.role !== 'moderator') as person (person.id)} {#each Array.from(meeting_participants.values()).filter((p) => p.role !== 'moderator') as person (person.id)}
<li>{person.displayName}</li> <li>{person.displayName}</li>
@@ -553,34 +565,45 @@
{/if} {/if}
</div> </div>
<!-- Change Name --> <!-- Profile -->
<div class="mt-2 pt-2 border-t-2 border-dashed border-gray-400"> <div class="mt-2 pt-2 border-t-2 border-dashed border-gray-400">
<button <button
onclick={() => (show_name_changer = !show_name_changer)} onclick={() => (show_profile_editor = !show_profile_editor)}
class="w-full flex justify-between items-center font-bold text-left" class="w-full flex justify-between items-center font-bold text-left"
> >
Change Name Profile
<span class="fas {show_name_changer ? 'fa-chevron-up' : 'fa-chevron-down'}"></span> <span class="fas {show_profile_editor ? 'fa-chevron-up' : 'fa-chevron-down'}"></span>
</button> </button>
{#if show_name_changer} {#if show_profile_editor}
<div class="mt-1 pl-2"> <div class="mt-1 pl-2 space-y-2">
<span class="w-full flex flex-row items-center justify-between gap-1"> <div>
<input <label for="display_name_input" class="block font-semibold">Name:</label>
type="text" <input
id="display_name_input" type="text"
bind:value={name_input} id="display_name_input"
class="border rounded px-2 py-1 w-full" bind:value={name_input}
placeholder="Enter new display name" class="border rounded px-2 py-1 w-full"
/> placeholder="Enter new display name"
<button />
onclick={handle_name_update} </div>
class="px-2 py-1 bg-green-200 text-white rounded hover:bg-green-400" <div>
title="Update your display name" <label for="email_input" class="block font-semibold">Email:</label>
> <input
<span class="fas fa-user-edit" aria-hidden="true"></span> type="email"
<span class="sr-only">Update Display Name</span> id="email_input"
</button> bind:value={email_input}
</span> class="border rounded px-2 py-1 w-full"
placeholder="Enter new email"
/>
</div>
<button
onclick={handle_profile_update}
class="w-full mt-1 px-2 py-1 bg-green-500 text-white rounded hover:bg-green-600"
title="Update your profile"
>
<span class="fas fa-user-edit" aria-hidden="true"></span>
Update Profile
</button>
</div> </div>
{/if} {/if}
</div> </div>
@@ -666,7 +689,9 @@
{/if} {/if}
</div> </div>
<div class="mt-2 pt-2 border-t-2 border-dashed border-gray-400"> <div class="
flex flex-col sm:flex-row gap-1 items-center justify-center w-full
mt-2 pt-2 border-t-2 border-dashed border-gray-400">
<button <button
class="mt-2 px-2 py-1 bg-orange-200 text-white rounded hover:bg-orange-400" class="mt-2 px-2 py-1 bg-orange-200 text-white rounded hover:bg-orange-400"