fix(pres_mgmt): stop treating lq__event_session_obj prop as a Svelte store in POC modals

Both ae_comp__event_session_poc_profile and ae_comp__event_session_poc_form_agree used
$lq__event_session_obj with the $ sigil throughout, expecting a store subscription. They
receive a plain resolved value from session_view.svelte, so Svelte threw store_invalid_shape
on mount. Replace all $lq__event_session_obj → lq__event_session_obj in both files.

Also clean up poc_profile: remove event_session_id_random (legacy alias) → event_session_id
in the auth check and the biography save call.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-06-12 15:53:13 -04:00
parent 45f8bb5e58
commit 080ad06a45
2 changed files with 34 additions and 54 deletions

View File

@@ -98,7 +98,7 @@ async function handle_submit_form(event: SubmitEvent) {
console.log(`opt_out_do:`, opt_out_do);
let event_session_data = {
poc_kv_json: $lq__event_session_obj.poc_kv_json
poc_kv_json: lq__event_session_obj.poc_kv_json
};
console.log('event_session_data:', event_session_data);
@@ -113,14 +113,14 @@ async function handle_submit_form(event: SubmitEvent) {
};
// Use this in the future if we need to store the agreements in a more complex way?
// let event_session_data = {poc_kv_json: $lq__event_session_obj?.poc_kv_json};
// let event_session_data = {poc_kv_json: lq__event_session_obj?.poc_kv_json};
// console.log('event_session_data:', event_session_data);
// event_session_data.poc_kv_json[poc_type]['agree'] = false;
ae_promises.update__event_session_obj__opt_out = events_func
.update_ae_obj__event_session({
api_cfg: $ae_api,
event_session_id: $lq__event_session_obj?.event_session_id,
event_session_id: lq__event_session_obj?.event_session_id,
data_kv: event_session_data,
log_lvl: log_lvl
})
@@ -134,21 +134,21 @@ async function handle_submit_form(event: SubmitEvent) {
}
</script>
{#if $lq__event_session_obj}
{#if lq__event_session_obj}
<h2 class="h3">
<span class="text-base"
>{pres_mgmt_loc.current.label__session_poc_name} Agreement for:</span
><br />
<strong
>{$lq__event_session_obj?.poc_person_full_name}
{#if $lq__event_session_obj?.poc_person_primary_email}
({$lq__event_session_obj?.poc_person_primary_email ??
>{lq__event_session_obj?.poc_person_full_name}
{#if lq__event_session_obj?.poc_person_primary_email}
({lq__event_session_obj?.poc_person_primary_email ??
'-- not set --'})
{/if}
</strong>
</h2>
{#if !$lq__event_session_obj?.poc_agree}
{#if !lq__event_session_obj?.poc_agree}
<div class="text-center text-red-500">
<div class="text-red-500">
<X size="1em" class="m-1 text-red-500" />
@@ -174,12 +174,12 @@ async function handle_submit_form(event: SubmitEvent) {
<!-- Highlight the persons name, email, and that whole line. -->
<p class="preset-tonal-warning rounded-t-md p-2 text-lg">
<strong
>{$lq__event_session_obj.poc_person_full_name} ({$lq__event_session_obj.poc_person_primary_email})</strong>
>{lq__event_session_obj.poc_person_full_name} ({lq__event_session_obj.poc_person_primary_email})</strong>
agrees to the following terms and conditions for the presentation:
</p>
<h3 class="h4 text-center">
<span class="text-base">Session:</span>
"{$lq__event_session_obj?.name}"
"{lq__event_session_obj?.name}"
</h3>
<div class="w-full">
@@ -201,7 +201,7 @@ async function handle_submit_form(event: SubmitEvent) {
class="checkbox preset-tonal-warning border-warning-500 checked:preset-filled-warning-500 hover:preset-filled-error-500 border"
id="optout_audio"
name="optout_audio"
checked={$lq__event_session_obj.poc_kv_json[poc_type]
checked={lq__event_session_obj.poc_kv_json[poc_type]
?.optout_audio}
value={true} />
Opt-out - Audio Reproduction of Presentation
@@ -215,7 +215,7 @@ async function handle_submit_form(event: SubmitEvent) {
class="checkbox preset-tonal-warning border-warning-500 checked:preset-filled-warning-500 hover:preset-filled-error-500 border"
id="optout_video"
name="optout_video"
checked={$lq__event_session_obj.poc_kv_json[poc_type]
checked={lq__event_session_obj.poc_kv_json[poc_type]
?.optout_video}
value={true} />
Opt-out - Video Reproduction of Presentation
@@ -229,7 +229,7 @@ async function handle_submit_form(event: SubmitEvent) {
class="checkbox preset-tonal-warning border-warning-500 checked:preset-filled-warning-500 hover:preset-filled-error-500 border"
id="optout_transcription_and_publication"
name="optout_transcription_and_publication"
checked={$lq__event_session_obj.poc_kv_json[poc_type]
checked={lq__event_session_obj.poc_kv_json[poc_type]
?.optout_transcription_and_publication}
value={true} />
Opt-out - Transcription and Publication of Presentation on LCI
@@ -244,7 +244,7 @@ async function handle_submit_form(event: SubmitEvent) {
class="checkbox preset-tonal-warning border-warning-500 checked:preset-filled-warning-500 hover:preset-filled-error-500 border"
id="optout_publication_in_app"
name="optout_publication_in_app"
checked={$lq__event_session_obj.poc_kv_json[poc_type]
checked={lq__event_session_obj.poc_kv_json[poc_type]
?.optout_publication_in_app}
value={true} />
Opt-out - Publication of Presentation on LCI Congress App
@@ -290,7 +290,7 @@ async function handle_submit_form(event: SubmitEvent) {
<div class="w-full text-center">
<h3 class="h4">Agree?</h3>
<!-- Agree (agreement) means this presenter has agreed to the terms and conditions. -->
{#if !$lq__event_session_obj?.poc_agree}
{#if !lq__event_session_obj?.poc_agree}
<div>
Not Agreed:
<X size="1em" class="m-1 text-red-500" />
@@ -308,12 +308,12 @@ async function handle_submit_form(event: SubmitEvent) {
</div>
{/if}
{#if !$lq__event_session_obj?.poc_agree}
{#if !lq__event_session_obj?.poc_agree}
<button
type="button"
disabled={!$ae_loc.administrator_access &&
!events_auth_loc.current.auth__kv.session[
$lq__event_session_obj?.event_session_id
lq__event_session_obj?.event_session_id
] === true}
onclick={() => {
console.log('Agree to the terms and conditions.');
@@ -325,7 +325,7 @@ async function handle_submit_form(event: SubmitEvent) {
};
// Use this in the future if we need to store the agreements in a more complex way?
// let event_session_data = {poc_kv_json: $lq__event_session_obj?.poc_kv_json};
// let event_session_data = {poc_kv_json: lq__event_session_obj?.poc_kv_json};
// console.log('event_session_data:', event_session_data);
// event_session_data.poc_kv_json[poc_type]['agree'] = true;
@@ -334,7 +334,7 @@ async function handle_submit_form(event: SubmitEvent) {
.update_ae_obj__event_session({
api_cfg: $ae_api,
event_session_id:
$lq__event_session_obj?.event_session_id,
lq__event_session_obj?.event_session_id,
data_kv: event_session_data,
log_lvl: log_lvl
})
@@ -385,7 +385,7 @@ async function handle_submit_form(event: SubmitEvent) {
};
// Use this in the future if we need to store the agreements in a more complex way?
// let event_session_data = {poc_kv_json: $lq__event_session_obj?.poc_kv_json};
// let event_session_data = {poc_kv_json: lq__event_session_obj?.poc_kv_json};
// console.log('event_session_data:', event_session_data);
// event_session_data.poc_kv_json[poc_type]['agree'] = false;
@@ -394,7 +394,7 @@ async function handle_submit_form(event: SubmitEvent) {
.update_ae_obj__event_session({
api_cfg: $ae_api,
event_session_id:
$lq__event_session_obj?.event_session_id,
lq__event_session_obj?.event_session_id,
data_kv: event_session_data,
log_lvl: log_lvl
})

View File

@@ -49,7 +49,7 @@ let poc_name = $derived(pres_mgmt_loc.current.label__session_poc_name ?? 'Point
// WHY: biography lives inside poc_kv_json keyed by poc_type — not a top-level column.
// We only seed the local draft once (when null) so the textarea doesn't overwrite in-progress edits.
$effect(() => {
const kv = $lq__event_session_obj?.poc_kv_json;
const kv = lq__event_session_obj?.poc_kv_json;
if (ae_tmp.biography === null && kv && kv[poc_type]?.biography) {
ae_tmp.biography = kv[poc_type].biography;
}
@@ -59,16 +59,12 @@ let clipboard_success = $state(false);
</script>
<section class={class_li}>
{#if $lq__event_session_obj}
{#if $lq__event_session_obj.poc_person_id && $ae_loc.trusted_access}
{#if lq__event_session_obj}
{#if lq__event_session_obj.poc_person_id && $ae_loc.trusted_access}
<span class="float-right">
<!-- A button to copy the access link to the clipboard. -->
<!-- Example: /events/CHs3F44Xq76/session/Wh8UnJlbIA0?person_id=fV1dl_IJ0yY&person_pass=abc123 -->
<!-- {#if clipboard_success}Copied!{:else}Copy Access Link{/if} -->
<!-- <span class="fas fa-copy mx-1"></span> -->
<MyClipboard
value={encodeURI(
`${$ae_loc.url_origin}/events/${$lq__event_session_obj.event_id}/session/${$lq__event_session_obj.event_session_id}?person_id=${$lq__event_session_obj.poc_person_id}&person_pass=${$lq__event_session_obj.poc_person_passcode}&session_id=${$lq__event_session_obj.event_session_id}`
`${$ae_loc.url_origin}/events/${lq__event_session_obj.event_id}/session/${lq__event_session_obj.event_session_id}?person_id=${lq__event_session_obj.poc_person_id}&person_pass=${lq__event_session_obj.poc_person_passcode}&session_id=${lq__event_session_obj.event_session_id}`
)}
btn_text="Copy Access Link"
btn_title="Copy the POC (moderator/champion) access link to the clipboard."
@@ -78,16 +74,10 @@ let clipboard_success = $state(false);
{/if}
<h2 class="h3">
<!-- Session {pres_mgmt_loc.current.label__session_poc_name} Profile:<br> -->
<strong
>{$lq__event_session_obj.poc_person_full_name} ({$lq__event_session_obj.poc_person_primary_email})</strong>
>{lq__event_session_obj.poc_person_full_name} ({lq__event_session_obj.poc_person_primary_email})</strong>
</h2>
<!-- {pres_mgmt_loc.current.label__session_poc_type} -->
<!-- {pres_mgmt_loc.current.label__session_poc_name} -->
<!-- Ask for bio here: -->
<!-- The session POC biography. There should be a character counter. -->
<div class:hidden={pres_mgmt_loc.current.hide__session_poc_biography}>
<div class="label event_session__biography required space-y-4">
<MyClipboard
@@ -110,7 +100,7 @@ let clipboard_success = $state(false);
id="session_poc__biography"
disabled={!$ae_loc.trusted_access &&
!events_auth_loc.current.auth__kv.session[
$lq__event_session_obj?.event_session_id_random
lq__event_session_obj?.event_session_id
]}
class="textarea ae_value event_session__biography font-mono"
class:preset-tonal-error={ae_tmp.biography &&
@@ -133,29 +123,22 @@ let clipboard_success = $state(false);
)
: 0} estimated words
</p>
<!-- <p>Biography length: </p> -->
<p>
The biography should be plain text only and be at most 100
words.
</p>
<!-- <p>1,250 characters is roughly 250 words</p> -->
<!-- <p>1,375 characters is roughly 250 to 300 words</p> -->
<div class="flex flex-wrap items-center gap-2 p-1">
<button
type="button"
class="btn btn-md preset-tonal-primary hover:preset-filled-primary-500"
disabled={ae_tmp.biography ==
$lq__event_session_obj.biography}
lq__event_session_obj.biography}
onclick={() => {
console.log('*** Save button clicked ***');
let event_session_data = {
poc_kv_json: $lq__event_session_obj.poc_kv_json
poc_kv_json: lq__event_session_obj.poc_kv_json
};
console.log('event_session_data:', event_session_data);
// Check if poc_type exists in the event_session_data.poc_kv_json
if (!event_session_data.poc_kv_json[poc_type]) {
event_session_data.poc_kv_json[poc_type] = {};
}
@@ -170,19 +153,16 @@ let clipboard_success = $state(false);
.update_ae_obj__event_session({
api_cfg: $ae_api,
event_session_id:
$lq__event_session_obj?.event_session_id_random,
lq__event_session_obj?.event_session_id,
data_kv: event_session_data,
log_lvl: log_lvl
})
.then(function (update_result) {
// console.log(update_result);
// return update_result;
});
.then(function (update_result) {});
}}>
{#await ae_promises.update__event_session_obj}
<LoaderCircle size="1em" class="mx-1 animate-spin" />
{:then}
{#if ae_tmp.biography == $lq__event_session_obj.biography}
{#if ae_tmp.biography == lq__event_session_obj.biography}
<Check size="1em" class="mx-1" />
{:else}
<Save size="1em" class="mx-1" />
@@ -191,10 +171,10 @@ let clipboard_success = $state(false);
Save Biography
</button>
{#if $lq__event_session_obj.poc_kv_json[poc_type]?.biography_updated_on}
{#if lq__event_session_obj.poc_kv_json[poc_type]?.biography_updated_on}
<span class="text-sm text-gray-500">
Last saved: {ae_util.iso_datetime_formatter(
$lq__event_session_obj.poc_kv_json[poc_type]
lq__event_session_obj.poc_kv_json[poc_type]
?.biography_updated_on,
'datetime_12_long'
)}