2023-02-14 17:51:00 +01:00
|
|
|
import { derived } from 'svelte/store';
|
|
|
|
import environment from './environment';
|
|
|
|
import applicationSettings from './settings';
|
|
|
|
|
2023-05-31 20:20:39 +02:00
|
|
|
let alreadyInited = false;
|
|
|
|
|
|
|
|
const listeners = [];
|
|
|
|
const defer = listener => {
|
|
|
|
if (alreadyInited) {
|
|
|
|
listener();
|
|
|
|
}
|
|
|
|
else {
|
2023-06-11 09:34:00 +02:00
|
|
|
listeners.push(listener);
|
2023-05-31 20:20:39 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const { subscribe } = derived([ environment, applicationSettings ], ([ env, settings ], set) => {
|
|
|
|
if (alreadyInited) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2023-02-14 17:51:00 +01:00
|
|
|
if (env && settings) {
|
|
|
|
set(true);
|
2023-05-31 20:20:39 +02:00
|
|
|
alreadyInited = true;
|
2023-02-14 17:51:00 +01:00
|
|
|
|
|
|
|
// Remove loading spinner.
|
|
|
|
document.getElementById('app-loading')?.remove();
|
2023-05-31 20:20:39 +02:00
|
|
|
|
|
|
|
// Call hooks
|
|
|
|
listeners.forEach(l => l());
|
2023-02-14 17:51:00 +01:00
|
|
|
}
|
|
|
|
}, false);
|
|
|
|
|
2023-05-31 20:20:39 +02:00
|
|
|
const applicationInited = { defer, subscribe };
|
|
|
|
|
2023-02-14 17:51:00 +01:00
|
|
|
export default applicationInited;
|