From 2e4547f4337246a8e0518bdf236941fe4f4c9171 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 16 Jun 2026 12:02:03 -0400 Subject: [PATCH] pres_mgmt: fix session QR never showing for POCs/presenters The condition (show__session_qr || trusted_access) && show_content__session_qr required the local per-browser toggle to also be true. Non-trusted users (POCs, presenters) have no way to set it, so QR never appeared even when admin had enabled it in Config. New logic: show__session_qr alone is sufficient to generate and display the QR. show_content__session_qr is now a staff-only override for when admin has NOT enabled QR globally (allows trusted users to force it on per-browser). Also: add QR Code toggle to session page Options modal (Display section), visible to trusted staff only when admin has not already enabled it globally. --- .../[session_id]/session_page_menu.svelte | 29 ++++++++++++++++++- .../session/[session_id]/session_view.svelte | 9 ++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_page_menu.svelte b/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_page_menu.svelte index 7e05e74c..f0399d6f 100644 --- a/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_page_menu.svelte +++ b/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_page_menu.svelte @@ -15,7 +15,7 @@ let { import { goto } from '$app/navigation'; import { Modal } from 'flowbite-svelte'; -import { Clock, Info, Send, Settings, ToggleLeft, ToggleRight, X } from '@lucide/svelte'; +import { Clock, Info, QrCode, Send, Settings, ToggleLeft, ToggleRight, X } from '@lucide/svelte'; import { ae_loc, ae_api } from '$lib/stores/ae_stores'; import { events_slct } from '$lib/stores/ae_events_stores'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; @@ -191,6 +191,33 @@ async function toggle_hide_launcher() { {pres_mgmt_loc.current.use_12h ? '12-Hour Time' : '24-Hour Time'} + + + {#if $ae_loc.trusted_access && !pres_mgmt_loc.current.show__session_qr} + + {/if} diff --git a/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_view.svelte b/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_view.svelte index b57cae84..d8ed1467 100644 --- a/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_view.svelte +++ b/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_view.svelte @@ -175,10 +175,13 @@ let poc_is_authed = $derived( // QR Code Generation Logic $events_sess.pres_mgmt.session__updated_on = null; $effect(() => { + // Generate QR when admin has enabled it (show__session_qr) OR trusted staff + // has turned on their local override (show_content__session_qr). + // show_content__session_qr is NOT required when show__session_qr is true — + // non-trusted users (POCs, presenters) have no way to toggle it. if ( $lq__event_session_obj?.id && - (pres_mgmt_loc.current.show__session_qr || $ae_loc.trusted_access) && - pres_mgmt_loc.current.show_content__session_qr && + (pres_mgmt_loc.current.show__session_qr || ($ae_loc.trusted_access && pres_mgmt_loc.current.show_content__session_qr)) && !$events_sess.pres_mgmt.session_qr_url[$lq__event_session_obj.id] ) { $events_sess.pres_mgmt.session_qr_url[$lq__event_session_obj.id] = true; @@ -237,7 +240,7 @@ async function send_poc_email_link() { - {#if $lq__event_session_obj && (pres_mgmt_loc.current.show__session_qr || $ae_loc.trusted_access) && typeof $events_sess.pres_mgmt.session_qr_url?.[$lq__event_session_obj.id] === 'string'} + {#if $lq__event_session_obj && (pres_mgmt_loc.current.show__session_qr || ($ae_loc.trusted_access && pres_mgmt_loc.current.show_content__session_qr)) && typeof $events_sess.pres_mgmt.session_qr_url?.[$lq__event_session_obj.id] === 'string'}