34 lines
1.6 KiB
JavaScript
34 lines
1.6 KiB
JavaScript
async function loadBootstrap(showMessage = false) {
|
|
if (app.loading) return;
|
|
app.loading = true;
|
|
try {
|
|
const [data, sections] = await Promise.all([api('/api/bootstrap'), fetchSettingsSections()]);
|
|
app.devices = data.devices || [];
|
|
app.zones = data.zones || [];
|
|
app.groups = data.groups || [];
|
|
app.schedules = data.schedules || [];
|
|
app.automations = data.automations || [];
|
|
app.flows = data.flows || [];
|
|
app.accessTokens = data.access_tokens || [];
|
|
app.settings = aggregateSettingsSections(sections, data.house?.mode || 'cool');
|
|
app.sensorAliases = { ...(app.settings.home_assistant?.sensor_aliases || {}) };
|
|
app.flowSharedInputs = JSON.parse(JSON.stringify(app.settings.home_assistant?.flow_inputs || []));
|
|
app.system = data.system || {};
|
|
app.systemSnapshotAt = Date.now();
|
|
app.outdoorTemperature = Number.isFinite(Number(data.outdoor_temperature)) ? Number(data.outdoor_temperature) : null;
|
|
app.controlPlan = data.control_plan || app.controlPlan;
|
|
app.controlPlanRevision = Number.isFinite(Number(data.control_plan_revision)) ? Number(data.control_plan_revision) : app.controlPlanRevision;
|
|
renderAll();
|
|
if (!data.control_plan) scheduleControlPlanLoad(0);
|
|
if (app.settings?.debug?.overlay_enabled) loadDebugBacklog();
|
|
if (showMessage) toast(tr('common.updated'));
|
|
if ($('#tokenDialog').open) $('#tokenDialog').close();
|
|
connectWebSocket();
|
|
} catch (error) {
|
|
if (!String(error.message).toLowerCase().includes('token')) toast(error.message, true);
|
|
} finally {
|
|
app.loading = false;
|
|
}
|
|
}
|
|
|