import type { key_val } from '$lib/ae_stores'; import { api } from '$lib/api'; import { db_core } from "$lib/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 } ) { if (log_lvl) { console.log(`*** generate_qr_code() *** qr_id=${qr_id}`); } let endpoint = `/qr/${account_id}/${qr_id}`; if (log_lvl) { console.log('Endpoint', endpoint); } let params: key_val = { 'regen': true, // Regenerate the file even if nothing has changed. 'return_file': return_blob, 'qr_type': qr_type, // mecard, obj, vcard 'qr_send': return_blob }; if (qr_type == 'vcard') { if (qr_data.informal_name) { params['n'] = `${qr_data.family_name};${qr_data.given_name};${qr_data.informal_name}`; } else { params['n'] = `${qr_data.family_name};${qr_data.given_name}`; } 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; params['adr_country'] = qr_data.country; } else if (qr_type == 'obj') { params['obj_type'] = obj_type; params['obj_id'] = obj_id; } else if (qr_type == 'str') { params['str'] = str; } if (log_lvl) { console.log('Params', params); } // let filename = `qr_${$ae_loc.account_id}_${qr_id}_${qr_type}.png`; let filename = null; 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!?'); 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; } // 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; return ae_promises.generate_qr_code; }