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.
This commit is contained in:
@@ -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'}
|
||||
</span>
|
||||
</button>
|
||||
|
||||
<!-- QR Code toggle — only shown to trusted staff and only when
|
||||
admin has NOT already enabled QR globally (if they have,
|
||||
it shows automatically without needing this toggle) -->
|
||||
{#if $ae_loc.trusted_access && !pres_mgmt_loc.current.show__session_qr}
|
||||
<button
|
||||
type="button"
|
||||
onclick={() => {
|
||||
pres_mgmt_loc.current.show_content__session_qr =
|
||||
!pres_mgmt_loc.current.show_content__session_qr;
|
||||
}}
|
||||
class="btn btn-sm mt-1 w-full justify-between"
|
||||
class:ae_btn_surface={pres_mgmt_loc.current.show_content__session_qr}
|
||||
class:ae_btn_surface_outlined={!pres_mgmt_loc.current.show_content__session_qr}>
|
||||
{#if pres_mgmt_loc.current.show_content__session_qr}<ToggleRight
|
||||
size="1em"
|
||||
class="mr-1" />{:else}<ToggleLeft
|
||||
size="1em"
|
||||
class="mr-1" />{/if}
|
||||
<span class="grow">
|
||||
<QrCode size="1em" class="mr-1" />
|
||||
{pres_mgmt_loc.current.show_content__session_qr
|
||||
? 'Hide QR Code'
|
||||
: 'Show QR Code'}
|
||||
</span>
|
||||
</button>
|
||||
{/if}
|
||||
</section>
|
||||
|
||||
<!-- Launcher Settings -->
|
||||
|
||||
@@ -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() {
|
||||
<!-- QR code: floats top-right, compact by default, toggle to enlarge.
|
||||
Only rendered once the async URL is resolved (string), never while
|
||||
it is still the boolean `true` loading placeholder. -->
|
||||
{#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'}
|
||||
<div class="float-right mb-1 ml-3 flex flex-col items-center gap-1">
|
||||
<button
|
||||
type="button"
|
||||
|
||||
Reference in New Issue
Block a user