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:
@@ -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
|
||||
})
|
||||
|
||||
@@ -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'
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user