window.cascadingStateInstanceReference = (dotNetReference) => { try { window.cascadingStateInstance = dotNetReference } catch (e) { console.error(e) } } window.logFromJs = (message, where) => { try { if (!window.cascadingStateInstance || typeof window.cascadingStateInstance.invokeMethodAsync != "function") return window.cascadingStateInstance.invokeMethodAsync('LogFromJs', message, where) } catch (e) { console.error(e) } } window.isServiceWorkerAvailable = () => { try { return navigator.serviceWorker.valueOf().controller != null } catch (e) { console.error(e) window.logFromJs(e.message, "isServiceWorkerAvailable") } } window.getLanguage = () => { try { return navigator.language.substr(0, 2) } catch (e) { console.error(e) window.logFromJs(e.message, "getLanguage") } } window.setLanguage = (lang) => { try { navigator.language = lang } catch (e) { console.error(e) window.logFromJs(e.message, "setLanguage") } } window.isOnline = async () => { try { const isOnline = navigator.onLine //const url = "https://contents.nuvola.xyz/api/assets/6d9f5e55-2034-456f-92e7-d9ec51066443" //let isOnlineStatusCode = true //try { // const online = await fetch(url) // isOnlineStatusCode = online.status >= 200 && online.status < 399 //} catch (_) { // isOnlineStatusCode = false //} if (navigator.connection !== undefined && navigator.connection.effectiveType !== undefined && navigator.connection.type !== undefined) { if (!isOnline) return isOnline return navigator.connection.type === "cellular" ? navigator.connection.effectiveType.indexOf("2g") === -1 /*&& isOnlineStatusCode*/ : true } else return isOnline //&& isOnlineStatusCode } catch (e) { console.error(e) window.logFromJs(e.message, "isOnline") } } window.clearCache = async () => { try { const cachesNames = await caches.keys() for (let i = 0; i < cachesNames.length; i++) await caches.delete(cachesNames[i]) } catch (e) { console.error(e) window.logFromJs(e.message, "clearCache") } } window.clearLocalStorage = () => { try { localStorage.removeItem("PrivateCacheData") localStorage.removeItem("AuthData") } catch (e) { console.error(e) window.logFromJs(e.message, "clearLocalStorage") } } window.reloadPage = () => { try { location.reload(true) } catch (e) { console.error(e) window.logFromJs(e.message, "reloadPage") } } window.getHeight = (classId) => { try { const elements = document.querySelectorAll(classId) let px = 0 if (!elements) return 0 elements.forEach(v => px += v.offsetHeight) return px } catch (e) { console.error(e) window.logFromJs(e.message, "getHeight") } } window.setAppBadge = (counter) => { try { navigator.setAppBadge(counter) } catch (e) { console.error(e) window.logFromJs(e.message, "setAppBadge") } } window.clearAppBadge = () => { try { navigator.clearAppBadge() } catch (e) { console.error(e) window.logFromJs(e.message, "clearAppBadge") } } window.isMobileMedia = () => { try { return ((window.innerWidth > 0) ? window.innerWidth : screen.width) <= 768 } catch (e) { console.error(e) window.logFromJs(e.message, "isMobileMedia") } } window.canShareStuff = () => { try { return navigator.share !== undefined } catch (e) { console.error(e) window.logFromJs(e.message, "canShareStuff") } } window.shareTextUrl = (title, text, url) => { try { navigator.share({ title: title, text: text, url: url }) } catch (e) { console.error(e) window.logFromJs(e.message, "shareTextUrl") } } window.shareText = (title, text) => { try { navigator.share({ title: title, text: text }) } catch (e) { console.error(e) window.logFromJs(e.message, "shareText") } }