feat(stores): promote events auth state to Svelte 5 PersistedState

Creates ae_events_stores__auth.svelte.ts with PersistedState keyed
'ae_events_auth_loc' for auth__person and auth__kv (presenter/session
sign-in state). Migrated 10 component files from $events_loc.auth__* to
events_auth_loc.current.auth__*.

Also fixed stale pres_mgmt stragglers: $events_loc.pres_mgmt.* refs in
presenter_obj_li.svelte, presenter_page_menu.svelte, and [presenter_id]/
+page.svelte now use pres_mgmt_loc.current.* directly.

show_details boolean moved from events_loc to leads_loc (it belongs in
the leads module — one bind in ae_tab__manage.svelte).

auth__person, auth__kv, show_details, events_cfg_json, event_id removed
from events_local_data_struct. events_loc now only carries ver, title,
and qry__* prefs.

svelte-check: 0 errors, 0 warnings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-06-11 16:19:49 -04:00
parent 27c775d816
commit 83c9b9fd4f
17 changed files with 110 additions and 97 deletions

View File

@@ -30,7 +30,6 @@ import {
} from '$lib/stores/ae_stores'; } from '$lib/stores/ae_stores';
// import { core_func } from '$lib/ae_core/ae_core_functions'; // import { core_func } from '$lib/ae_core/ae_core_functions';
// Ideally the Event related stores should not be imported here? // Ideally the Event related stores should not be imported here?
import { events_loc } from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
// import { db_events } from "$lib/db_events"; // import { db_events } from "$lib/db_events";

View File

@@ -28,10 +28,6 @@ const events_local_data_struct: key_val = {
name: 'Aether - Events', name: 'Aether - Events',
title: `OSIT's Æ Events`, title: `OSIT's Æ Events`,
events_cfg_json: {},
event_id: null,
// all, disabled, enabled // all, disabled, enabled
qry__enabled: 'enabled', qry__enabled: 'enabled',
// all, hidden, not_hidden // all, hidden, not_hidden
@@ -39,27 +35,9 @@ const events_local_data_struct: key_val = {
qry__limit: 20, qry__limit: 20,
qry__offset: 0, qry__offset: 0,
// The show details is intended for things like meta data and additional details that are not always needed. // auth__person and auth__kv have been promoted to events_auth_loc (ae_events_stores__auth.svelte.ts).
show_details: false, // show_details has been moved to leads_loc (ae_events_stores__leads_defaults.ts).
// events_cfg_json and event_id were unused — removed.
auth__person: {}, // allow, id, name, email, passcode, etc
// The auth__entered_key (usually email or person_id) and auth__entered_passcode is found under events_sess.entered_key and events_sess.entered_passcode because it should be temporary.
// auth__entered_passcode: null,
// auth__kv tracks which IDs the browser client is permitted to access.
// Each entry is an ID mapped to true, false, 'read', or 'write'.
// Keys should be no older than a configurable max age (checked on read).
auth__kv: {
event: {},
exhibit: {},
location: {},
session: {},
presentation: {},
presenter: {},
person: {}
},
// Event Presentation Launcher — see ae_events_stores__launcher_defaults.ts
// badges, leads, pres_mgmt, launcher have all been promoted to their own PersistedState stores. // badges, leads, pres_mgmt, launcher have all been promoted to their own PersistedState stores.
}; };

View File

@@ -0,0 +1,30 @@
import { PersistedState } from 'runed';
const events_auth_loc_defaults = {
auth__person: {
id: null as string | null,
person_id: null as string | null,
entered_key: null as string | null,
email: null as string | null,
full_name: null as string | null,
presenter_id: null as string | null,
presentation_id: null as string | null,
session_id: null as string | null
},
auth__kv: {
event: {} as Record<string, any>,
exhibit: {} as Record<string, any>,
location: {} as Record<string, any>,
session: {} as Record<string, any>,
presentation: {} as Record<string, any>,
presenter: {} as Record<string, any>,
person: {} as Record<string, any>
}
};
export const events_auth_loc = new PersistedState('ae_events_auth_loc', events_auth_loc_defaults, {
serializer: {
serialize: JSON.stringify,
deserialize: (raw: string) => ({ ...events_auth_loc_defaults, ...JSON.parse(raw) })
}
});

View File

@@ -8,6 +8,7 @@
export interface LeadsLocState { export interface LeadsLocState {
__version: number; __version: number;
show_details: boolean; // Show extra metadata/details in the leads tab (was events_loc.show_details)
show_option__paid_tab: boolean; show_option__paid_tab: boolean;
show_content__scan_alert: boolean; show_content__scan_alert: boolean;
show_content__scan_requirements: boolean; show_content__scan_requirements: boolean;
@@ -80,6 +81,7 @@ export interface LeadsSessState {
// Persisted leads config — survives browser sessions. // Persisted leads config — survives browser sessions.
export const leads_loc_defaults: LeadsLocState = { export const leads_loc_defaults: LeadsLocState = {
__version: 1, __version: 1,
show_details: false, // Show extra metadata/details in the leads tab (was events_loc.show_details)
show_option__paid_tab: true, show_option__paid_tab: true,
show_content__scan_alert: true, // Workaround for QR scanner edge-case bug. show_content__scan_alert: true, // Workaround for QR scanner edge-case bug.
show_content__scan_requirements: true, show_content__scan_requirements: true,

View File

@@ -7,7 +7,7 @@ import { page } from '$app/state';
import { liveQuery } from 'dexie'; import { liveQuery } from 'dexie';
import { db_events } from '$lib/ae_events/db_events'; import { db_events } from '$lib/ae_events/db_events';
import { ae_api, ae_loc } from '$lib/stores/ae_stores'; import { ae_api, ae_loc } from '$lib/stores/ae_stores';
import { events_loc, events_sess } from '$lib/stores/ae_events_stores'; import { events_sess } from '$lib/stores/ae_events_stores';
import { leads_loc } from '$lib/stores/ae_events_stores__leads.svelte'; import { leads_loc } from '$lib/stores/ae_events_stores__leads.svelte';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
import Element_ae_obj_field_editor from '$lib/elements/element_ae_obj_field_editor.svelte'; import Element_ae_obj_field_editor from '$lib/elements/element_ae_obj_field_editor.svelte';
@@ -605,7 +605,7 @@ function handle_signout() {
<input <input
type="checkbox" type="checkbox"
class="checkbox" class="checkbox"
bind:checked={$events_loc.show_details} /> bind:checked={leads_loc.current.show_details} />
</label> </label>
</div> </div>
</div> </div>

View File

@@ -33,6 +33,7 @@ import {
// events_trigger // events_trigger
} from '$lib/stores/ae_events_stores'; } from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
import Comp_event_files_upload from '../../../ae_comp__event_files_upload.svelte'; import Comp_event_files_upload from '../../../ae_comp__event_files_upload.svelte';
@@ -593,10 +594,10 @@ if (
<Element_manage_event_file_li_wrap <Element_manage_event_file_li_wrap
link_to_type={'event'} link_to_type={'event'}
link_to_id={$lq__event_obj?.event_id} link_to_id={$lq__event_obj?.event_id}
allow_basic={$events_loc.auth__kv.session[ allow_basic={events_auth_loc.current.auth__kv.session[
$lq__event_obj?.event_id $lq__event_obj?.event_id
]} ]}
allow_moderator={$events_loc.auth__kv.session[ allow_moderator={events_auth_loc.current.auth__kv.session[
$lq__event_obj?.event_id $lq__event_obj?.event_id
]} ]}
container_class_li={''} /> container_class_li={''} />

View File

@@ -33,6 +33,7 @@ import {
events_trigger events_trigger
} from '$lib/stores/ae_events_stores'; } from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
import Comp_event_files_upload from '../../../../ae_comp__event_files_upload.svelte'; import Comp_event_files_upload from '../../../../ae_comp__event_files_upload.svelte';
@@ -108,7 +109,7 @@ let lq__event_presentation_obj = $derived(
let lq__auth__event_presenter_obj = $derived( let lq__auth__event_presenter_obj = $derived(
liveQuery(async () => { liveQuery(async () => {
let results = await db_events.presenter.get( let results = await db_events.presenter.get(
$events_loc.auth__person?.presenter_id ?? null events_auth_loc.current.auth__person?.presenter_id ?? null
); );
return results; return results;
@@ -201,7 +202,7 @@ let lq__auth__event_presenter_obj = $derived(
<span <span
class="flex flex-col items-end justify-center gap-0.25 font-normal"> class="flex flex-col items-end justify-center gap-0.25 font-normal">
<span class="text-sm text-gray-600 dark:text-gray-400"> <span class="text-sm text-gray-600 dark:text-gray-400">
{#if !$ae_loc.trusted_access && !$events_loc.auth__kv.presenter[$lq__event_presenter_obj?.event_presenter_id] && !$events_loc.auth__kv.session[$lq__event_presenter_obj.event_session_id]} {#if !$ae_loc.trusted_access && !events_auth_loc.current.auth__kv.presenter[$lq__event_presenter_obj?.event_presenter_id] && !events_auth_loc.current.auth__kv.session[$lq__event_presenter_obj.event_session_id]}
<!-- Only show the domain name of the email address. --> <!-- Only show the domain name of the email address. -->
<!-- ( --> <!-- ( -->
<!-- {$lq__event_presenter_obj.email.replace(/@.*$/, '@...')} --> <!-- {$lq__event_presenter_obj.email.replace(/@.*$/, '@...')} -->
@@ -248,7 +249,7 @@ let lq__auth__event_presenter_obj = $derived(
></MyClipboard> ></MyClipboard>
{/if} {/if}
{#if pres_mgmt_loc.current.require__presenter_agree && $events_loc?.pres_mgmt?.show__email_access_link && $lq__event_presenter_obj?.person_primary_email && ($ae_loc.public_access || !$events_loc.auth__person?.id)} {#if pres_mgmt_loc.current.require__presenter_agree && pres_mgmt_loc.current.show__email_access_link && $lq__event_presenter_obj?.person_primary_email && ($ae_loc.public_access || !events_auth_loc.current.auth__person?.id)}
<button <button
type="button" type="button"
onclick={() => { onclick={() => {
@@ -348,7 +349,7 @@ let lq__auth__event_presenter_obj = $derived(
</h3> </h3>
<!-- Yes... This is a duplicate of what is shown when they press "Presenter Files" button. It can be cleaned up later. --> <!-- Yes... This is a duplicate of what is shown when they press "Presenter Files" button. It can be cleaned up later. -->
{#if $ae_loc.trusted_access || $events_loc.auth__kv.presenter[$lq__event_presenter_obj?.event_presenter_id]} {#if $ae_loc.trusted_access || events_auth_loc.current.auth__kv.presenter[$lq__event_presenter_obj?.event_presenter_id]}
<Comp_event_files_upload <Comp_event_files_upload
class_li="border border-surface-200-800 rounded-xl p-4 bg-surface-50-900 hover:bg-surface-100-900 transition-colors duration-200" class_li="border border-surface-200-800 rounded-xl p-4 bg-surface-50-900 hover:bg-surface-100-900 transition-colors duration-200"
link_to_type="event_presenter" link_to_type="event_presenter"
@@ -379,13 +380,13 @@ let lq__auth__event_presenter_obj = $derived(
<Element_manage_event_file_li_wrap <Element_manage_event_file_li_wrap
link_to_type={'event_presenter'} link_to_type={'event_presenter'}
link_to_id={$lq__event_presenter_obj?.event_presenter_id} link_to_id={$lq__event_presenter_obj?.event_presenter_id}
allow_basic={$events_loc.auth__kv.presenter[ allow_basic={events_auth_loc.current.auth__kv.presenter[
$lq__event_presenter_obj?.event_presenter_id $lq__event_presenter_obj?.event_presenter_id
] || ] ||
$events_loc.auth__kv.presenter[ events_auth_loc.current.auth__kv.presenter[
$lq__event_presenter_obj?.event_presenter_id $lq__event_presenter_obj?.event_presenter_id
]} ]}
allow_moderator={$events_loc.auth__kv.presenter[ allow_moderator={events_auth_loc.current.auth__kv.presenter[
$lq__event_presenter_obj?.event_presenter_id $lq__event_presenter_obj?.event_presenter_id
]} ]}
container_class_li={''} /> container_class_li={''} />
@@ -404,7 +405,7 @@ let lq__auth__event_presenter_obj = $derived(
</span> </span>
</h3> </h3>
{#if $ae_loc.public_access || $events_loc.auth__kv.presenter[$lq__event_presenter_obj?.event_presenter_id]} {#if $ae_loc.public_access || events_auth_loc.current.auth__kv.presenter[$lq__event_presenter_obj?.event_presenter_id]}
<Comp_event_files_upload <Comp_event_files_upload
class_li="border border-surface-200-800 rounded-xl p-4 bg-surface-50-900 hover:bg-surface-100-900 transition-colors duration-200" class_li="border border-surface-200-800 rounded-xl p-4 bg-surface-50-900 hover:bg-surface-100-900 transition-colors duration-200"
link_to_type="event_presenter" link_to_type="event_presenter"
@@ -437,10 +438,10 @@ let lq__auth__event_presenter_obj = $derived(
link_to_type={'event_presenter'} link_to_type={'event_presenter'}
link_to_id={$lq__event_presenter_obj?.event_presenter_id} link_to_id={$lq__event_presenter_obj?.event_presenter_id}
allow_basic={$ae_loc.public_access || allow_basic={$ae_loc.public_access ||
$events_loc.auth__kv.presenter[ events_auth_loc.current.auth__kv.presenter[
$lq__event_presenter_obj?.event_presenter_id $lq__event_presenter_obj?.event_presenter_id
]} ]}
allow_moderator={$events_loc.auth__kv.presenter[ allow_moderator={events_auth_loc.current.auth__kv.presenter[
$lq__event_presenter_obj?.event_presenter_id $lq__event_presenter_obj?.event_presenter_id
]} ]}
container_class_li={''} /> container_class_li={''} />

View File

@@ -29,11 +29,11 @@ import {
} from '$lib/stores/ae_stores'; } from '$lib/stores/ae_stores';
// import { db_events } from "$lib/db_events"; // import { db_events } from "$lib/db_events";
import { import {
events_loc,
events_sess, events_sess,
events_slct, events_slct,
events_trigger events_trigger
} from '$lib/stores/ae_events_stores'; } from '$lib/stores/ae_events_stores';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
import { import {
Check, Check,
@@ -334,7 +334,7 @@ async function handle_update__event_presenter({
<button <button
type="button" type="button"
disabled={!$ae_loc.administrator_access && disabled={!$ae_loc.administrator_access &&
!$events_loc.auth__kv.presentation[ !events_auth_loc.current.auth__kv.presentation[
$lq__event_presenter_obj $lq__event_presenter_obj
?.event_presentation_id_random ?.event_presentation_id_random
]} ]}
@@ -403,7 +403,7 @@ async function handle_update__event_presenter({
<button <button
type="button" type="button"
disabled={!$ae_loc.administrator_access && disabled={!$ae_loc.administrator_access &&
!$events_loc.auth__kv.presentation[ !events_auth_loc.current.auth__kv.presentation[
$lq__event_presenter_obj $lq__event_presenter_obj
?.event_presentation_id_random ?.event_presentation_id_random
]} ]}

View File

@@ -11,8 +11,9 @@ import { goto } from '$app/navigation';
import { Modal } from 'flowbite-svelte'; import { Modal } from 'flowbite-svelte';
import { Check, Info, Pencil, QrCode, Settings, X } from '@lucide/svelte'; import { Check, Info, Pencil, QrCode, Settings, X } from '@lucide/svelte';
import { ae_loc, ae_api } from '$lib/stores/ae_stores'; import { ae_loc, ae_api } from '$lib/stores/ae_stores';
import { events_loc, events_sess, events_slct } from '$lib/stores/ae_events_stores'; import { events_sess, events_slct } from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
import { api } from '$lib/api/api'; import { api } from '$lib/api/api';
@@ -100,7 +101,7 @@ async function on_delete(method: 'delete' | 'disable') {
<button <button
type="button" type="button"
disabled={!$ae_loc.trusted_access && disabled={!$ae_loc.trusted_access &&
!$events_loc.auth__kv.presenter[ !events_auth_loc.current.auth__kv.presenter[
$lq__event_presenter_obj?.event_presenter_id $lq__event_presenter_obj?.event_presenter_id
]} ]}
onclick={() => { onclick={() => {
@@ -120,7 +121,7 @@ async function on_delete(method: 'delete' | 'disable') {
<button <button
type="button" type="button"
disabled={!$ae_loc.trusted_access && disabled={!$ae_loc.trusted_access &&
!$events_loc.auth__kv.presenter[ !events_auth_loc.current.auth__kv.presenter[
$lq__event_presenter_obj?.event_presenter_id $lq__event_presenter_obj?.event_presenter_id
]} ]}
onclick={() => { onclick={() => {
@@ -183,8 +184,7 @@ async function on_delete(method: 'delete' | 'disable') {
}} }}
class="btn btn-sm" class="btn btn-sm"
class:ae_btn_surface={pres_mgmt_loc.current.show_content__presenter_qr} class:ae_btn_surface={pres_mgmt_loc.current.show_content__presenter_qr}
class:ae_btn_surface_outlined={!$events_loc class:ae_btn_surface_outlined={!pres_mgmt_loc.current.show_content__presenter_qr}>
.pres_mgmt.show_content__presenter_qr}>
<QrCode size="1em" class="mr-1" /> <QrCode size="1em" class="mr-1" />
{pres_mgmt_loc.current.show_content__presenter_qr {pres_mgmt_loc.current.show_content__presenter_qr
? 'Hide QR Code' ? 'Hide QR Code'

View File

@@ -35,12 +35,12 @@ import {
} from '$lib/stores/ae_stores'; } from '$lib/stores/ae_stores';
// import { db_events } from "$lib/ae_events/db_events"; // import { db_events } from "$lib/ae_events/db_events";
import { import {
events_loc,
events_sess, events_sess,
events_slct, events_slct,
events_trigger events_trigger
} from '$lib/stores/ae_events_stores'; } from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
import { import {
Asterisk, Asterisk,
@@ -507,10 +507,10 @@ $effect(() => {
<li <li
class:hidden={!$ae_loc.trusted_access && class:hidden={!$ae_loc.trusted_access &&
!$events_loc.auth__kv.presenter[ !events_auth_loc.current.auth__kv.presenter[
$lq__event_presenter_obj?.event_presenter_id $lq__event_presenter_obj?.event_presenter_id
] && ] &&
!$events_loc.auth__kv.session[ !events_auth_loc.current.auth__kv.session[
$lq__event_presenter_obj.event_session_id $lq__event_presenter_obj.event_session_id
]}> ]}>
<Element_ae_obj_field_editor <Element_ae_obj_field_editor
@@ -1050,7 +1050,7 @@ $effect(() => {
<li <li
class:hidden={!$lq__event_presenter_obj.person_id || class:hidden={!$lq__event_presenter_obj.person_id ||
(!$ae_loc.trusted_access && (!$ae_loc.trusted_access &&
!$events_loc.auth__kv.presenter[ !events_auth_loc.current.auth__kv.presenter[
$lq__event_presenter_obj?.event_presenter_id $lq__event_presenter_obj?.event_presenter_id
])}> ])}>
<Element_ae_obj_field_editor <Element_ae_obj_field_editor
@@ -1145,7 +1145,7 @@ $effect(() => {
name="biography" name="biography"
id="presenter__biography" id="presenter__biography"
disabled={!$ae_loc.trusted_access && disabled={!$ae_loc.trusted_access &&
!$events_loc.auth__kv.presenter[ !events_auth_loc.current.auth__kv.presenter[
$lq__event_presenter_obj?.event_presenter_id $lq__event_presenter_obj?.event_presenter_id
]} ]}
class="textarea ae_value event_presenter__biography font-mono" class="textarea ae_value event_presenter__biography font-mono"

View File

@@ -33,13 +33,13 @@ import {
slct_trigger slct_trigger
} from '$lib/stores/ae_stores'; } from '$lib/stores/ae_stores';
import { import {
events_loc,
events_sess, events_sess,
events_slct, events_slct,
events_trigger, events_trigger,
events_trig_kv events_trig_kv
} from '$lib/stores/ae_events_stores'; } from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
import { ae_util } from '$lib/ae_utils/ae_utils'; import { ae_util } from '$lib/ae_utils/ae_utils';
import { import {
@@ -186,7 +186,7 @@ let ae_tmp: key_val = $state({});
{/if} {/if}
</a> </a>
{#if $events_loc?.pres_mgmt?.show__email_access_link && event_presenter_obj?.person_primary_email && ($ae_loc.administrator_access || !$events_loc.auth__person?.id)} {#if pres_mgmt_loc.current.show__email_access_link && event_presenter_obj?.person_primary_email && ($ae_loc.administrator_access || !events_auth_loc.current.auth__person?.id)}
<button <button
type="button" type="button"
onclick={() => { onclick={() => {
@@ -249,7 +249,7 @@ let ae_tmp: key_val = $state({});
<button <button
type="button" type="button"
disabled={!$ae_loc.trusted_access && disabled={!$ae_loc.trusted_access &&
!$events_loc.auth__kv.presenter[ !events_auth_loc.current.auth__kv.presenter[
event_presenter_obj.event_presenter_id event_presenter_obj.event_presenter_id
]} ]}
onclick={() => { onclick={() => {
@@ -275,7 +275,7 @@ let ae_tmp: key_val = $state({});
<button <button
type="button" type="button"
disabled={!$ae_loc.trusted_access && disabled={!$ae_loc.trusted_access &&
!$events_loc.auth__kv.presenter[ !events_auth_loc.current.auth__kv.presenter[
event_presenter_obj.event_presenter_id event_presenter_obj.event_presenter_id
]} ]}
onclick={() => { onclick={() => {

View File

@@ -23,11 +23,11 @@ import { liveQuery } from 'dexie';
import { db_events } from '$lib/ae_events/db_events'; import { db_events } from '$lib/ae_events/db_events';
import { ae_snip, ae_loc, ae_api, slct } from '$lib/stores/ae_stores'; import { ae_snip, ae_loc, ae_api, slct } from '$lib/stores/ae_stores';
import { import {
events_loc,
events_sess, events_sess,
events_slct events_slct
} from '$lib/stores/ae_events_stores'; } from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
import Session_view from './session_view.svelte'; import Session_view from './session_view.svelte';
@@ -98,7 +98,7 @@ let lq__event_presenter_obj = $derived.by(() => {
}); });
let lq__auth__event_presenter_obj = $derived.by(() => { let lq__auth__event_presenter_obj = $derived.by(() => {
const pid = $events_loc.auth__person?.presenter_id; const pid = events_auth_loc.current.auth__person?.presenter_id;
return liveQuery(async () => { return liveQuery(async () => {
if (!pid) return null; if (!pid) return null;
return await db_events.presenter.get(pid); return await db_events.presenter.get(pid);
@@ -178,7 +178,7 @@ if (!$events_sess.pres_mgmt) $events_sess.pres_mgmt = {};
{#if pres_mgmt_loc.current.show_content__session_view === 'manage_files' && $ae_loc.authenticated_access} {#if pres_mgmt_loc.current.show_content__session_view === 'manage_files' && $ae_loc.authenticated_access}
<!-- Session Files Section --> <!-- Session Files Section -->
<div> <div>
{#if $ae_loc.trusted_access || $events_loc.auth__kv.session[url_session_id]} {#if $ae_loc.trusted_access || events_auth_loc.current.auth__kv.session[url_session_id]}
<Comp_event_files_upload <Comp_event_files_upload
class_li="border border-surface-200-800 rounded-xl p-4 bg-surface-50-900 hover:bg-surface-100-900 transition-colors duration-200" class_li="border border-surface-200-800 rounded-xl p-4 bg-surface-50-900 hover:bg-surface-100-900 transition-colors duration-200"
link_to_type="event_session" link_to_type="event_session"
@@ -202,9 +202,9 @@ if (!$events_sess.pres_mgmt) $events_sess.pres_mgmt = {};
link_to_type="event_session" link_to_type="event_session"
link_to_id={url_session_id} link_to_id={url_session_id}
allow_basic={$ae_loc.trusted_access || allow_basic={$ae_loc.trusted_access ||
!!$events_loc.auth__kv.session[url_session_id]} !!events_auth_loc.current.auth__kv.session[url_session_id]}
allow_moderator={$ae_loc.trusted_access || allow_moderator={$ae_loc.trusted_access ||
!!$events_loc.auth__kv.session[url_session_id]} !!events_auth_loc.current.auth__kv.session[url_session_id]}
container_class_li={''} /> container_class_li={''} />
</div> </div>
</div> </div>

View File

@@ -21,12 +21,12 @@ import {
slct_trigger slct_trigger
} from '$lib/stores/ae_stores'; } from '$lib/stores/ae_stores';
import { import {
events_loc,
events_sess, events_sess,
events_slct, events_slct,
events_trigger events_trigger
} from '$lib/stores/ae_events_stores'; } from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
// Import components and elements // Import components and elements
@@ -312,7 +312,7 @@ async function handle_submit_form(event: SubmitEvent) {
<button <button
type="button" type="button"
disabled={!$ae_loc.administrator_access && disabled={!$ae_loc.administrator_access &&
!$events_loc.auth__kv.session[ !events_auth_loc.current.auth__kv.session[
$lq__event_session_obj?.event_session_id $lq__event_session_obj?.event_session_id
] === true} ] === true}
onclick={() => { onclick={() => {

View File

@@ -23,12 +23,12 @@ import {
slct_trigger slct_trigger
} from '$lib/stores/ae_stores'; } from '$lib/stores/ae_stores';
import { import {
events_loc,
events_sess, events_sess,
events_slct, events_slct,
events_trigger events_trigger
} from '$lib/stores/ae_events_stores'; } from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
// import { db_events } from "$lib/db_events"; // import { db_events } from "$lib/db_events";
import MyClipboard from '$lib/app_components/e_app_clipboard.svelte'; import MyClipboard from '$lib/app_components/e_app_clipboard.svelte';
@@ -131,7 +131,7 @@ let clipboard_success = $state(false);
name="biography" name="biography"
id="session_poc__biography" id="session_poc__biography"
disabled={!$ae_loc.trusted_access && disabled={!$ae_loc.trusted_access &&
!$events_loc.auth__kv.session[ !events_auth_loc.current.auth__kv.session[
$lq__event_session_obj?.event_session_id_random $lq__event_session_obj?.event_session_id_random
]} ]}
class="textarea ae_value event_session__biography font-mono" class="textarea ae_value event_session__biography font-mono"

View File

@@ -17,8 +17,9 @@ import { goto } from '$app/navigation';
import { Modal } from 'flowbite-svelte'; import { Modal } from 'flowbite-svelte';
import { Clock, Info, Send, Settings, ToggleLeft, ToggleRight, X } from '@lucide/svelte'; import { Clock, Info, Send, Settings, ToggleLeft, ToggleRight, X } from '@lucide/svelte';
import { ae_loc, ae_api } from '$lib/stores/ae_stores'; import { ae_loc, ae_api } from '$lib/stores/ae_stores';
import { events_loc, events_slct } from '$lib/stores/ae_events_stores'; import { events_slct } from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
import { api } from '$lib/api/api'; import { api } from '$lib/api/api';
@@ -132,7 +133,7 @@ async function toggle_hide_launcher() {
<span <span
class="ae_menu__action_options" class="ae_menu__action_options"
class:hidden={!$events_loc.auth__person?.id}> class:hidden={!events_auth_loc.current.auth__person?.id}>
{#if $lq__event_session_obj?.event_id} {#if $lq__event_session_obj?.event_id}
<Sign_in_out <Sign_in_out
{data} {data}

View File

@@ -27,12 +27,12 @@ import {
slct_trigger slct_trigger
} from '$lib/stores/ae_stores'; } from '$lib/stores/ae_stores';
import { import {
events_loc,
events_sess, events_sess,
events_slct, events_slct,
events_trigger, events_trigger,
events_trig_kv events_trig_kv
} from '$lib/stores/ae_events_stores'; } from '$lib/stores/ae_events_stores';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import { LogIn, X } from '@lucide/svelte'; import { LogIn, X } from '@lucide/svelte';
onMount(() => { onMount(() => {
console.log('Browser environment detected.'); console.log('Browser environment detected.');
@@ -110,16 +110,16 @@ function session_sign_in() {
$ae_loc.public_access = true; $ae_loc.public_access = true;
$ae_loc.authenticated_access = true; $ae_loc.authenticated_access = true;
$events_loc.auth__person.id = $events_sess.auth__person.id; // person_id events_auth_loc.current.auth__person.id = $events_sess.auth__person.id; // person_id
$events_loc.auth__person.person_id = $events_sess.auth__person.id; events_auth_loc.current.auth__person.person_id = $events_sess.auth__person.id;
$events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // need to verify entered_key... events_auth_loc.current.auth__person.entered_key = $events_sess.auth__entered_key; // need to verify entered_key...
$events_loc.auth__kv.person[$events_sess.auth__person.person_id] = true; events_auth_loc.current.auth__kv.person[$events_sess.auth__person.person_id] = true;
$events_loc.auth__kv.session[$events_sess.auth__person.session_id] = true; events_auth_loc.current.auth__kv.session[$events_sess.auth__person.session_id] = true;
$events_loc.auth__kv.presentation[ events_auth_loc.current.auth__kv.presentation[
$events_sess.auth__person.presentation_id $events_sess.auth__person.presentation_id
] = false; // Set to false for session POC (LCI Champions). ] = false; // Set to false for session POC (LCI Champions).
$events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = events_auth_loc.current.auth__kv.presenter[$events_sess.auth__person.presenter_id] =
false; // Set to false for session POC (LCI Champions). false; // Set to false for session POC (LCI Champions).
// Setting again here... just because for now. // Setting again here... just because for now.
@@ -141,31 +141,31 @@ function presenter_sign_in() {
$ae_loc.person_id = $events_sess.auth__person.id; $ae_loc.person_id = $events_sess.auth__person.id;
$events_loc.auth__person.id = $events_sess.auth__person.id; // person_id events_auth_loc.current.auth__person.id = $events_sess.auth__person.id; // person_id
$events_loc.auth__person.person_id = $events_sess.auth__person.id; events_auth_loc.current.auth__person.person_id = $events_sess.auth__person.id;
// $events_loc.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case // events_auth_loc.current.auth__person.entered_key = $events_sess.auth__entered_key; // also person_id in this case
// $lq__auth__event_presenter_obj.full_name // $lq__auth__event_presenter_obj.full_name
// $events_loc.auth__person.email = 'test@example.com'; // events_auth_loc.current.auth__person.email = 'test@example.com';
// $events_loc.auth__person.full_name = 'Test Person'; // events_auth_loc.current.auth__person.full_name = 'Test Person';
$events_loc.auth__person.presenter_id = events_auth_loc.current.auth__person.presenter_id =
$events_sess.auth__person.presenter_id; $events_sess.auth__person.presenter_id;
$events_loc.auth__kv.person[$events_sess.auth__person.person_id] = true; events_auth_loc.current.auth__kv.person[$events_sess.auth__person.person_id] = true;
// $events_loc.auth__kv.session[$events_sess.auth__person.session_id] = 'read'; // Set to 'read' for presenters. // events_auth_loc.current.auth__kv.session[$events_sess.auth__person.session_id] = 'read'; // Set to 'read' for presenters.
$events_loc.auth__kv.session[event_session_id] = 'read'; // Set to 'read' for presenters. events_auth_loc.current.auth__kv.session[event_session_id] = 'read'; // Set to 'read' for presenters.
$events_loc.auth__kv.presentation[ events_auth_loc.current.auth__kv.presentation[
$events_sess.auth__person.presentation_id $events_sess.auth__person.presentation_id
] = true; // true implies read/write access ] = true; // true implies read/write access
$events_loc.auth__kv.presenter[$events_sess.auth__person.presenter_id] = events_auth_loc.current.auth__kv.presenter[$events_sess.auth__person.presenter_id] =
true; // true implies read/write access true; // true implies read/write access
// Setting again here... just because for now. // Setting again here... just because for now.
// $events_slct.auth__event_presentation_id = $events_sess.auth__person.presentation_id; // $events_slct.auth__event_presentation_id = $events_sess.auth__person.presentation_id;
// $events_slct.auth__event_presenter_id = $events_sess.auth__person.presenter_id; // $events_slct.auth__event_presenter_id = $events_sess.auth__person.presenter_id;
$events_loc.auth__person.presentation_id = events_auth_loc.current.auth__person.presentation_id =
$events_sess.auth__person.presentation_id; $events_sess.auth__person.presentation_id;
$events_loc.auth__person.presenter_id = events_auth_loc.current.auth__person.presenter_id =
$events_sess.auth__person.presenter_id; $events_sess.auth__person.presenter_id;
} }
@@ -173,19 +173,20 @@ function sign_out() {
$ae_loc.authenticated_access = false; $ae_loc.authenticated_access = false;
$ae_loc.access_type = 'anonymous'; $ae_loc.access_type = 'anonymous';
$events_loc.auth__person = { events_auth_loc.current.auth__person = {
id: null, id: null,
email: null, email: null,
full_name: null, full_name: null,
entered_key: null, entered_key: null,
entered_passcode: null,
person_id: null, person_id: null,
presenter_id: null, presenter_id: null,
presentation_id: null, presentation_id: null,
session_id: null session_id: null
}; };
$events_loc.auth__kv = { events_auth_loc.current.auth__kv = {
event: {}, event: {},
exhibit: {},
location: {},
session: {}, session: {},
presentation: {}, presentation: {},
presenter: {}, presenter: {},
@@ -199,7 +200,7 @@ function sign_out() {
</script> </script>
<span> <span>
{#if $events_loc.auth__person?.id} {#if events_auth_loc.current.auth__person?.id}
<button <button
type="button" type="button"
class="btn btn-sm preset-tonal-warning" class="btn btn-sm preset-tonal-warning"

View File

@@ -28,13 +28,13 @@ import {
} from '$lib/stores/ae_stores'; } from '$lib/stores/ae_stores';
import { events_func } from '$lib/ae_events/ae_events_functions'; import { events_func } from '$lib/ae_events/ae_events_functions';
import { import {
events_loc,
events_sess, events_sess,
events_slct, events_slct,
events_trigger, events_trigger,
events_trig_kv events_trig_kv
} from '$lib/stores/ae_events_stores'; } from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte'; import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
import { events_auth_loc } from '$lib/stores/ae_events_stores__auth.svelte';
import Element_ae_obj_field_editor from '$lib/elements/element_ae_obj_field_editor.svelte'; import Element_ae_obj_field_editor from '$lib/elements/element_ae_obj_field_editor.svelte';
import Comp_event_presenter_obj_li from '../events/[event_id]/(pres_mgmt)/presenter/ae_comp__event_presenter_obj_li_wrapper.svelte'; import Comp_event_presenter_obj_li from '../events/[event_id]/(pres_mgmt)/presenter/ae_comp__event_presenter_obj_li_wrapper.svelte';
import Element_manage_event_file_li_wrap from '$lib/elements/element_manage_event_file_li_all.svelte'; import Element_manage_event_file_li_wrap from '$lib/elements/element_manage_event_file_li_all.svelte';
@@ -384,13 +384,13 @@ import {
<Element_manage_event_file_li_wrap <Element_manage_event_file_li_wrap
link_to_type={'event_presentation'} link_to_type={'event_presentation'}
link_to_id={event_presentation_obj?.event_presentation_id} link_to_id={event_presentation_obj?.event_presentation_id}
allow_basic={$events_loc.auth__kv.session[ allow_basic={events_auth_loc.current.auth__kv.session[
$events_slct.event_session_id $events_slct.event_session_id
] || ] ||
$events_loc.auth__kv.presenter[ events_auth_loc.current.auth__kv.presenter[
$events_slct.event_presenter_id $events_slct.event_presenter_id
]} ]}
allow_moderator={$events_loc.auth__kv.session[ allow_moderator={events_auth_loc.current.auth__kv.session[
$events_slct.event_session_id $events_slct.event_session_id
]} ]}
container_class_li={''} /> container_class_li={''} />