From 7cd59bfaac91e3c66141101bf470140a5f5df757 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Thu, 13 Nov 2025 20:03:51 -0500 Subject: [PATCH] Another round of lots of updates to fix little bugs here there and everywhere. --- TODO.md | 8 ++++++++ src/lib/ae_api/api_get_object.ts | 6 +++--- src/lib/ae_core/core__activity_log.ts | 6 +++--- src/lib/ae_core/core__idb_dexie.ts | 4 ++-- src/lib/ae_core/core__person.ts | 12 ++++++------ src/lib/electron/electron_native.js | 2 +- src/lib/elements/element_ae_crud.svelte | 2 +- .../launcher/[event_location_id]/+page.svelte | 2 +- src/routes/journals/ae_comp__obj_core_props.svelte | 2 +- 9 files changed, 26 insertions(+), 18 deletions(-) diff --git a/TODO.md b/TODO.md index e1f69a60..1e619005 100644 --- a/TODO.md +++ b/TODO.md @@ -4,6 +4,14 @@ This is a list of tasks to be completed before the next event/show/conference. --- +## Big Picture Goals + +* Able to cache data and mostly work offline. +* The new Events Launcher must be able to work offline and query the API for changes to data. +* The new Events Launcher must be able to run inside an Electron app and have access to local files and commands. This includes loading a special library that only works in Electron. + +--- + ## Codebase Standardization ### 1. Naming Conventions diff --git a/src/lib/ae_api/api_get_object.ts b/src/lib/ae_api/api_get_object.ts index 0a6fada2..94fcbaaf 100644 --- a/src/lib/ae_api/api_get_object.ts +++ b/src/lib/ae_api/api_get_object.ts @@ -14,7 +14,7 @@ export let get_object = async function get_object( params = {}, data = {}, timeout = 60000, - // return_meta = false, + return_meta = false, return_blob = false, filename = '', auto_download = false, @@ -30,7 +30,7 @@ export let get_object = async function get_object( params?: any, data?: any, timeout?: number, - // return_meta?: boolean, + return_meta?: boolean, return_blob?: boolean, filename?: null | string, auto_download?: boolean, @@ -105,7 +105,7 @@ export let get_object = async function get_object( for (let attempt = 1; attempt <= retry_count; attempt++) { try { const response = await fetch_method(url.toString(), fetchOptions) - .catch(function (error) { + .catch(function (error: any) { console.log('API GET Object *fetch* request was aborted or failed in an unexpected way.', error); }); clearTimeout(timeoutId); diff --git a/src/lib/ae_core/core__activity_log.ts b/src/lib/ae_core/core__activity_log.ts index 89e8bfe9..602007e5 100644 --- a/src/lib/ae_core/core__activity_log.ts +++ b/src/lib/ae_core/core__activity_log.ts @@ -267,8 +267,8 @@ export async function qry__activity_log( qry_str?: string, qry_files?: null|boolean, qry_start_datetime?: null|string, // Greater than this datetime - enabled?: string, // all, disabled, enabled - hidden?: string, // all, hidden, not_hidden + enabled?: "enabled" | "all" | "not_enabled" | undefined, // all, disabled, enabled + hidden?: "hidden" | "all" | "not_hidden" | undefined, // all, hidden, not_hidden limit?: number, offset?: number, params?: any, @@ -323,7 +323,7 @@ export async function qry__activity_log( params_json['qry'].push(qry_param); } - let order_by_li = {'priority': 'DESC', 'sort': 'DESC', 'start_datetime': 'ASC', 'name': 'ASC', 'updated_on': 'DESC', 'created_on': 'DESC'}; + let order_by_li: { [key: string]: "ASC" | "DESC" }[] = [{'priority': 'DESC'}, {'sort': 'DESC'}, {'start_datetime': 'ASC'}, {'name': 'ASC'}, {'updated_on': 'DESC'}, {'created_on': 'DESC'}]; ae_promises.load__activity_log_obj_li = await api.get_ae_obj_li_for_obj_id_crud_v2({ api_cfg: api_cfg, diff --git a/src/lib/ae_core/core__idb_dexie.ts b/src/lib/ae_core/core__idb_dexie.ts index 1d6d274b..006ef501 100644 --- a/src/lib/ae_core/core__idb_dexie.ts +++ b/src/lib/ae_core/core__idb_dexie.ts @@ -68,8 +68,8 @@ export async function db_save_ae_obj_li__ae_obj>({ const db_table: Table = db_instance.table(table_name); if (!db_table) { const error_msg = `Table not found in Dexie instance: ${table_name}`; - console.error(errorMsg); - throw new Error(errorMsg); + console.error(error_msg); + throw new Error(error_msg); } const data_to_save = obj_li diff --git a/src/lib/ae_core/core__person.ts b/src/lib/ae_core/core__person.ts index 290dd272..0443c135 100644 --- a/src/lib/ae_core/core__person.ts +++ b/src/lib/ae_core/core__person.ts @@ -99,7 +99,7 @@ export async function load_ae_obj_li__person( hidden = 'not_hidden', limit = 99, offset = 0, - order_by_li = {'family_name': 'ASC', 'given_name': 'ASC', 'updated_on': 'DESC', 'created_on': 'DESC'}, + order_by_li = [{'family_name': 'ASC'}, {'given_name': 'ASC'}, {'updated_on': 'DESC'}, {'created_on': 'DESC'}], // params_json = {}, params = {}, try_cache = true, @@ -110,11 +110,11 @@ export async function load_ae_obj_li__person( for_obj_id: string, qry_email?: string|null, qry_user_id?: string|null, - enabled?: string, // all, disabled, enabled - hidden?: string, // all, hidden, not_hidden + enabled?: "enabled" | "all" | "not_enabled" | undefined, // all, disabled, enabled + hidden?: "hidden" | "all" | "not_hidden" | undefined, // all, hidden, not_hidden limit?: number, offset?: number, - order_by_li?: key_val, + order_by_li?: { [key: string]: "ASC" | "DESC" }[] | null, // params_json?: null|key_val, params?: key_val, try_cache?: boolean, @@ -688,13 +688,13 @@ async function _process_generic_props>({ for (const key in processed_obj) { if (key.endsWith('_random')) { const new_key = key.slice(0, -7); // Remove '_random' suffix - processed_obj[newKey] = processed_obj[key]; + (processed_obj as any)[new_key] = processed_obj[key]; } } // Ensure 'id' is set from '[obj_type]_id_random' const random_id_key = `${obj_type}_id_random`; if (processed_obj[random_id_key]) { - processed_obj.id = processed_obj[randomIdKey]; + (processed_obj as any).id = processed_obj[random_id_key]; } // 2. Create common computed properties for client-side sorting. diff --git a/src/lib/electron/electron_native.js b/src/lib/electron/electron_native.js index c85f55c9..3ae276a3 100644 --- a/src/lib/electron/electron_native.js +++ b/src/lib/electron/electron_native.js @@ -340,7 +340,7 @@ async function get_url_cfg(cfg) { } return return_data; }) - .catch(function (error) { + .catch(function (error: any) { console.log(`Base URL: ${base_url} | Endpoint: ${endpoint}`); console.log('Error Message:', error.message); // Is this needed here or below in the in the else portion??? diff --git a/src/lib/elements/element_ae_crud.svelte b/src/lib/elements/element_ae_crud.svelte index bb22cf39..e79aefd4 100644 --- a/src/lib/elements/element_ae_crud.svelte +++ b/src/lib/elements/element_ae_crud.svelte @@ -122,7 +122,7 @@ async function handle_obj_field_patch(new_field_value: any) { } return true; }) - .catch(function (error) { + .catch(function (error: any) { console.log('Something went wrong patching the record.'); console.log(error); return false; diff --git a/src/routes/events/[event_id]/(launcher)/launcher/[event_location_id]/+page.svelte b/src/routes/events/[event_id]/(launcher)/launcher/[event_location_id]/+page.svelte index 8112ad90..a195d9d3 100644 --- a/src/routes/events/[event_id]/(launcher)/launcher/[event_location_id]/+page.svelte +++ b/src/routes/events/[event_id]/(launcher)/launcher/[event_location_id]/+page.svelte @@ -224,7 +224,7 @@ async function handle_get_device_info(event_device_id) { console.log(up_event_device_result); } }) - .catch(function (error) { + .catch(function (error: any) { console.log('No results returned or failed.'); console.log(error); }); diff --git a/src/routes/journals/ae_comp__obj_core_props.svelte b/src/routes/journals/ae_comp__obj_core_props.svelte index ba2edc0f..6f26357d 100644 --- a/src/routes/journals/ae_comp__obj_core_props.svelte +++ b/src/routes/journals/ae_comp__obj_core_props.svelte @@ -237,7 +237,7 @@ let ae_promises: key_val = $state({}); }).then(() => { // Optionally, you can provide feedback to the user alert('Journal entry deleted successfully!'); - }).catch((error) => { + }).catch((error: any) => { console.error('Error deleting journal entry:', error); alert('Failed to delete journal entry.'); }).finally(() => {