{"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":""}