feat(launcher): improve Events Presentation Launcher stability and data flow

- Standardized ID usage: Migrated multiple components from '_random' variants to standard 'id' properties to align with V3 backend and Dexie patterns.
- Electron Integration: Added global 'native_app' declaration and Window interface augmentation in app.d.ts to resolve TypeScript errors.
- Type Safety: Enhanced ae_EventSession interface with missing 'event_file_li' and added runtime null checks in session loading logic.
- UI/UX: Restored missing launcher components in location-specific pages and fixed LiveQuery filter logic for session lists.
- Bug Fixes: Resolved indexing errors in location list and corrected store update patterns in layout.
This commit is contained in:
Scott Idem
2026-01-16 13:59:51 -05:00
parent 5ee17c2925
commit 2db2aba6f9
13 changed files with 93 additions and 75 deletions

View File

@@ -197,7 +197,7 @@
let lq__event_event_file_obj_li = $derived(
liveQuery(async () => {
let results = await db_events.file
.where('for_id_random')
.where('for_id')
.equals($events_slct.event_id ?? '')
.sortBy('filename');
@@ -209,8 +209,8 @@
let lq__location_event_file_obj_li = $derived(
liveQuery(async () => {
let results = await db_events.file
// .where('event_location_id_random')
.where('for_id_random')
// .where('event_location_id')
.where('for_id')
.equals($events_slct.event_location_id ?? '')
.sortBy('filename');
@@ -249,7 +249,7 @@
// let lq__event_session_obj_li = $derived(liveQuery(async () => {
// let results = await db_events.session
// // .bulkGet(event_session_id_random_li);
// // .bulkGet(event_session_id_li);
// .where('event_location_id')
// .equals($events_slct.event_location_id)
// .sortBy('name');
@@ -303,15 +303,15 @@
// console.log(`LQ - Using $events_sess.session_li to get event sessions.`);
// }
// // $events_sess.session_li_trigger = false;
// let event_session_id_random_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
// let event_session_id_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
// for (let i = 0; i < $events_sess?.session_li.length; i++) {
// let event_session_obj = $events_sess?.session_li[i];
// let event_session_id_random = event_session_obj.event_session_id_random;
// event_session_id_random_li.push(event_session_id_random);
// let event_session_id = event_session_obj.event_session_id;
// event_session_id_li.push(event_session_id);
// }
// // let event_session_id_random_li = tmp_li;
// // let event_session_id_li = tmp_li;
// results = await db_events.session
// .bulkGet(event_session_id_random_li);
// .bulkGet(event_session_id_li);
// } else if ($lq__event_obj?.cfg_json?.session_group_sort === 'DESC') {
// if (log_lvl) {
// console.log(`LQ - Using DESC sort for Event Session list event_id: ${$events_slct?.event_id}`);
@@ -357,7 +357,7 @@
$events_slct.event_session_obj_li &&
JSON.stringify($events_slct.event_session_obj_li) !== JSON.stringify(results)
) {
$events_slct.event_session_obj_li = [...results];
$events_slct.event_session_obj_li = [...(results || [])];
if (log_lvl) {
console.log(
`Session slct li stored version has changed for ID = ${$events_slct.event_id}`,
@@ -537,7 +537,7 @@
$events_sess.launcher.modal__open_event_file_id = $events_slct.event_file_id;
// $events_sess.launcher.modal__event_file_obj = event_file_obj;
// $events_sess.launcher.modal__img_src = `/event/file/${event_file_obj.event_file_id_random}/download`;
// $events_sess.launcher.modal__img_src = `/event/file/${event_file_obj.event_file_id}/download`;
// $events_slct.event_file_obj = event_file_obj;
@@ -548,7 +548,7 @@
// NOTE: This is not finished yet.
// This should now trigger the Svelte component for the event launcher file container. Currently this does nothing. Need to bind to something or use the "events_sess.launcher" object?
// let as_modal_result = open_event_file_as_modal({event_file_id: event_file_obj.event_file_id_random, method: 'modal', filename: event_file_obj.filename, extension: event_file_obj.extension, modal_title: poster_title});
// let as_modal_result = open_event_file_as_modal({event_file_id: event_file_obj.event_file_id, method: 'modal', filename: event_file_obj.filename, extension: event_file_obj.extension, modal_title: poster_title});
// if (as_modal_result) {
// console.log($events_sess.launcher);
// console.log(event_file_obj);
@@ -666,7 +666,7 @@
async function handle_event_file_open() {
let event_file_obj;
if ($events_slct.event_file_obj && $events_slct.event_file_obj.event_file_id_random) {
if ($events_slct.event_file_obj && $events_slct.event_file_obj.event_file_id) {
console.log($events_slct.event_file_obj);
event_file_obj = $events_slct.event_file_obj;
} else {
@@ -678,7 +678,7 @@
}
// let as_modal_result = open_event_file_as_modal({
// event_file_id: event_file_obj.event_file_id_random,
// event_file_id: event_file_obj.event_file_id,
// filename: event_file_obj.filename,
// extension: event_file_obj.extension,
// modal_title: ae_util.shorten_filename(event_file_obj.filename, 75)
@@ -693,11 +693,14 @@
}
async function handle_event_file_close() {
let as_modal_result = close_event_file_as_modal({});
// let as_modal_result = close_event_file_as_modal({});
if (as_modal_result) {
events_sess.launcher.set({ ...$events_sess.launcher, ...as_modal_result });
}
// if (as_modal_result) {
// events_sess.update(n => {
// n.launcher = { ...n.launcher, ...as_modal_result };
// return n;
// });
// }
}
if (!$events_loc.launcher.idle_timer) {
@@ -765,7 +768,7 @@
Object.keys($events_loc.launcher.screen_saver_img_kv)[rand_index]
];
$events_slct.event_file_id = event_file_obj.event_file_id_random;
$events_slct.event_file_id = event_file_obj.event_file_id;
$events_slct.event_file_obj = event_file_obj;
// $slct_trigger = 'event_file';
// $events_loc.launcher.event_file_open.open_status = 'open';
@@ -779,7 +782,7 @@
$events_sess.launcher.modal__open_event_file_id =
$events_slct.event_file_id;
$events_sess.launcher.modal__event_file_obj = event_file_obj;
// $events_sess.launcher.modal__img_src = `/event/file/${event_file_obj.event_file_id_random}/download`;
// $events_sess.launcher.modal__img_src = `/event/file/${event_file_obj.event_file_id}/download`;
return true;
}
@@ -1411,7 +1414,7 @@
Close Remote Poster Display Only
</button>
<!-- Open: {$ae_api.base_url} {$events_sess.launcher.modal__open_event_file_id} -->
<!-- /event/file/{$events_slct.event_file_obj.event_file_id_random}/download?filename={$events_slct.event_file_obj.filename}&x_no_account_id_token=direct-download -->
<!-- /event/file/{$events_slct.event_file_obj.event_file_id}/download?filename={$events_slct.event_file_obj.filename}&x_no_account_id_token=direct-download -->
<!-- <span class="aspect-9/16 max-h-96"> -->
{#if $events_sess.launcher.modal__open_event_file_id}
<img