diff --git a/src/lib/ae_api/api_get_object.ts b/src/lib/ae_api/api_get_object.ts index 7398b4f0..44b5f37f 100644 --- a/src/lib/ae_api/api_get_object.ts +++ b/src/lib/ae_api/api_get_object.ts @@ -106,6 +106,7 @@ export let get_object = async function get_object( } } + // Handle the case where there is no Blob expected to be returned. Mainly JSON and text data. if (!return_blob) { let response_data_promise = await axios_api.get( endpoint, @@ -214,6 +215,26 @@ export let get_object = async function get_object( if (log_lvl > 2) { console.log(error); } + + // Post file download message + try { + if (typeof window !== 'undefined') { + window.postMessage({ + type: 'api_download_data', + status: 'complete', + task_id: task_id, + endpoint: endpoint, + filename: filename, + size_total: 0, + size_loaded: 0, + percent_completed: 0, + }, + '*' + ); + } + } catch (error) { + console.log('Error posting message to window:', error); + } return null; // Returning null since there were no results } @@ -265,7 +286,7 @@ export let get_object = async function get_object( } else if (response_data_promise === null) { // Less common, but expected response if no results were returned. if (log_lvl) { - console.log('Returning null. This is expected if no results were found.'); + console.log('Returning null. This is expected if no results were found. (404)'); } return response_data_promise; } else if (response_data_promise === false) { @@ -274,10 +295,13 @@ export let get_object = async function get_object( return response_data_promise; } else { // This generally should not happen. It likely means the query was bad or an API issue. - console.log('Returning unknown. This should not happen in most cases.'); + console.log('Returning (JSON/text) unknown. This should not happen in most cases.'); Promise.reject(new Error('fail')).then(resolved, rejected); } + + // Handle the case where a Blob is expected to be returned. } else { + // console.log('Expecting a Blob to be returned...'); let response_data_promise = await axios_api.get( @@ -367,6 +391,73 @@ export let get_object = async function get_object( } else { return response; } + }) + .catch(function (error) { + // Handle the common and expected 404 "error" first + if (error.response && error.response.status === 404) { + if (log_lvl) { + console.log('The response was a 404 not found "error". Returning null.'); + } + if (log_lvl > 1) { + console.log(error.response); + } + if (log_lvl > 2) { + console.log(error); + } + + // Post file download message + try { + if (typeof window !== 'undefined') { + window.postMessage({ + type: 'api_download_blob', + status: 'complete', + task_id: task_id, + endpoint: endpoint, + filename: filename, + size_total: 0, + size_loaded: 0, + percent_completed: 0, + }, + '*' + ); + } + } catch (error) { + console.log('Error posting message to window:', error); + } + return null; // Returning null since there were no results + } + + if (log_lvl) { + console.log(`Base URL: ${api_cfg['base_url']} | Endpoint: ${endpoint}`); + console.log('Error Message:', error.message); // Is this needed here or below in the in the else portion??? + + if (error.response) { + // The request was made and the server responded with a status code that falls out of the range of 2xx + console.log('Error Response Data', error.response.data); + console.log('Error Response Status', error.response.status); + console.log('Error Response Headers', error.response.headers); + } else if (error.request) { + // The request was made but no response was received `error.request` is an instance of XMLHttpRequest in the browser and an instance of http.ClientRequest in node.js + if (log_lvl > 1) { + console.log('Error Request', error.request); + } + } else { + // Something happened in setting up the request that triggered an Error + console.log('Error Message', error.message); + } + } + + if (error.code === 'ECONNABORTED') { + // Timeout Error (You can implement retry here where suitable) + console.log('Timeout Error: ', error.message); + } + + if (log_lvl) { + console.log('The response was an error. Returning false.'); + } + + return false; // Returning false since something may have gone wrong. This includes timeouts. Also more in line with what the API returns. + // return error; }); if (response_data_promise) { @@ -377,6 +468,16 @@ export let get_object = async function get_object( // return test_blob; // console.log(response_data_promise.blob()); return response_data_promise; + } else if (response_data_promise === null) { + // Less common, but expected response if no results were returned. + if (log_lvl) { + console.log('Returning null. This is expected if no results were found. (404)'); + } + return response_data_promise; + } else if (response_data_promise === false) { + // Not common, but expected response if the request to the API had an issue. + console.log('Returning false. There may have been an issue with this request.'); + return response_data_promise; } else { // This generally should not happen. It likely means the query was bad or an API issue. console.log('Returning (blob) unknown. This should not happen in most cases.'); diff --git a/src/lib/api.ts b/src/lib/api.ts index 730a98b5..16b1e80f 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -649,11 +649,11 @@ export let download_hosted_file = async function download_hosted_file( { api_cfg, hosted_file_id, - return_file=true, + return_file = true, filename, - auto_download=false, - params={}, - log_lvl=0 + auto_download = false, + params = {}, + log_lvl = 0 } : { api_cfg: any, hosted_file_id: string, @@ -678,7 +678,7 @@ export let download_hosted_file = async function download_hosted_file( api_cfg: api_cfg, endpoint: endpoint, params: params, - return_blob: true, + return_blob: return_file, filename: filename, auto_download: auto_download, task_id: task_id, diff --git a/src/routes/events/[event_id]/(launcher)/+layout.svelte b/src/routes/events/[event_id]/(launcher)/+layout.svelte index bd4ac674..44498837 100644 --- a/src/routes/events/[event_id]/(launcher)/+layout.svelte +++ b/src/routes/events/[event_id]/(launcher)/+layout.svelte @@ -445,6 +445,7 @@ export let close_event_file_as_modal = function close_event_file_as_modal({}) { items-center basis-4/5 max-w-full + overflow-y-auto " > diff --git a/src/routes/events/[event_id]/(launcher)/launcher_file_cont.svelte b/src/routes/events/[event_id]/(launcher)/launcher_file_cont.svelte index 233f6d81..2f911316 100644 --- a/src/routes/events/[event_id]/(launcher)/launcher_file_cont.svelte +++ b/src/routes/events/[event_id]/(launcher)/launcher_file_cont.svelte @@ -1,11 +1,18 @@ -
- - +
{#if open_file_clicked}
@@ -264,7 +271,9 @@ async function handle_open_file() { {/if} - + + + {#if (session_type == 'poster' || open_method == 'modal')} - - {/if} - - - - {ae_util.iso_datetime_formatter(event_file_obj.created_on, 'datetime_short')} - - - {#if event_file_obj.file_size}{ae_util.format_bytes(event_file_obj.file_size)}{/if} - - + + + + + + + { + console.log(`ae_crud_updated:`, e.detail); + + events_func.handle_load_ae_obj_id__event_file({ + api_cfg: $ae_api, + event_file_id: event_file_obj?.event_file_id_random, + log_lvl: log_lvl + }); + }} + > + + + + + + + + + {ae_util.iso_datetime_formatter(event_file_obj.created_on, 'date_short')} + + + + {ae_util.iso_datetime_formatter(event_file_obj.created_on, 'time_12_short')} + + + + {#if event_file_obj.file_size}{ae_util.format_bytes(event_file_obj.file_size)}{/if} + + + - + + + diff --git a/src/routes/events/[event_id]/(launcher)/launcher_presenter_view.svelte b/src/routes/events/[event_id]/(launcher)/launcher_presenter_view.svelte index c814b922..af9613c8 100644 --- a/src/routes/events/[event_id]/(launcher)/launcher_presenter_view.svelte +++ b/src/routes/events/[event_id]/(launcher)/launcher_presenter_view.svelte @@ -22,13 +22,15 @@ let ae_promises: key_val = { }; // Event File -let lq__event_file_obj_li = liveQuery( - () => db_events.files +$: lq__event_file_obj_li = liveQuery(async () => { + let results = await db_events.files // .where('event_session_id_random') .where('for_id_random') .equals(lq__event_presenter_obj?.event_presenter_id) - .sortBy('name') -); + .reverse() + .sortBy('created_on') + return results; +}); @@ -67,10 +69,10 @@ let lq__event_file_obj_li = liveQuery(
    {#each $lq__event_file_obj_li as event_file_obj, index}
  • - + -->