let USER = {}; // Определение ID главного блока let app = document.getElementById('app'); // Конфигурация роутера Router.config({ mode: 'history' }); async function appReload() { location.reload(); // Router.navigate(window.location.pathname, false).check(); // // Закрытие старого соединения WebSocket // if (socket) socket.close(1000, "Перезапуск соединения"); // listEntrances = [] // listApartment = [] } // Функция загрузки приложения window.addEventListener('load', async function () { console.log('[OS] ', detectOS()); if (window.matchMedia('(display-mode: standalone)').matches) { if (detectOS() == 'Android') { document.getElementById('navigation').dataset.state = ''; } else if (detectOS() == 'iOS') { document.getElementById('navigation').dataset.state = 'ios'; localStorage.setItem('backToTop', 'false'); } else if (detectOS() == 'MacOS') { document.getElementById('navigation').dataset.state = 'ios'; localStorage.setItem('backToTop', 'false'); } else { document.getElementById('navigation').dataset.state = ''; } } if (Router.getParams().uuid) { localStorage.setItem("uuid", Router.getParams().uuid) } let uuid = localStorage.getItem("uuid"); if (!uuid) { Router.navigate(`/auth`).check().listen().delegateLinks(); } else { const URL = `${CONFIG.api}auth`; USER = await fetch(URL, { method: 'GET', headers: { "Content-Type": "application/json, text/plain, */*", "Authorization": uuid } }).then(response => { if (response.status === 401) { localStorage.removeItem("uuid"); Router.navigate(`/auth`); } return response.json(); }); console.log("USER Info: ", USER); if (USER.possibilities.can_view_sheeps) document.getElementById("li-sheeps").style.display = ""; if (USER.possibilities.can_view_schedule) document.getElementById("li-schedule").style.display = ""; if (USER.possibilities.can_manager_territory) document.getElementById("li-territory").style.display = ""; if (USER.possibilities.can_view_stand) document.getElementById("li-stand").style.display = ""; if (USER.possibilities.can_view_sheeps) await Sheeps.sheeps_list.loadAPI(); editFontStyle(); Router.check().listen().delegateLinks(); } }); function editFontStyle() { let fontSize = localStorage.getItem("fontSize") ? localStorage.getItem("fontSize") : 'medium'; applyFontMode(fontSize); } function applyFontMode(mode) { const options = { "small": { "--FontSize1": "10px", "--FontSize2": "11px", "--FontSize3": "12px", "--FontSize4": "13px", "--FontSize5": "14px" }, "medium": { "--FontSize1": "12px", "--FontSize2": "13px", "--FontSize3": "14px", "--FontSize4": "15px", "--FontSize5": "16px" }, "large": { "--FontSize1": "15px", "--FontSize2": "16px", "--FontSize3": "17px", "--FontSize4": "18px", "--FontSize5": "19px" } }; const root = document.documentElement; const config = options[mode]; if (!config) return; Object.keys(config).forEach(key => { if (key.startsWith("--")) { root.style.setProperty(key, config[key]); } }); } // Банер з прохання встановлення PWA let deferredPrompt; const isInStandaloneMode = () => ('standalone' in window.navigator && window.navigator.standalone === true); if (detectOS() == 'iOS' && !isInStandaloneMode()) { setTimeout(() => { document.getElementById('blur-backdrop').classList.remove('pwa-hidden'); document.getElementById('pwa-ios-overlay').classList.remove('pwa-hidden'); document.body.classList.add('modal-open'); }, 1000); } window.addEventListener("beforeinstallprompt", (e) => { e.preventDefault(); deferredPrompt = e; if (localStorage.getItem('modal') != "false") { document.getElementById("blur-backdrop").classList.remove("pwa-hidden"); document.getElementById("pwa-install-overlay").classList.remove("pwa-hidden"); document.body.classList.add("modal-open"); } }); document.getElementById("pwa-install-button").addEventListener("click", async () => { if (!deferredPrompt) return; deferredPrompt.prompt(); const { outcome } = await deferredPrompt.userChoice; console.log(`PWA install result: ${outcome}`); closePopup(); }); document.getElementById("pwa-close-button").addEventListener("click", closePopup); document.getElementById('pwa-ios-close-button').addEventListener('click', closePopup); function closePopup() { document.getElementById("pwa-install-overlay").classList.add("pwa-hidden"); document.getElementById("blur-backdrop").classList.add("pwa-hidden"); document.getElementById('pwa-ios-overlay').classList.add('pwa-hidden'); document.body.classList.remove("modal-open"); deferredPrompt = null; } if ('serviceWorker' in navigator) { navigator.serviceWorker.register('sw.js') .then(() => { console.log('Service Worker зарегистрирован'); webPush.init(); }) .catch(err => console.error('Ошибка регистрации SW:', err)); }