dsg
INSERT INTO `cp_filejs` (`id`,`app`,`path`,`modul`,`file_name`,`content`) VALUES ('363','3','u7/collector','auth','js/app.js-----','//------------------------------------------ CORE ------------------------------------------//\r\nimport {\r\n getSessionUser,\r\n handleSignUp,\r\n updateAboutUserIds,\r\n updateContentIds,\r\n updateUsername,\r\n verifyUser\r\n} from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./api/auth.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\nimport store from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./store.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\nimport routes from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./routes.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n\r\nimport {\r\n displayProfile\r\n} from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./profile.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\nimport {\r\n getIDFromQrCode\r\n} from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./api/scanner.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\nimport {\r\n openModal,\r\n openQRModal\r\n} from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./qr.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\nimport {\r\n sendRNMessage\r\n} from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./api/consts.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n\r\n\r\nvar $ = Dom7\r\nvar userStore = store.getters.user\r\nvar notificationCountStore = store.getters.getNotifCount\r\nvar networkErrors = store.getters.checkPoorNetworkError\r\n\r\nvar toolbarEl = $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.footer\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')[0]\r\n\r\nvar app = new Framework7({\r\n initOnDeviceReady: true,\r\n view: {\r\n pushState: false,\r\n stackPages: true,\r\n xhrCache: true,\r\n preloadPreviousPage: true,\r\n // browserHistory: true,\r\n },\r\n notification: {\r\n title: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'OrganikFlok\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n closeTimeout: 10000,\r\n closeOnClick: true,\r\n icon: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n },\r\n toast: {\r\n closeTimeout: 3000,\r\n closeButton: true,\r\n },\r\n name: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'OrganikFlok\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n theme: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'ios\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n smartSelect: {\r\n closeOnSelect: true,\r\n },\r\n cache: true,\r\n el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#app\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', // App root element\r\n on: {\r\n init: async function () {\r\n // toolbarEl.style.display = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'none\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n\r\n await store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'checkAuth\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n\r\n const isAuthenticated = store.getters.isAuthenticated.value\r\n\r\n if (!isAuthenticated) {\r\n this.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/auth/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n } else {\r\n $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.init-loader\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').hide()\r\n $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.start-link\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click();\r\n // toolbarEl.style.display = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'block\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n }\r\n\r\n const deeplink = getQueryParameter(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'deeplink\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n if (deeplink) {\r\n // check if deeplink has ?qr= query parameter\r\n // if it does, get the value of the qr parameter and redirect to the profile\r\n // ex; http://localhost:3000/?qr=123456\r\n const maybeQr = deeplink.split(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'?qr=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')[1]\r\n const deepqrCode = maybeQr ? maybeQr : null\r\n\r\n if (deepqrCode) {\r\n maybeRedirectToProfile(deepqrCode)\r\n return;\r\n }\r\n\r\n // check if url looks like https://mydrivelife.com/qr/8700279E\r\n // if it does, get the qr code and redirect to the profile\r\n const isDriveLifeUrl = deeplink.includes(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'mydrivelife.com/qr/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n if (isDriveLifeUrl) {\r\n const qrCode = deeplink.split(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').slice(-1)[0]\r\n maybeRedirectToProfile(qrCode)\r\n return;\r\n }\r\n\r\n // get the page from the deeplink and navigate to it\r\n // ex; http://localhost:3000/post-view/308\r\n // get the /post-view/308 and navigate to it\r\n let path = deeplink.split(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').slice(3).join(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n\r\n if (!path.startsWith(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')) {\r\n path = `/${path}`\r\n }\r\n\r\n this.views.main.router.navigate(path)\r\n // remove the query parameter from the URL\r\n window.history.pushState({}, document.title, window.location.pathname)\r\n }\r\n\r\n const qrCode = getQueryParameter(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'qr\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n if (qrCode) {\r\n maybeRedirectToProfile(qrCode)\r\n }\r\n },\r\n pageInit: function (page) {\r\n if (page.name === \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'profile\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {\r\n userStore.onUpdated((data) => {\r\n if (data && data.id && !data.external_refresh) {\r\n displayProfile(data, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'profile\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getMyGarage\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n }\r\n\r\n if (data && data.id && !data.refreshed) {\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getMyPosts\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {\r\n page: 1,\r\n clear: true\r\n })\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getMyWastes\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {\r\n page: 1,\r\n clear: true\r\n })\r\n }\r\n })\r\n }\r\n\r\n if (page.name === \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'discover\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {\r\n userStore.onUpdated((data) => {\r\n if (data && data.id && !data.refreshed) {\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getTrendingEvents\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getTrendingVenues\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'filterTrendingUsers\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'fetchEventCategories\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n }\r\n })\r\n }\r\n\r\n if (page.name === \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'signup-step2\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {\r\n const registerData = store.getters.getRegisterData.value\r\n\r\n const userNameEl = document.getElementsByName(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'username\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')[0]\r\n userNameEl.value = registerData.username\r\n }\r\n },\r\n },\r\n store: store,\r\n routes: routes,\r\n})\r\n\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'mousedown\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.toolbar-bottom a\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function (e) {\r\n var targetHref = $(this).attr(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'href\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\');\r\n var validTabs = [\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#view-social\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#view-discover\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#view-store\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#view-profile\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'];\r\n\r\n if ($(this).hasClass(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'tab-link-active\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') && validTabs.includes(targetHref)) {\r\n var view = app.views.current;\r\n if (view.history.length > 1) {\r\n view.router.back(view.history[0], {\r\n force: true\r\n });\r\n }\r\n }\r\n});\r\n\r\nexport function showToast(message, type = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Message\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', position = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'bottom\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {\r\n app.toast.create({\r\n text: message,\r\n position: position,\r\n closeTimeout: 3000,\r\n }).open()\r\n}\r\n\r\nasync function maybeRedirectToProfile(qrCode) {\r\n var view = app.views.current\r\n\r\n try {\r\n $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.init-loader\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').show()\r\n const response = await getIDFromQrCode(qrCode)\r\n\r\n if (response && response.status === \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'error\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {\r\n throw new Error(response.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, Unable to find the profile linked to this QR code.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n }\r\n\r\n const user = store.getters.user.value\r\n const id = response?.data?.linked_to;\r\n\r\n if (id) {\r\n if (user && user.id == id) {\r\n $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.view-profile-link\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click()\r\n } else {\r\n view.router.navigate(`/profile-view/${id}`)\r\n }\r\n } else {\r\n openModal()\r\n setTimeout(() => {\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'setScannedData\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {\r\n status: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'success\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n qr_code: qrCode,\r\n message: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'QR Code is not linked to any profile\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n available: true\r\n })\r\n }, 1000)\r\n }\r\n\r\n // remove the query parameter from the URL\r\n window.history.pushState({}, document.title, window.location.pathname)\r\n $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.init-loader\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').hide()\r\n } catch (error) {\r\n console.log(error);\r\n window.history.pushState({}, document.title, window.location.pathname)\r\n app.dialog.alert(error.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, Unable to find the profile linked to this QR code.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.init-loader\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').hide()\r\n }\r\n}\r\n\r\n// Function to parse query parameters from the URL\r\nfunction getQueryParameter(name, url) {\r\n\r\n const urlParams = new URLSearchParams(url || window.location.search)\r\n return urlParams.get(name)\r\n}\r\n\r\nfunction isAndroid() {\r\n const toMatch = [\r\n /Android/i,\r\n // /webOS/i,\r\n // /iPhone/i,\r\n // /iPad/i,\r\n // /iPod/i,\r\n /BlackBerry/i,\r\n /Windows Phone/i,\r\n ];\r\n\r\n return toMatch.some((toMatchItem) => {\r\n return navigator.userAgent.match(toMatchItem);\r\n });\r\n}\r\n\r\nexport function onBackKeyDown() {\r\n // check if the device is an android device\r\n if (!isAndroid()) {\r\n return\r\n }\r\n\r\n var view = app.views.current\r\n\r\n var leftp = app.panel.left && app.panel.left.opened\r\n var rightp = app.panel.right && app.panel.right.opened\r\n\r\n window.ReactNativeWebView.postMessage(JSON.stringify({\r\n his: view.history,\r\n url: app.views.main.router.url,\r\n leftp,\r\n rightp\r\n }))\r\n\r\n if (leftp || rightp) {\r\n app.panel.close()\r\n return false\r\n } else if ($(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.modal-in\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').length > 0) {\r\n app.dialog.close()\r\n app.popup.close()\r\n return false\r\n } else if (view.history[0] == \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {\r\n window.ReactNativeWebView.postMessage(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'exit_app\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return true\r\n } else {\r\n if (view.history.length < 2) {\r\n $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.tab-link[href=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"#view-home\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click()\r\n return\r\n }\r\n\r\n view.router.back()\r\n return false\r\n }\r\n}\r\n\r\nwindow.onAppBackKey = onBackKeyDown\r\n\r\nuserStore.onUpdated((data) => {\r\n if (data && data.id && !data.external_refresh && !data.refreshed) {\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getPosts\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getFollowingPosts\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'notificationCount\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'fetchNotifications\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n }\r\n})\r\n\r\nnotificationCountStore.onUpdated((data) => {\r\n document.querySelectorAll(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.notification-count\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').forEach((el) => {\r\n el.innerHTML = data\r\n el.style.display = data > 0 ? \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'flex\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' : \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'none\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n })\r\n})\r\n\r\nnetworkErrors.onUpdated((data) => {\r\n if (data) {\r\n app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Poor network connection. Please check your internet connection and try again.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n }\r\n})\r\n\r\n// Action Sheet with Grid Layout\r\nvar actionSheet = app.actions.create({\r\n grid: true,\r\n buttons: [\r\n [{\r\n text: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
Add Post
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n icon: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n onClick: async function () {\r\n const user = await getSessionUser()\r\n if (user) {\r\n sendRNMessage({\r\n type: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"createPost\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\r\n user_id: user.id,\r\n page: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'create-post\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n })\r\n }\r\n }\r\n },\r\n {\r\n text: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
Scan QR Code
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n icon: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n onClick: function () {\r\n openQRModal()\r\n }\r\n },\r\n {\r\n text: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
Add Vehicle
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n icon: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n onClick: function () {\r\n app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/profile-garage-vehicle-add/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\');\r\n }\r\n }\r\n ],\r\n ]\r\n});\r\n\r\n// Init slider\r\nnew Swiper(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.swiper-container\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {\r\n pagination: {\r\n el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.swiper-pagination\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n clickable: true,\r\n },\r\n})\r\n\r\n//Comments Popup\r\n// app.popup.create({\r\n// el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.comments-popup\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n// swipeToClose: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'to-bottom\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n// })\r\n\r\n//Share Popup\r\napp.popup.create({\r\n el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.share-popup\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n swipeToClose: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'to-bottom\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n})\r\n\r\n//Share Popup\r\napp.popup.create({\r\n el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.edit-post-popup\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n swipeToClose: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'to-bottom\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n})\r\n\r\n\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#open-action-sheet\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function () {\r\n actionSheet.open()\r\n})\r\n\r\n// Handle login form submission\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.login-screen-content form\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {\r\n e.preventDefault()\r\n\r\n var username = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"username\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val()\r\n var password = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val()\r\n\r\n if (!username) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Username is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n if (!password) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n\r\n try {\r\n app.preloader.show()\r\n const response = await verifyUser({\r\n email: username,\r\n password\r\n })\r\n\r\n app.preloader.hide()\r\n\r\n if (!response || response.error) {\r\n app.dialog.alert(response.error || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Login failed, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n if (response.success) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Login successful\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n await store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'login\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {\r\n token: response.token\r\n })\r\n\r\n app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.start-link\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click();\r\n\r\n toolbarEl.style.display = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'block\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n return\r\n }\r\n } catch (error) {\r\n app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Login failed, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n }\r\n})\r\n\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.toggle-password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function () {\r\n var input = $(this).prev(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n if (input.attr(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'type\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') === \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {\r\n input.attr(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'type\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'text\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n $(this).html(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n } else {\r\n input.attr(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'type\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n $(this).html(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n }\r\n})\r\n\r\n// Register forms\r\n// Step 1\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'form#sign-up-step1\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {\r\n e.preventDefault()\r\n\r\n var firstName = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"first_name\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()\r\n var lastName = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"last_name\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()\r\n var email = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"email\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()\r\n var password = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()\r\n var confirmPassword = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"confirm_password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()\r\n var agreeTerms = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"agree_terms\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').is(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\':checked\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n var agreePrivacy = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"agree_privacy\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').is(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\':checked\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n\r\n if (!firstName) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'First name is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n if (!lastName) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Last name is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n if (!email) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Email is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n var emailPattern = /^[^s@]+@[^s@]+.[^s@]+$/\r\n if (!emailPattern.test(email)) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Please enter a valid email address\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n if (!password) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n // Check if password has at least 8 characters\r\n if (password.length < 8) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password must be at least 8 characters long.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n // Check if password contains at least one lowercase letter\r\n if (!/[a-z]/.test(password)) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password must contain at least one lowercase letter.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n // Check if password contains at least one uppercase letter\r\n if (!/[A-Z]/.test(password)) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password must contain at least one uppercase letter.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n // Check if password contains at least one number\r\n if (!/d/.test(password)) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password must contain at least one number.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n if (password.length < 8) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password must be at least 8 characters long\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n if (!confirmPassword) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Please confirm your password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n if (password !== confirmPassword) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Passwords do not match\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n if (!agreeTerms) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'You must agree to the Terms & Conditions\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n if (!agreePrivacy) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'You must agree to the Privacy Policy\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n // add a loader to the login button\r\n var loginButton = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'button[type=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')[0]\r\n loginButton.innerHTML = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n\r\n try {\r\n app.preloader.show()\r\n\r\n const response = await handleSignUp({\r\n full_name: `${firstName} ${lastName}`,\r\n email,\r\n password\r\n })\r\n\r\n app.preloader.hide()\r\n\r\n if (!response || !response.success) {\r\n app.dialog.alert(response.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n loginButton.innerHTML = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Next\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n return\r\n }\r\n\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'setRegisterData\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {\r\n email,\r\n password,\r\n user_id: response.user_id,\r\n username: response.username\r\n })\r\n app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/signup-step2/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n } catch (error) {\r\n console.log(error)\r\n app.dialog.alert(error.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n loginButton.innerHTML = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Next\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n return\r\n }\r\n})\r\n\r\n// Step 2\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'form#sign-up-step2\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {\r\n e.preventDefault()\r\n\r\n var username = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"username\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()\r\n\r\n if (!username) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Username is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n // username can only have letters, numbers, and underscores\r\n var usernamePattern = /^[a-zA-Z0-9_]+$/\r\n if (!usernamePattern.test(username)) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Username can only contain letters, numbers, and underscores\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n // username must be at least 3 characters long\r\n if (username.length < 3) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Username must be at least 3 characters long\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n let registerData = store.getters.getRegisterData.value\r\n try {\r\n if (registerData.username !== username) {\r\n app.preloader.show()\r\n\r\n const response = await updateUsername(username, registerData.user_id)\r\n\r\n app.preloader.hide()\r\n\r\n if (!response || !response.success) {\r\n app.notification.create({\r\n titleRightText: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'now\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n subtitle: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, something went wrong\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n text: error.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Failed to update username\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n }).open()\r\n // app.dialog.alert(response.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'setRegisterData\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {\r\n ...registerData,\r\n username\r\n })\r\n }\r\n\r\n app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/signup-step3/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n } catch (error) {\r\n console.log(error);\r\n app.notification.create({\r\n titleRightText: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'now\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n subtitle: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, something went wrong\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n text: error.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Failed to update username\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n }).open()\r\n return\r\n }\r\n})\r\n\r\n// Step 3\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#car-selection-form\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {\r\n e.preventDefault()\r\n\r\n // Get all checked checkboxes\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' values\r\n var selectedCarTypes = []\r\n $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"car_type\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]:checked\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').each(function () {\r\n selectedCarTypes.push($(this).val())\r\n })\r\n\r\n // Check if at least one checkbox is selected\r\n if (selectedCarTypes.length === 0) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Please select at least one car type\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n // For demonstration, log the selected values to the console\r\n let registerData = store.getters.getRegisterData.value\r\n\r\n try {\r\n app.preloader.show()\r\n const response = await updateContentIds(selectedCarTypes, registerData.user_id)\r\n\r\n if (!response || !response.success) {\r\n app.dialog.alert(response.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, Unable to save your selection.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n }\r\n\r\n app.preloader.hide()\r\n app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/signup-step4/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n } catch (error) {\r\n console.log(error)\r\n app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n // Redirect to the next step (this can be customized as needed)\r\n app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/signup-step4/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n})\r\n\r\n// Step 4\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#interest-selection-form\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {\r\n e.preventDefault()\r\n\r\n // Get all checked checkboxes\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' values\r\n var selectedInterests = []\r\n $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"interest\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]:checked\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').each(function () {\r\n selectedInterests.push($(this).val())\r\n })\r\n\r\n // Check if at least one checkbox is selected\r\n if (selectedInterests.length === 0) {\r\n showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Please select at least one interest\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n let registerData = store.getters.getRegisterData.value\r\n\r\n try {\r\n app.preloader.show()\r\n const response = await updateAboutUserIds(selectedInterests, registerData.user_id)\r\n\r\n if (!response || !response.success) {\r\n app.dialog.alert(response.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, Unable to save your selection.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n }\r\n\r\n app.preloader.hide()\r\n\r\n app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/signup-complete/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n } catch (error) {\r\n console.log(error)\r\n app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n})\r\n\r\n// Signup complete\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#signup-complete\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {\r\n const registerData = store.getters.getRegisterData.value\r\n\r\n if (!registerData || !registerData.user_id || !registerData.email || !registerData.password) {\r\n app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n try {\r\n app.preloader.show()\r\n\r\n const response = await verifyUser({\r\n email: registerData.email,\r\n password: registerData.password\r\n })\r\n\r\n app.preloader.hide()\r\n\r\n if (!response || response.error) {\r\n app.dialog.alert(response.error || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Login failed, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/auth/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n loginButton.innerHTML = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Next\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n return\r\n }\r\n\r\n if (response.success) {\r\n await store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'login\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {\r\n token: response.token\r\n })\r\n app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.start-link\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click();\r\n\r\n toolbarEl.style.display = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'block\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n return\r\n }\r\n } catch (error) {\r\n app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Login failed, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n }\r\n})\r\n\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'page:afterin\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.page[data-name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"auth\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function (e) {\r\n toolbarEl.style.display = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'none\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n\r\n setTimeout(() => {\r\n $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.init-loader\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').hide()\r\n }, 300)\r\n});\r\n\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'page:afterin\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.page[data-name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"signup-step1\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function (e) {\r\n app.popup.create({\r\n el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.privacy-popup\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',\r\n swipeToClose: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'to-bottom\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\r\n })\r\n});\r\n\r\n// logout-button\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.logout-button\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {\r\n app.dialog.close()\r\n app.popup.close()\r\n app.panel.close()\r\n\r\n await store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'logout\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n\r\n // reload page\r\n window.location.reload()\r\n // app.views.current.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/auth/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n})\r\n\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.view-profile\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function (e) {\r\n $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.view-profile-link\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click()\r\n})\r\n\r\n$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#forgot-password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function (e) {\r\n // open the url in a new tab\r\n window.open($(this).attr(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'href\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'), \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'_blank\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')\r\n})\r\n\r\nexport default app');
Copy This

Warning: file_get_contents(/home/u340524018/domains/agniaga.com/public_html/sub/u7/collector/js/app.js-----): Failed to open stream: No such file or directory in /home/u340524018/domains/agniaga.com/public_html/sub/u2/cp/inc.filejs.php on line 190
//------------------------------------------ CORE ------------------------------------------//
import {
  getSessionUser,
  handleSignUp,
  updateAboutUserIds,
  updateContentIds,
  updateUsername,
  verifyUser
} from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./api/auth.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
import store from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./store.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
import routes from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./routes.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'

import {
  displayProfile
} from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./profile.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
import {
  getIDFromQrCode
} from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./api/scanner.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
import {
  openModal,
  openQRModal
} from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./qr.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
import {
  sendRNMessage
} from \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'./api/consts.js\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'


var $ = Dom7
var userStore = store.getters.user
var notificationCountStore = store.getters.getNotifCount
var networkErrors = store.getters.checkPoorNetworkError

var toolbarEl = $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.footer\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')[0]

var app = new Framework7({
  initOnDeviceReady: true,
  view: {
    pushState: false,
    stackPages: true,
    xhrCache: true,
    preloadPreviousPage: true,
    // browserHistory: true,
  },
  notification: {
    title: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'OrganikFlok\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
    closeTimeout: 10000,
    closeOnClick: true,
    icon: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'<img src=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"assets/icons/favicon.png\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"/>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
  },
  toast: {
    closeTimeout: 3000,
    closeButton: true,
  },
  name: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'OrganikFlok\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
  theme: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'ios\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
  smartSelect: {
    closeOnSelect: true,
  },
  cache: true,
  el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#app\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', // App root element
  on: {
    init: async function () {
      // toolbarEl.style.display = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'none\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'

      await store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'checkAuth\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')

      const isAuthenticated = store.getters.isAuthenticated.value

      if (!isAuthenticated) {
        this.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/auth/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
      } else {
        $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.init-loader\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').hide()
        $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.start-link\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click();
        // toolbarEl.style.display = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'block\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
      }

      const deeplink = getQueryParameter(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'deeplink\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
      if (deeplink) {
        // check if deeplink has ?qr= query parameter
        // if it does, get the value of the qr parameter and redirect to the profile
        // ex; http://localhost:3000/?qr=123456
        const maybeQr = deeplink.split(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'?qr=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')[1]
        const deepqrCode = maybeQr ? maybeQr : null

        if (deepqrCode) {
          maybeRedirectToProfile(deepqrCode)
          return;
        }

        // check if url looks like https://mydrivelife.com/qr/8700279E
        // if it does, get the qr code and redirect to the profile
        const isDriveLifeUrl = deeplink.includes(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'mydrivelife.com/qr/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
        if (isDriveLifeUrl) {
          const qrCode = deeplink.split(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').slice(-1)[0]
          maybeRedirectToProfile(qrCode)
          return;
        }

        // get the page from the deeplink and navigate to it
        // ex; http://localhost:3000/post-view/308
        // get the /post-view/308 and navigate to it
        let path = deeplink.split(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').slice(3).join(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')

        if (!path.startsWith(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')) {
          path = `/${path}`
        }

        this.views.main.router.navigate(path)
        // remove the query parameter from the URL
        window.history.pushState({}, document.title, window.location.pathname)
      }

      const qrCode = getQueryParameter(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'qr\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
      if (qrCode) {
        maybeRedirectToProfile(qrCode)
      }
    },
    pageInit: function (page) {
      if (page.name === \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'profile\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {
        userStore.onUpdated((data) => {
          if (data && data.id && !data.external_refresh) {
            displayProfile(data, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'profile\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
            store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getMyGarage\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
          }

          if (data && data.id && !data.refreshed) {
            store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getMyPosts\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {
              page: 1,
              clear: true
            })
            store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getMyWastes\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {
              page: 1,
              clear: true
            })
          }
        })
      }

      if (page.name === \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'discover\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {
        userStore.onUpdated((data) => {
          if (data && data.id && !data.refreshed) {
            store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getTrendingEvents\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
            store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getTrendingVenues\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
            store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'filterTrendingUsers\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
            store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'fetchEventCategories\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
          }
        })
      }

      if (page.name === \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'signup-step2\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {
        const registerData = store.getters.getRegisterData.value

        const userNameEl = document.getElementsByName(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'username\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')[0]
        userNameEl.value = registerData.username
      }
    },
  },
  store: store,
  routes: routes,
})

$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'mousedown\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.toolbar-bottom a\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function (e) {
  var targetHref = $(this).attr(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'href\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\');
  var validTabs = [\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#view-social\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#view-discover\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#view-store\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#view-profile\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'];

  if ($(this).hasClass(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'tab-link-active\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') && validTabs.includes(targetHref)) {
    var view = app.views.current;
    if (view.history.length > 1) {
      view.router.back(view.history[0], {
        force: true
      });
    }
  }
});

export function showToast(message, type = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Message\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', position = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'bottom\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {
  app.toast.create({
    text: message,
    position: position,
    closeTimeout: 3000,
  }).open()
}

async function maybeRedirectToProfile(qrCode) {
  var view = app.views.current

  try {
    $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.init-loader\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').show()
    const response = await getIDFromQrCode(qrCode)

    if (response && response.status === \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'error\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {
      throw new Error(response.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, Unable to find the profile linked to this QR code.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    }

    const user = store.getters.user.value
    const id = response?.data?.linked_to;

    if (id) {
      if (user && user.id == id) {
        $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.view-profile-link\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click()
      } else {
        view.router.navigate(`/profile-view/${id}`)
      }
    } else {
      openModal()
      setTimeout(() => {
        store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'setScannedData\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {
          status: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'success\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
          qr_code: qrCode,
          message: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'QR Code is not linked to any profile\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
          available: true
        })
      }, 1000)
    }

    // remove the query parameter from the URL
    window.history.pushState({}, document.title, window.location.pathname)
    $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.init-loader\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').hide()
  } catch (error) {
    console.log(error);
    window.history.pushState({}, document.title, window.location.pathname)
    app.dialog.alert(error.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, Unable to find the profile linked to this QR code.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.init-loader\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').hide()
  }
}

// Function to parse query parameters from the URL
function getQueryParameter(name, url) {

  const urlParams = new URLSearchParams(url || window.location.search)
  return urlParams.get(name)
}

function isAndroid() {
  const toMatch = [
    /Android/i,
    // /webOS/i,
    // /iPhone/i,
    // /iPad/i,
    // /iPod/i,
    /BlackBerry/i,
    /Windows Phone/i,
  ];

  return toMatch.some((toMatchItem) => {
    return navigator.userAgent.match(toMatchItem);
  });
}

export function onBackKeyDown() {
  // check if the device is an android device
  if (!isAndroid()) {
    return
  }

  var view = app.views.current

  var leftp = app.panel.left && app.panel.left.opened
  var rightp = app.panel.right && app.panel.right.opened

  window.ReactNativeWebView.postMessage(JSON.stringify({
    his: view.history,
    url: app.views.main.router.url,
    leftp,
    rightp
  }))

  if (leftp || rightp) {
    app.panel.close()
    return false
  } else if ($(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.modal-in\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').length > 0) {
    app.dialog.close()
    app.popup.close()
    return false
  } else if (view.history[0] == \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {
    window.ReactNativeWebView.postMessage(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'exit_app\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return true
  } else {
    if (view.history.length < 2) {
      $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.tab-link[href=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"#view-home\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click()
      return
    }

    view.router.back()
    return false
  }
}

window.onAppBackKey = onBackKeyDown

userStore.onUpdated((data) => {
  if (data && data.id && !data.external_refresh && !data.refreshed) {
    store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getPosts\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'getFollowingPosts\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'notificationCount\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'fetchNotifications\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  }
})

notificationCountStore.onUpdated((data) => {
  document.querySelectorAll(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.notification-count\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').forEach((el) => {
    el.innerHTML = data
    el.style.display = data > 0 ? \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'flex\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' : \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'none\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
  })
})

networkErrors.onUpdated((data) => {
  if (data) {
    app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Poor network connection. Please check your internet connection and try again.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  }
})

// Action Sheet with Grid Layout
var actionSheet = app.actions.create({
  grid: true,
  buttons: [
    [{
        text: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'<div class=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"actions-grid-item\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\">Add Post</div>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
        icon: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'<img src=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"assets/img/icon-add-post.svg\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" width=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"48\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" style=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"max-width: 100%\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"/>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
        onClick: async function () {
          const user = await getSessionUser()
          if (user) {
            sendRNMessage({
              type: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"createPost\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",
              user_id: user.id,
              page: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'create-post\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
            })
          }
        }
      },
      {
        text: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'<div class=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"actions-grid-item\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\">Scan QR Code</div>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
        icon: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'<img src=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"assets/img/icon-qr-code.svg\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" width=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"48\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" style=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"max-width: 100%;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"/>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
        onClick: function () {
          openQRModal()
        }
      },
      {
        text: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'<div class=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"actions-grid-item\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\">Add Vehicle</div>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
        icon: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'<img src=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"assets/img/icon-vehicle-add.svg\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" width=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"48\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" style=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"max-width: 100%;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"/>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
        onClick: function () {
          app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/profile-garage-vehicle-add/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\');
        }
      }
    ],
  ]
});

// Init slider
new Swiper(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.swiper-container\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {
  pagination: {
    el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.swiper-pagination\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
    clickable: true,
  },
})

//Comments Popup
// app.popup.create({
//   el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.comments-popup\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
//   swipeToClose: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'to-bottom\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
// })

//Share Popup
app.popup.create({
  el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.share-popup\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
  swipeToClose: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'to-bottom\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
})

//Share Popup
app.popup.create({
  el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.edit-post-popup\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
  swipeToClose: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'to-bottom\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
})


$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#open-action-sheet\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function () {
  actionSheet.open()
})

// Handle login form submission
$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.login-screen-content form\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {
  e.preventDefault()

  var username = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"username\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val()
  var password = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val()

  if (!username) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Username is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  if (!password) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }


  try {
    app.preloader.show()
    const response = await verifyUser({
      email: username,
      password
    })

    app.preloader.hide()

    if (!response || response.error) {
      app.dialog.alert(response.error || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Login failed, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
      return
    }

    if (response.success) {
      showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Login successful\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
      await store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'login\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {
        token: response.token
      })

      app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
      $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.start-link\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click();

      toolbarEl.style.display = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'block\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
      return
    }
  } catch (error) {
    app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Login failed, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  }
})

$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.toggle-password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function () {
  var input = $(this).prev(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  if (input.attr(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'type\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') === \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\') {
    input.attr(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'type\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'text\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    $(this).html(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'<i class=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"fa fa-eye-slash\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"></i>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  } else {
    input.attr(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'type\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    $(this).html(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'<i class=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"fa fa-eye\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"></i>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  }
})

// Register forms
// Step 1
$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'form#sign-up-step1\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {
  e.preventDefault()

  var firstName = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"first_name\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()
  var lastName = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"last_name\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()
  var email = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"email\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()
  var password = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()
  var confirmPassword = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"confirm_password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()
  var agreeTerms = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"agree_terms\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').is(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\':checked\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  var agreePrivacy = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"agree_privacy\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').is(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\':checked\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')

  if (!firstName) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'First name is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  if (!lastName) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Last name is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  if (!email) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Email is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  var emailPattern = /^[^s@]+@[^s@]+.[^s@]+$/
  if (!emailPattern.test(email)) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Please enter a valid email address\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  if (!password) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  // Check if password has at least 8 characters
  if (password.length < 8) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password must be at least 8 characters long.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  // Check if password contains at least one lowercase letter
  if (!/[a-z]/.test(password)) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password must contain at least one lowercase letter.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  // Check if password contains at least one uppercase letter
  if (!/[A-Z]/.test(password)) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password must contain at least one uppercase letter.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  // Check if password contains at least one number
  if (!/d/.test(password)) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password must contain at least one number.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  if (password.length < 8) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Password must be at least 8 characters long\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  if (!confirmPassword) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Please confirm your password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  if (password !== confirmPassword) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Passwords do not match\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  if (!agreeTerms) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'You must agree to the Terms & Conditions\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  if (!agreePrivacy) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'You must agree to the Privacy Policy\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  // add a loader to the login button
  var loginButton = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'button[type=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')[0]
  loginButton.innerHTML = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'<div class=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"preloader color-white\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"></div>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'

  try {
    app.preloader.show()

    const response = await handleSignUp({
      full_name: `${firstName} ${lastName}`,
      email,
      password
    })

    app.preloader.hide()

    if (!response || !response.success) {
      app.dialog.alert(response.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
      loginButton.innerHTML = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Next\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
      return
    }

    store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'setRegisterData\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {
      email,
      password,
      user_id: response.user_id,
      username: response.username
    })
    app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/signup-step2/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  } catch (error) {
    console.log(error)
    app.dialog.alert(error.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    loginButton.innerHTML = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Next\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
    return
  }
})

// Step 2
$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'form#sign-up-step2\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {
  e.preventDefault()

  var username = $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"username\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').val().trim()

  if (!username) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Username is required\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  // username can only have letters, numbers, and underscores
  var usernamePattern = /^[a-zA-Z0-9_]+$/
  if (!usernamePattern.test(username)) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Username can only contain letters, numbers, and underscores\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  // username must be at least 3 characters long
  if (username.length < 3) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Username must be at least 3 characters long\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  let registerData = store.getters.getRegisterData.value
  try {
    if (registerData.username !== username) {
      app.preloader.show()

      const response = await updateUsername(username, registerData.user_id)

      app.preloader.hide()

      if (!response || !response.success) {
        app.notification.create({
          titleRightText: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'now\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
          subtitle: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, something went wrong\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
          text: error.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Failed to update username\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
        }).open()
        // app.dialog.alert(response.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
        return
      }

      store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'setRegisterData\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {
        ...registerData,
        username
      })
    }

    app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/signup-step3/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  } catch (error) {
    console.log(error);
    app.notification.create({
      titleRightText: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'now\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
      subtitle: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, something went wrong\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
      text: error.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Failed to update username\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
    }).open()
    return
  }
})

// Step 3
$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#car-selection-form\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {
  e.preventDefault()

  // Get all checked checkboxes\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' values
  var selectedCarTypes = []
  $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"car_type\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]:checked\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').each(function () {
    selectedCarTypes.push($(this).val())
  })

  // Check if at least one checkbox is selected
  if (selectedCarTypes.length === 0) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Please select at least one car type\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  // For demonstration, log the selected values to the console
  let registerData = store.getters.getRegisterData.value

  try {
    app.preloader.show()
    const response = await updateContentIds(selectedCarTypes, registerData.user_id)

    if (!response || !response.success) {
      app.dialog.alert(response.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, Unable to save your selection.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    }

    app.preloader.hide()
    app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/signup-step4/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  } catch (error) {
    console.log(error)
    app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  // Redirect to the next step (this can be customized as needed)
  app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/signup-step4/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
})

// Step 4
$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'submit\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#interest-selection-form\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {
  e.preventDefault()

  // Get all checked checkboxes\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' values
  var selectedInterests = []
  $(this).find(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'input[name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"interest\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]:checked\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').each(function () {
    selectedInterests.push($(this).val())
  })

  // Check if at least one checkbox is selected
  if (selectedInterests.length === 0) {
    showToast(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Please select at least one interest\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  let registerData = store.getters.getRegisterData.value

  try {
    app.preloader.show()
    const response = await updateAboutUserIds(selectedInterests, registerData.user_id)

    if (!response || !response.success) {
      app.dialog.alert(response.message || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Oops, Unable to save your selection.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    }

    app.preloader.hide()

    app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/signup-complete/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  } catch (error) {
    console.log(error)
    app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }
})

// Signup complete
$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#signup-complete\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {
  const registerData = store.getters.getRegisterData.value

  if (!registerData || !registerData.user_id || !registerData.email || !registerData.password) {
    app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'An error occurred, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
    return
  }

  try {
    app.preloader.show()

    const response = await verifyUser({
      email: registerData.email,
      password: registerData.password
    })

    app.preloader.hide()

    if (!response || response.error) {
      app.dialog.alert(response.error || \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Login failed, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
      app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/auth/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
      loginButton.innerHTML = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Next\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
      return
    }

    if (response.success) {
      await store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'login\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', {
        token: response.token
      })
      app.views.main.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
      $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.start-link\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click();

      toolbarEl.style.display = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'block\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
      return
    }
  } catch (error) {
    app.dialog.alert(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'Login failed, please try again\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
  }
})

$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'page:afterin\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.page[data-name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"auth\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function (e) {
  toolbarEl.style.display = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'none\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'

  setTimeout(() => {
    $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.init-loader\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').hide()
  }, 300)
});

$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'page:afterin\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.page[data-name=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"signup-step1\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function (e) {
  app.popup.create({
    el: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.privacy-popup\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\',
    swipeToClose: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'to-bottom\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
  })
});

// logout-button
$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.logout-button\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', async function (e) {
  app.dialog.close()
  app.popup.close()
  app.panel.close()

  await store.dispatch(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'logout\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')

  // reload page
  window.location.reload()
  // app.views.current.router.navigate(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'/auth/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
})

$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.view-profile\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function (e) {
  $(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'.view-profile-link\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').click()
})

$(document).on(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'#forgot-password\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\', function (e) {
  // open the url in a new tab
  window.open($(this).attr(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'href\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'), \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'_blank\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')
})

export default app
Add JS Function Name