115 lines
3.4 KiB
TypeScript
115 lines
3.4 KiB
TypeScript
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;
|
|
} |