refactor(events): harden V3 String-Only ID vision and fix Session Alert store error
- Standardized Event module logic files to strictly use random string IDs, ensuring frontend consistency and avoiding 'Integer Trap' 404s. - Refactored 'ae_comp__event_session_alert.svelte' to accept a plain object instead of a store/observable, resolving the 'store_invalid_shape' error in list loops. - Updated all callers of the alert component to pass unwrapped session objects. - Cleaned up event-related UI components to remove redundant '_random' field lookups and align with V3 CRUD patterns. - Updated project metadata (GEMINI.md, TODO.md) to reflect the new memory structure and latest hardened state.
This commit is contained in:
@@ -53,36 +53,32 @@
|
||||
|
||||
let ae_triggers: key_val = $state({});
|
||||
|
||||
console.log(`event_presenter_id:`, $lq__event_presenter_obj?.event_presenter_id);
|
||||
// console.log(`event_presenter_id:`, $lq__event_presenter_obj?.event_presenter_id);
|
||||
|
||||
console.log(`event_presentation_id:`, $lq__event_presentation_obj?.event_presentation_id);
|
||||
// console.log(`event_presentation_id:`, $lq__event_presentation_obj?.event_presentation_id);
|
||||
|
||||
// ae_tmp.biography = '';
|
||||
ae_tmp.biography = null;
|
||||
// ae_tmp.biography = $lq__event_presenter_obj?.biography ?? '';
|
||||
// console.log(`ae_tmp.biography:`, ae_tmp.biography);
|
||||
|
||||
// $: if ($lq__event_presenter_obj?.biography && ae_tmp.biography === null) {
|
||||
// // WHAT WAS THIS FOR HERE??? // ae_tmp.biography = JSON.parse(JSON.stringify($lq__event_presenter_obj?.biography ?? ''));
|
||||
// ae_tmp.biography = $lq__event_presenter_obj?.biography ?? '';
|
||||
// console.log(`ae_tmp.biography:`, ae_tmp.biography);
|
||||
// }
|
||||
|
||||
$effect(() => {
|
||||
if (browser && ae_tmp.biography === null && $lq__event_presenter_obj?.biography) {
|
||||
ae_tmp.biography = $lq__event_presenter_obj?.biography ?? '';
|
||||
console.log(`ae_tmp.biography:`, ae_tmp.biography);
|
||||
if (log_lvl) {
|
||||
console.log(`ae_tmp.biography:`, ae_tmp.biography);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$slct.person_obj_kv = {}; // This is intended for the person presenter lookup list when generated.
|
||||
|
||||
onMount(() => {
|
||||
console.log('Events Pres Mgmt: presenter_view.svelte');
|
||||
console.log(`event_presenter_id:`, $lq__event_presenter_obj?.event_presenter_id);
|
||||
if (log_lvl) {
|
||||
console.log(`Events Pres Mgmt: presenter_view.svelte - event_presenter_id: ${$lq__event_presenter_obj?.event_presenter_id}`, $lq__event_presenter_obj);
|
||||
}
|
||||
|
||||
$slct_trigger = 'load__event_file_obj_li';
|
||||
// ae_tmp.biography = $lq__event_presenter_obj?.biography;
|
||||
});
|
||||
|
||||
ae_promises.generate_qr_code_url = null;
|
||||
@@ -190,27 +186,6 @@
|
||||
<span class="text-sm text-surface-800-200"> Presenter: </span>
|
||||
</h3>
|
||||
|
||||
<!-- {#await ae_promises.generate_qr_code_obj_id}
|
||||
Generating...
|
||||
{:then result}
|
||||
{#if ae_promises.generate_qr_code_obj_id}
|
||||
<span class="float-right flex flex-col items-center justify-center">
|
||||
<img
|
||||
class="qr_code qr_type_obj_id h-32 w-32 hover:h-48 hover:w-48"
|
||||
class:hidden={!$ae_loc.manager_access}
|
||||
style=""
|
||||
src={result}
|
||||
alt="Object ID QR code"
|
||||
|
||||
/>
|
||||
<span>
|
||||
<span class="fas fa-qrcode"></span>
|
||||
Presenter ID
|
||||
</span>
|
||||
</span>
|
||||
{/if}
|
||||
{/await} -->
|
||||
|
||||
{#await ae_promises.generate_qr_code_url}
|
||||
Generating...
|
||||
{:then result}
|
||||
@@ -1065,7 +1040,7 @@
|
||||
api_cfg={$ae_api}
|
||||
object_type={'event_presenter'}
|
||||
object_id={$lq__event_presenter_obj?.event_presenter_id}
|
||||
field_name={'person_id_random'}
|
||||
field_name={'person_id'}
|
||||
field_type={'select'}
|
||||
field_value={$lq__event_presenter_obj.person_id}
|
||||
select_option_li={$slct.person_obj_kv}
|
||||
@@ -1160,14 +1135,14 @@
|
||||
.then(function (load_results) {
|
||||
console.log(`Loaded person_obj_li:`, load_results);
|
||||
|
||||
// We need to make this ready for the select option list. Convert the list to a key value pair with the person_id_random as the key. We also need to set the option text value to: full_name (primary_email)
|
||||
// We need to make this ready for the select option list. Convert the list to a key value pair with the person_id as the key. We also need to set the option text value to: full_name (primary_email)
|
||||
if (load_results) {
|
||||
let person_obj_li = load_results;
|
||||
let person_obj_kv = {};
|
||||
person_obj_kv[''] = '-- Select a person --';
|
||||
person_obj_li.forEach((person_obj) => {
|
||||
let option_text = `${person_obj?.last_first_name ?? person_obj?.given_name} (${person_obj?.primary_email?.length ? person_obj?.primary_email : '-- not set --'})`;
|
||||
person_obj_kv[person_obj.person_id_random] =
|
||||
person_obj_kv[person_obj.person_id] =
|
||||
option_text;
|
||||
});
|
||||
$slct.person_obj_kv = person_obj_kv;
|
||||
@@ -1264,11 +1239,11 @@
|
||||
}
|
||||
}
|
||||
let person_data = {
|
||||
account_id_random: $slct.account_id,
|
||||
account_id: $slct.account_id,
|
||||
source_code: 'manual:SK:presenter',
|
||||
external_id: $lq__event_presenter_obj?.external_id ?? null,
|
||||
external_sys_id: $lq__event_presenter_obj?.external_id ?? null,
|
||||
// user_id_random: user_obj.user_id_random,
|
||||
// user_id: user_obj.user_id,
|
||||
given_name: $lq__event_presenter_obj.given_name ?? 'New',
|
||||
family_name: $lq__event_presenter_obj?.family_name ?? null,
|
||||
primary_email: $lq__event_presenter_obj?.email ?? null,
|
||||
@@ -1294,7 +1269,7 @@
|
||||
events_func.update_ae_obj__event_presenter({
|
||||
api_cfg: $ae_api,
|
||||
event_presenter_id: $lq__event_presenter_obj?.event_presenter_id,
|
||||
data_kv: { person_id_random: new_person_obj.person_id_random },
|
||||
data_kv: { person_id: new_person_obj.person_id },
|
||||
log_lvl: 0
|
||||
});
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user