{"version":3,"sources":["lib/helper/userHelper.js","components/StateHandler/StateHandlers/CartHandler.jsx","components/StateHandler/StateHandlers/FavoriteHandler.jsx","components/StateHandler/StateHandler.jsx"],"names":["getUserData","authToken","callback","setLoading","arguments","length","undefined","errorCallback","async","response","axios","post","error","data","fetchData","then","result","catch","console","checkMonitorArticles","lang","articles","language","stringList","fetchJson","CartHandler","dispatch","useDispatch","cart","useSelector","state","useUserAuthToken","isAuthorized","useIsUserAuthorized","savedCartTimeout","setSavedCartTimeout","useState","updateCartOnServer","_result","useUpdateCartMutation","isLoading","isLoadingCart","useGetCartQuery","skip","useEffect","shouldSync","clearTimeout","setTimeout","setShouldSyncCart","FavoriteHandler","favorite","savedFavoriteTimeout","setSavedFavoriteTimeout","updateFavoriteOnServer","useUpdateFavoriteMutation","isLoadingFavorite","useGetFavoriteQuery","setShouldSyncFavorites","StateHandler","location","useLocation","navigate","useNavigate","isMaintenance","useGetOrderSystemMaintenanceQuery","signOut","userCookie","loadCookie","welcomeSplashVisible","signIn","_jsxs","_Fragment","children","_jsx"],"mappings":"+FAAA,yFAEO,MAAMA,EAAc,SACvBC,EACAC,GAGE,IAFFC,EAAUC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,OACbG,EAAaH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,OAEEI,WACVL,GAAYA,GAAW,GAC3B,IAAIM,EAAW,CAAC,EAChB,IACIA,QAAiBC,IAAMC,KACnB,6BACA,CACIV,aAGZ,CAAE,MAAOW,GAGL,MAFAL,EAAcK,GACVT,GAAYA,GAAW,GACrBS,CACV,CAGA,OADIT,GAAYA,GAAW,GACpBM,EAASI,IAAI,EAGxBC,GACKC,MAAKC,GAAUd,EAASc,KACxBC,OAAML,IACHM,QAAQN,MAAM,2BAA4BA,GAC1CT,GAAW,EAAM,GAE7B,EAEagB,EAAuBA,CAACC,EAAMC,EAAUnB,EAAUC,KACzCK,WACVL,GAAYA,GAAW,GAE3B,MAAMM,QAAiBC,IAAMC,KAAK,wCAAyC,CACvEW,SAAUF,EACVG,WAAYF,IAIhB,OADIlB,GAAYA,GAAW,GACpBM,EAASI,IAAI,EAGxBW,GACKT,MAAKC,GAAUd,EAASc,KACxBC,OAAML,IACHM,QAAQN,MAAM,mCAAoCA,GAClDT,GAAW,EAAM,GACnB,C,qFCLKsB,MA1CKA,KAChB,MAAMC,EAAWC,cACXC,EAAOC,aAAYC,GAASA,EAAMF,OAClC3B,EAAY8B,cACZC,EAAeC,eACdC,EAAkBC,GAAuBC,mBAAS,OAGlDC,EAAoBC,GAAWC,eAC9BC,UAAWC,GAAkBC,YACjC,CAAEzC,aACF,CAAE0C,MAAOX,IA4Bb,OAzBAY,qBAAU,KACFhB,EAAKiB,aACDX,IACAY,aAAaZ,GACbC,EAAoB,OAGpBH,IAAiBS,GACjBN,EACIY,YACI,KACIV,EAAmB,CACfpC,UAAWA,EACX2B,QACF,GAtBE,OA6BpBF,EAASsB,aAAkB,IAC/B,GACD,CAACpB,EAAM3B,EAAW+B,EAAcS,EAAeb,EAAKiB,aAEhD,IAAI,E,gBCIAI,MA5CSA,KACpB,MAAMvB,EAAWC,cACX1B,EAAY8B,cACZC,EAAeC,cACfiB,EAAWrB,aAAYC,GAASA,EAAMoB,YACrCC,EAAsBC,GAA2BhB,mBAAS,OAG1DiB,EAAwBf,GAAWgB,eAEtCd,UAAWe,GACXC,YACA,CAAEvD,aACF,CAAE0C,MAAOX,IA4Bb,OAzBAY,qBAAU,KACFM,EAASL,aACLM,IACAL,aAAaK,GACbC,EAAwB,OAGxBpB,IAAiBuB,GACjBH,EACIL,YACI,KACIM,EAAuB,CACnBpD,YACAiD,YACF,GAxBE,MA+BpBxB,EAAS+B,aAAuB,IACpC,GACD,CAACP,EAAUlB,EAAc/B,EAAWsD,EAAmBL,EAASL,aAE5D,IAAI,E,+CCUAa,UAxCMA,KACjB,MAAMhC,EAAWC,cACXK,EAAeC,cACf0B,EAAWC,cACXC,EAAWC,eAETjD,KAAMkD,GAAkBC,cA0BhC,OAvBApB,qBAAU,KACFZ,GAAgB+B,GAAerC,EAASuC,eAE5C,MAAMC,EAAaC,YAAW,QACxBC,EAAiC,OAAVF,QAAU,IAAVA,OAAU,EAAVA,EAAYE,qBACnCnE,EAAsB,OAAViE,QAAU,IAAVA,OAAU,EAAVA,EAAYjE,UAE1BA,GACAD,YACIC,GACAe,SACiCV,IAAzB8D,IAAoCpD,EAAOoD,qBAAuBA,GACtE1C,EAAS2C,YAAOrD,IAChB6C,EAASF,EAAS,IAEtB,SACA,KACIjC,EAASuC,cAAU,GAG/B,GACD,IAGCK,eAAAC,WAAA,CAAAC,SAAA,CACIC,cAAChD,EAAW,IACZgD,cAACxB,EAAe,MACjB,C","file":"static/js/50.e8cc741d.chunk.js","sourcesContent":["import axios from \"axios\"\r\n\r\nexport const getUserData = (\r\n authToken,\r\n callback,\r\n setLoading = () => { },\r\n errorCallback = () => { }\r\n) => {\r\n const fetchData = async () => {\r\n if (setLoading) setLoading(true)\r\n let response = {}\r\n try {\r\n response = await axios.post(\r\n \"/api/Users/GetCustomerData\",\r\n {\r\n authToken\r\n }\r\n )\r\n } catch (error) {\r\n errorCallback(error)\r\n if (setLoading) setLoading(false)\r\n throw error\r\n }\r\n\r\n if (setLoading) setLoading(false)\r\n return response.data\r\n }\r\n\r\n fetchData()\r\n .then(result => callback(result))\r\n .catch(error => {\r\n console.error(\"Error getting user data.\", error)\r\n setLoading(false)\r\n })\r\n}\r\n\r\nexport const checkMonitorArticles = (lang, articles, callback, setLoading) => {\r\n const fetchJson = async () => {\r\n if (setLoading) setLoading(true)\r\n\r\n const response = await axios.post(\"/api/ProductInfo/CheckMonitorProducts\", {\r\n language: lang,\r\n stringList: articles\r\n })\r\n\r\n if (setLoading) setLoading(false)\r\n return response.data\r\n }\r\n\r\n fetchJson()\r\n .then(result => callback(result))\r\n .catch(error => {\r\n console.error(\"Error checking monitor products.\", error)\r\n setLoading(false)\r\n })\r\n}\r\n","import { setShouldSyncCart } from \"../../../redux/cartSlice\"\r\nimport { useIsUserAuthorized, useUserAuthToken } from \"../../../redux/hook/userHooks\"\r\nimport { useGetCartQuery, useUpdateCartMutation } from \"../../../redux/services/cartApi\"\r\nimport { useState, useEffect } from \"react\"\r\n\r\nimport { useDispatch, useSelector } from \"react-redux\"\r\n\r\nconst CartHandler = () => {\r\n const dispatch = useDispatch()\r\n const cart = useSelector(state => state.cart)\r\n const authToken = useUserAuthToken()\r\n const isAuthorized = useIsUserAuthorized()\r\n const [savedCartTimeout, setSavedCartTimeout] = useState(null)\r\n const saveTimeoutDuration = 1500\r\n\r\n const [updateCartOnServer, _result] = useUpdateCartMutation()\r\n const { isLoading: isLoadingCart } = useGetCartQuery(\r\n { authToken },\r\n { skip: !isAuthorized }\r\n )\r\n\r\n useEffect(() => {\r\n if (cart.shouldSync) {\r\n if (savedCartTimeout) {\r\n clearTimeout(savedCartTimeout)\r\n setSavedCartTimeout(null)\r\n }\r\n\r\n if (isAuthorized && !isLoadingCart) {\r\n setSavedCartTimeout(\r\n setTimeout(\r\n () => {\r\n updateCartOnServer({\r\n authToken: authToken,\r\n cart\r\n })\r\n },\r\n saveTimeoutDuration\r\n )\r\n )\r\n }\r\n\r\n dispatch(setShouldSyncCart(false))\r\n }\r\n }, [cart, authToken, isAuthorized, isLoadingCart, cart.shouldSync])\r\n\r\n return null\r\n}\r\n\r\nexport default CartHandler\r\n","import { setShouldSyncFavorites } from \"../../../redux/favoriteSlice\"\r\nimport { useIsUserAuthorized, useUserAuthToken } from \"../../../redux/hook/userHooks\"\r\nimport { useGetFavoriteQuery, useUpdateFavoriteMutation } from \"../../../redux/services/favoriteApi\"\r\nimport { useDispatch, useSelector } from \"react-redux\"\r\nimport { useState, useEffect } from \"react\"\r\n\r\nconst FavoriteHandler = () => {\r\n const dispatch = useDispatch()\r\n const authToken = useUserAuthToken()\r\n const isAuthorized = useIsUserAuthorized()\r\n const favorite = useSelector(state => state.favorite)\r\n const [savedFavoriteTimeout, setSavedFavoriteTimeout] = useState(null)\r\n const saveTimeoutDuration = 1000\r\n\r\n const [updateFavoriteOnServer, _result] = useUpdateFavoriteMutation()\r\n const {\r\n isLoading: isLoadingFavorite\r\n } = useGetFavoriteQuery(\r\n { authToken },\r\n { skip: !isAuthorized }\r\n )\r\n\r\n useEffect(() => {\r\n if (favorite.shouldSync) {\r\n if (savedFavoriteTimeout) {\r\n clearTimeout(savedFavoriteTimeout)\r\n setSavedFavoriteTimeout(null)\r\n }\r\n\r\n if (isAuthorized && !isLoadingFavorite) {\r\n setSavedFavoriteTimeout(\r\n setTimeout(\r\n () => {\r\n updateFavoriteOnServer({\r\n authToken,\r\n favorite\r\n })\r\n },\r\n saveTimeoutDuration\r\n )\r\n )\r\n }\r\n\r\n dispatch(setShouldSyncFavorites(false))\r\n }\r\n }, [favorite, isAuthorized, authToken, isLoadingFavorite, favorite.shouldSync])\r\n\r\n return null\r\n}\r\n\r\nexport default FavoriteHandler\r\n","import CartHandler from \"./StateHandlers/CartHandler\"\r\nimport FavoriteHandler from \"./StateHandlers/FavoriteHandler\"\r\nimport { getUserData } from \"../../lib/helper/userHelper\"\r\nimport { loadCookie } from \"../../redux/cookieStorage\"\r\nimport { useIsUserAuthorized } from \"../../redux/hook/userHooks\"\r\nimport { useGetOrderSystemMaintenanceQuery } from \"../../redux/services/broditWebApi\"\r\nimport { signIn, signOut } from \"../../redux/userSlice\"\r\nimport { useDispatch } from \"react-redux\"\r\nimport { React, useEffect } from \"react\"\r\nimport { useLocation, useNavigate } from \"react-router-dom\"\r\n\r\n/**\r\n * Handles neccessary state changes that always need to be rendered\r\n * regardless if the designated component is mounted or not.\r\n * For example, handles default state values and clearing state when\r\n * changing the language.\r\n */\r\nconst StateHandler = () => {\r\n const dispatch = useDispatch()\r\n const isAuthorized = useIsUserAuthorized()\r\n const location = useLocation()\r\n const navigate = useNavigate()\r\n\r\n const { data: isMaintenance } = useGetOrderSystemMaintenanceQuery()\r\n\r\n // Logs in on mount if the authToken is present.\r\n useEffect(() => {\r\n if (isAuthorized && isMaintenance) dispatch(signOut())\r\n\r\n const userCookie = loadCookie(\"user\")\r\n const welcomeSplashVisible = userCookie?.welcomeSplashVisible\r\n const authToken = userCookie?.authToken\r\n\r\n if (authToken) {\r\n getUserData(\r\n authToken,\r\n result => {\r\n if (welcomeSplashVisible !== undefined) result.welcomeSplashVisible = welcomeSplashVisible\r\n dispatch(signIn(result))\r\n navigate(location)\r\n },\r\n () => { },\r\n () => {\r\n dispatch(signOut())\r\n }\r\n )\r\n }\r\n }, [])\r\n\r\n return (\r\n <>\r\n <CartHandler />\r\n <FavoriteHandler />\r\n </>\r\n )\r\n}\r\n\r\nexport default StateHandler\r\n"],"sourceRoot":""}