Files
OSIT-AE-App-Svelte/src/routes/+layout.ts
2024-03-06 20:39:38 -05:00

383 lines
14 KiB
TypeScript

/** @type {import('./$types').LayoutLoad} */
import { get } from 'svelte/store';
import { api } from '$lib/api';
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores';
import type { key_val } from '$lib/ae_stores';
// properties: params, route, url
// functions: fetch, setHeaders, parent, depends, untrack
export async function load({ params, url }) { // params, route, url
// console.log(`Svelte root layout.ts data = params:`, params);
// console.log(`Svelte root layout.ts data = route:`, route);
// console.log(`Svelte root layout.ts data = url:`, url);
let ae_loc_tmp = get(ae_loc);
// console.log(`ae_loc = `, ae_loc_tmp);
let ds_code_li: null|key_val = ae_loc_tmp.ds;
// console.log(`ae_ ds_code_li = `, ds_code_li);
let ds_code: null|string = null;
let data_struct = {
ae_loc: get(ae_loc),
ae_api: get(ae_api),
ae_ds: {},
ae_hub: {}, // was ae_core
ae_m_sponsorships: {},
ae_m_events: {},
ae_m_events_speakers: {},
iframe: false,
ae_root_layout_ts: true,
sections: [
{ slug: 'new', title: 'New Test' },
{ slug: 'manage', title: 'Manage Test' },
{ slug: 'test', title: 'Test Test' },
],
params: params,
url: url,
};
let loading_results = null;
// let access_code_li_json = null;
// First do a site_domain look up to check if it is valid and get the account_id.
if (url.host) {
// ae_loc.url_host = data.url.host; // Use this to look up? sub.example.com:123
// ae_loc.fqdn = url.host; // Use this to look up? sub.example.com:123
// ae_loc.url_hostname = data.url.hostname; // sub.example.com
// ae_loc.url_origin = data.url.origin; // Use this to look up? https://sub.example.com:123
// ae_loc.site_domain = data.url.origin;
// console.log(`ae_loc = `, ae_loc);
loading_results = await handle_load_ae_obj_id__site_domain({fqdn: url.host, try_cache: false})
.then(function (site_domain_results) {
if (site_domain_results) {
console.log(`ae_ site_domain_results = `, site_domain_results);
let ae_api_tmp = get(ae_api);
ae_api_tmp['account_id'] = site_domain_results.account_id_random;
ae_api_tmp['headers']['x-account-id'] = site_domain_results.account_id_random;
ae_api_tmp['headers']['x-no-account-id'] = null;
ae_api.set(ae_api_tmp);
// console.log(`ae_api = `, get(ae_api));
ae_loc_tmp['account_id'] = site_domain_results.account_id_random;
ae_loc_tmp['site_id'] = site_domain_results.site_id_random;
ae_loc_tmp['site_domain_id'] = site_domain_results.site_domain_id_random;
ae_loc_tmp['site_enable'] = site_domain_results.enable;
ae_loc_tmp['site_style_href'] = site_domain_results.style_href;
ae_loc_tmp['site_google_tracking_id'] = site_domain_results.google_tracking_id;
ae_loc_tmp['site_cfg_json'] = site_domain_results.cfg_json;
// Get updated the data just in case.
// ae_loc_tmp = get(ae_loc);
// ae_loc_tmp.account_id = site_domain_results.account_id_random;
// ae_loc_tmp.core = ae_core;
// ae_loc.set(ae_loc_tmp);
// console.log(`ae_loc = `, get(ae_loc));
}
return true;
})
.then(async function (results) {
ds_code = 'hub__page__access_code_li_json';
await handle_get_data_store_obj_w_code({code: ds_code, data_type: 'json'})
.then(function (access_code_li_json_results) {
if (access_code_li_json_results) {
// console.log(`ae_ access_code_li_json_results = `, access_code_li_json_results);
// ae_loc_tmp = get(ae_loc);
ae_loc_tmp = {
...ae_loc_tmp,
'access_code_li': access_code_li_json_results,
}
// ae_loc_tmp = get(ae_loc);
// let code = 'hub__page__access_code_li_json';
ds_code_li[ds_code] = access_code_li_json_results;
// ae_loc.set(ae_loc_tmp);
// console.log(`ae_loc = `, get(ae_loc));
}
}
);
return true;
})
.then(async function (results) {
// We are intentionally loading these in series, not parallel to limit the number of simultaneous requests.
// let ae_loc_tmp = get(ae_loc);
// Loading the header and footer in series, not parallel.
ds_code = 'hub__site__appshell_header';
await handle_get_data_store_obj_w_code({code: ds_code})
.then(function (ds_hub_site_header_results) {
if (ds_hub_site_header_results) {
// console.log(`ae_ ds_hub_site_header_results = `, ds_hub_site_header_results);
// let ae_loc_tmp = get(ae_loc);
ds_code_li[ds_code] = ds_hub_site_header_results;
// ae_loc.set(ae_loc_tmp);
// console.log(`ae_loc = `, get(ae_loc));
}
})
.then(async function () {
ds_code = 'hub__site__appshell_footer';
await handle_get_data_store_obj_w_code({code: ds_code})
.then(function (ds_hub_site_footer_results) {
if (ds_hub_site_footer_results) {
// console.log(`ae_ hub__site__appshell_footer = `, ds_hub_site_footer_results);
// let ae_loc_tmp = get(ae_loc);
ds_code_li[ds_code] = ds_hub_site_footer_results;
// ae_loc.set(ae_loc_tmp);
// console.log(`ae_loc = `, get(ae_loc));
}
});
})
.then(async function () {
ds_code = 'hub__site__root_page_content';
await handle_get_data_store_obj_w_code({code: ds_code})
.then(function (ds_code_results) {
if (ds_code_results) {
// console.log(`ae_ hub__site__root_page_content = `, ds_code_results);
// let ae_loc_tmp = get(ae_loc);
ds_code_li[ds_code] = ds_code_results;
// ae_loc.set(ae_loc_tmp);
// console.log(`ae_loc = `, get(ae_loc));
}
});
})
.then(async function () {
// Loading the header and footer in series, not parallel.
ds_code = 'hub__page__appshell_header_lead';
await handle_get_data_store_obj_w_code({code: ds_code})
.then(function (ds_code_results) {
if (ds_code_results) {
// console.log(`ae_ hub__page__appshell_header_lead = `, ds_code_results);
// let ae_loc_tmp = get(ae_loc);
ds_code_li[ds_code] = ds_code_results;
// ae_loc.set(ae_loc_tmp);
// console.log(`ae_loc = `, get(ae_loc));
}
});
})
.then(async function () {
ds_code = 'hub__page__appshell_header_trail';
await handle_get_data_store_obj_w_code({code: ds_code})
.then(function (ds_code_results) {
if (ds_code_results) {
// console.log(`hub__page__appshell_header_trail = `, ds_code_results);
// let ae_loc_tmp = get(ae_loc);
ds_code_li[ds_code] = ds_code_results;
// ae_loc.set(ae_loc_tmp);
// console.log(`ae_loc = `, get(ae_loc));
}
});
});
})
.finally(function () {
let iframe = url.searchParams.get('iframe');
console.log(`iframe = `, iframe);
if (iframe == 'true') {
data_struct['iframe'] = iframe;
ae_loc_tmp.iframe = iframe;
} else if (iframe == 'false') {
data_struct['iframe'] = false;
ae_loc_tmp.iframe = false;
}
// console.log(`ae_ ds_code_li = `, ds_code_li);
ae_loc_tmp = {
...ae_loc_tmp,
'ds': ds_code_li,
}
// console.log(`ae_loc_tmp = `, ae_loc_tmp);
data_struct['ae_loc'] = ae_loc_tmp;
ae_loc.set(ae_loc_tmp);
// console.log(`ae_loc = `, get(ae_loc));
data_struct['ae_ds'] = ds_code_li;
console.log(`ae_root +layout.ts loaded inital DS`);
return true;
});
// let ae_loc_tmp = get(ae_loc);
// let iframe = url.searchParams.get('iframe');
// console.log(`iframe = `, iframe);
// if (iframe == 'true') {
// data_struct['iframe'] = iframe;
// ae_loc_tmp.iframe = iframe;
// } else if (iframe == 'false') {
// data_struct['iframe'] = false;
// ae_loc_tmp.iframe = false;
// }
// ae_loc.set(ae_loc_tmp);
// if (site_domain_results) {
// console.log(`site_domain_results = `, site_domain_results);
// ae_api['account_id'] = site_domain_results.account_id_random;
// // ae_api['headers']['account_id'] = site_domain_results.account_id_random;
// ae_api.set(ae_api);
// console.log(`ae_api = `, ae_api);
// ae_core = {
// 'account_id': site_domain_results.account_id_random,
// 'site_id': site_domain_results.site_id_random,
// 'site_domain_id': site_domain_results.site_domain_id_random,
// 'enable': site_domain_results.enable,
// 'style_href': site_domain_results.style_href,
// 'google_tracking_id': site_domain_results.google_tracking_id,
// }
// access_code_li_json = handle_get_data_store_obj_w_code({code: 'hub__page__access_code_li_json', data_type: 'json'});
// if (access_code_li_json) {
// console.log(`access_code_li_json = `, access_code_li_json);
// ae_core = {
// ...ae_core,
// 'access_code_li': access_code_li_json,
// }
// }
// }
// data_struct['ae_loc'] = loading_results;
console.log(`ae_root +layout.ts load after DS loading?`);
return data_struct;
}
// Currently we should never make it to this point! 2024-03-06
console.log(`ae_root +layout.ts load function end`);
return data_struct;
}
async function handle_load_ae_obj_id__site_domain({fqdn, try_cache=false}) {
console.log(`*** handle_load_ae_obj_id__site_domain() *** fqdn=${fqdn}`);
let params = {};
// ae_loc.hub.site_domain_id_qry_status = 'loading';
let ae_site_domain_obj_get_promise = api.get_ae_obj_id_crud({
api_cfg: get(ae_api),
no_account_id: true,
obj_type: 'site_domain',
obj_id: fqdn, // NOTE: This is the FQDN, not normally the ID.
use_alt_table: true, // NOTE: This will use the table_name_alt value instead of the table_name value in the API config.
use_alt_base: true, // NOTE: This will use the base_name_alt value instead of the base_name value in the API config.
params: params,
log_lvl: 0
})
.then(function (site_domain_obj_get_result) {
if (site_domain_obj_get_result) {
// slct.site_domain_obj = site_domain_obj_get_result;
// console.log(`site_domain object:`, get(slct).site_domain_obj);
// ae_loc.account_id = $slct.site_domain_obj.account_id_random;
// ae_loc.site_id = $slct.site_domain_obj.site_id_random;
// ae_loc.site_domain_id = $slct.site_domain_obj.site_domain_id_random;
return site_domain_obj_get_result;
} else {
console.log('No results returned.');
return null;
}
})
.catch(function (error) {
console.log('No results returned or failed.', error);
});
return ae_site_domain_obj_get_promise;
}
// let ds_obj_get_promises: key_val = {};
async function handle_get_data_store_obj_w_code({ code=null, data_type='text' }) {
console.log(`*** handle_get_data_store_obj_w_code() *** code=${code}`);
if (!code) {
console.log('No code provided.');
return;
}
let data_store_obj_get_promise = api.get_data_store_obj_w_code({
api_cfg: get(ae_api),
data_store_code: code,
data_type: data_type,
log_lvl: 0
})
.then(function (get_data_store_result) {
let return_this = null;
if (get_data_store_result) {
if (data_type == 'text') {
// console.log(get_data_store_result.text);
return_this = get_data_store_result.text;
} else if (data_type == 'json') {
// console.log(get_data_store_result.json);
return_this = get_data_store_result.json;
}
} else {
console.log('No results returned.');
return_this = null;
}
return return_this;
})
.catch(function (error) {
console.log('No results returned or failed.', error);
});
return data_store_obj_get_promise;
}