diff --git a/src/lib/ae_core/core__qr_code.ts b/src/lib/ae_core/core__qr_code.ts
index 28fa0b32..53eab1bd 100644
--- a/src/lib/ae_core/core__qr_code.ts
+++ b/src/lib/ae_core/core__qr_code.ts
@@ -5,35 +5,34 @@ import { db_core } from "$lib/ae_core/db_core";
let ae_promises: key_val = {};
-
// Updated 2024-07-18
export async function generate_qr_code(
- {
- api_cfg,
- account_id,
- qr_type, // mecard, obj, str, vcard
- qr_id, // This is essentially the filename it can be found at /qr/{account_id}/{qr_id}
- qr_data, // vcard fields:
- obj_type,
- obj_id,
- str, // For encoding a string (like a URL) into a QR code.
- return_blob=true, // blob or url?
- try_cache=false,
- log_lvl=0
- }: {
- api_cfg: any,
- account_id: string,
- qr_type: string,
- qr_id: string,
- qr_data?: any,
- obj_type?: string,
- obj_id?: string,
- str?: string,
- return_blob?: boolean,
- try_cache?: boolean,
- log_lvl?: number
- }
- ) {
+ {
+ api_cfg,
+ account_id,
+ qr_type, // mecard, obj, str, vcard
+ qr_id, // This is essentially the filename it can be found at /qr/{account_id}/{qr_id}
+ qr_data, // vcard fields:
+ obj_type,
+ obj_id,
+ str, // For encoding a string (like a URL) into a QR code.
+ return_blob = true, // blob or url?
+ try_cache = false,
+ log_lvl = 0
+ }: {
+ api_cfg: any,
+ account_id: string,
+ qr_type: string,
+ qr_id: string,
+ qr_data?: any,
+ obj_type?: string,
+ obj_id?: string,
+ str?: string,
+ return_blob?: boolean,
+ try_cache?: boolean,
+ log_lvl?: number
+ }
+) {
if (log_lvl) {
console.log(`*** generate_qr_code() *** qr_id=${qr_id}`);
}
@@ -57,15 +56,10 @@ export async function generate_qr_code(
}
params['fn'] = qr_data.full_name_override;
if (qr_data.affiliations) { params['org'] = qr_data.affiliations; }
-
- // url
params['email'] = qr_data.email;
if (qr_data.phone) { params['tel'] = qr_data.phone; }
-
params['adr'] = qr_data.location_override;
-
if (qr_data.address_line_1) { params['adr_str'] = qr_data.address_line_1; }
-
params['adr_loc'] = qr_data.city;
params['adr_reg'] = qr_data.state_province;
params['adr_postal'] = qr_data.postal_code;
@@ -81,35 +75,64 @@ export async function generate_qr_code(
console.log('Params', params);
}
-
- // let filename = `qr_${$ae_loc.account_id}_${qr_id}_${qr_type}.png`;
let filename = null;
+ // Await the API call
ae_promises.generate_qr_code = await api.get_object({
- api_cfg: api_cfg,
- endpoint: endpoint,
- params: params,
- return_blob: return_blob,
- filename: filename,
- auto_download: false,
- log_lvl: log_lvl
- });
- console.log('QR code generated done!?');
+ api_cfg: api_cfg,
+ endpoint: endpoint,
+ params: params,
+ return_blob: return_blob,
+ filename: filename,
+ auto_download: false,
+ log_lvl: log_lvl
+ });
- if (return_blob) {
- let img_blob = new Blob([ae_promises.generate_qr_code.data]);
-
- let img_obj_url = URL.createObjectURL(img_blob);
- // console.log(img_obj_url);
-
- // return img_blob;
- return img_obj_url;
+ if (log_lvl) {
+ console.log('QR code API response:', ae_promises.generate_qr_code);
}
- // let img_blob = new Blob([ae_promises.generate_qr_code.data]);
- // console.log(img_blob);
- // let img_obj_url = URL.createObjectURL(img_blob);
- // console.log(img_obj_url);
- // let qr_img_src = img_obj_url;
+ // If return_blob is true, ensure we return an object URL for use in
+ if (return_blob) {
+ let data = ae_promises.generate_qr_code.data ?? ae_promises.generate_qr_code;
+
+ // If already a Blob, use it directly
+ if (data instanceof Blob) {
+ return URL.createObjectURL(data);
+ }
+
+ // If it's a Response (from fetch), convert to Blob
+ if (data instanceof Response) {
+ const blob = await data.blob();
+ return URL.createObjectURL(blob);
+ }
+
+ // If it's an ArrayBuffer or Uint8Array, convert to Blob
+ if (data instanceof ArrayBuffer || data instanceof Uint8Array) {
+ const blob = new Blob([data], { type: "image/png" });
+ return URL.createObjectURL(blob);
+ }
+
+ // If it's a base64 string, return as data URL
+ if (typeof data === "string" && data.startsWith("data:image")) {
+ return data;
+ }
+
+ // If it's a raw string (base64), convert to data URL
+ if (typeof data === "string") {
+ return `data:image/png;base64,${data}`;
+ }
+
+ // Fallback: try to create a Blob from whatever is left
+ try {
+ const blob = new Blob([data], { type: "image/png" });
+ return URL.createObjectURL(blob);
+ } catch (e) {
+ if (log_lvl) console.error("Could not create QR code image blob:", e, data);
+ return null;
+ }
+ }
+
+ // If not returning a blob, return the raw API response
return ae_promises.generate_qr_code;
}
\ No newline at end of file
diff --git a/src/lib/ae_events_stores.ts b/src/lib/ae_events_stores.ts
index f98f365d..0a77a252 100644
--- a/src/lib/ae_events_stores.ts
+++ b/src/lib/ae_events_stores.ts
@@ -495,10 +495,12 @@ let events_session_data_struct: key_val = {
show__edit_poc_person: {},
- show__view_alert: {},
- show__edit_alert_msg: {},
+ show__view_alert: {}, // key values
+ show__edit_alert_msg: {}, // key values
- tmp__alert_msg: {},
+ tmp__alert_msg: {}, // key values
+
+ session_qr_url: {}, // key value of session_id and URL string
status_rpt: {
recent_files: null,
diff --git a/src/lib/e_app_clipboard.svelte b/src/lib/e_app_clipboard.svelte
index 621974cf..96d3ffc5 100644
--- a/src/lib/e_app_clipboard.svelte
+++ b/src/lib/e_app_clipboard.svelte
@@ -1,6 +1,7 @@