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 @@
-