{"version":3,"file":"static/js/91727.611c9e74.chunk.js","mappings":"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","sources":["newelements/Casino/hooks/useCategoriesFetch.ts","newelements/Casino/hooks/useOptions.ts","newelements/Casino/hooks/useCustomCategoriesUpdate.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useQuery } from '@tanstack/react-query';\nimport axios from 'axios';\nimport { CasinoCommandNames } from 'utils/constants/casino/casino-command-names';\nimport { CASINO_LANG_EXCEPTIONS } from 'utils/constants/languages/language-format';\nimport { ECasinoQueryKey } from 'utils/constants/store/query-keys';\nimport { SUCCESS_STATUS_CODE } from 'utils/constants/swarm/backend-status-codes';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { GLOBALS } from 'utils/generic/global-variables';\nimport { isMobile } from 'utils/is-mobile';\nimport { NewCasinoCategory } from 'interfaces/new-casino';\nimport {\n  setCanRequestCategoriesNestedData,\n  setCasinoOriginalCategories\n} from 'store/actions/new-casino';\n\ntype TUseCategoriesFetchParams = {\n  providerIdsForCategories?: string;\n  setExternalLoading?: (isLoading: boolean) => void;\n};\n\nexport const useCategoriesFetch = ({\n  providerIdsForCategories,\n  setExternalLoading\n}: TUseCategoriesFetchParams): void => {\n  const dispatch = useDispatch();\n\n  const { data } = useQuery({\n    queryKey: [ECasinoQueryKey.CasinoCategories],\n    queryFn: () => getCategories(),\n    retry: false\n  });\n\n  useEffect(() => {\n    data && dispatch(setCasinoOriginalCategories(data));\n  }, [data]);\n\n  const getCategories = () => {\n    setExternalLoading?.(true);\n\n    return new Promise<NewCasinoCategory[]>(resolve => {\n      if (SpringConfigs.MOCKED_DATA) {\n        import(\n          /* webpackChunkName: \"casino-categories-mock\" */ 'utils/mocks/casino/categories-mock'\n        ).then(mockModule => {\n          resolve(mockModule.CASINO_CATEGORIES_MOCK);\n        });\n      } else {\n        const lang = document.documentElement.lang;\n\n        const params = SpringConfigs?.DECENTRALIZED_CASINO_URL\n          ? {\n              partnerId: SpringConfigs.DECENTRALIZED_CASINO_PARTNER_ID\n            }\n          : {\n              partner_id: SpringConfigs.PARTNER_ID,\n              is_mobile: Number(isMobile()),\n              only_categories: 1,\n              country: SpringConfigs.CURRENT_COUNTRY_CODE,\n              lang:\n                GLOBALS.languageConfigs.casinoLangPrefix ||\n                CASINO_LANG_EXCEPTIONS[lang] ||\n                CASINO_LANG_EXCEPTIONS[lang.slice(0, 2)] ||\n                SpringConfigs.LANGUAGE_PREFIX,\n              ...(!!providerIdsForCategories && {\n                providers: providerIdsForCategories\n              })\n            };\n\n        const url = SpringConfigs?.DECENTRALIZED_CASINO_URL\n          ? `${SpringConfigs.DECENTRALIZED_CASINO_URL}${CasinoCommandNames.GET_DECENTRALIZED_CATEGORIES}`\n          : `${SpringConfigs.CASINO_URL}/${CasinoCommandNames.GET_OPTIONS}`;\n\n        axios\n          .get<{ categories: NewCasinoCategory[]; status: string }>(url, {\n            params\n          })\n          .then((resp: any) => {\n            if (\n              resp.status === SUCCESS_STATUS_CODE &&\n              resp.data &&\n              (resp.data.status === 'ok' ||\n                SpringConfigs?.DECENTRALIZED_CASINO_URL)\n            ) {\n              if (SpringConfigs?.DECENTRALIZED_CASINO_URL) {\n                const result = resp.data.categories.map(\n                  (category: NewCasinoCategory) => {\n                    return {\n                      id: category.categoryId,\n                      name: category.name,\n                      title: category.name,\n                      games_count: category.gameCount,\n                      badge: null\n                    };\n                  }\n                );\n\n                resolve(result);\n              } else {\n                resolve(resp.data.categories);\n              }\n\n              dispatch(setCanRequestCategoriesNestedData(true));\n            }\n          })\n          .finally(() => {\n            setExternalLoading?.(false);\n          });\n      }\n    });\n  };\n};\n","import { leftSideBarCasinoMain } from 'utils/casino/casino';\nimport { useCustomCategoriesUpdate } from './useCustomCategoriesUpdate';\nimport { useCategoriesFetch } from 'newelements/Casino/hooks/useCategoriesFetch';\n\ntype TUseOptionsParams = {\n  shouldFetch?: boolean;\n  providerIdsForCategories?: string;\n  setExternalLoading?: (isLoading: boolean) => void;\n};\n\nexport const useOptions = ({\n  shouldFetch = false,\n  providerIdsForCategories,\n  setExternalLoading\n}: TUseOptionsParams): void => {\n  useCategoriesFetch({ providerIdsForCategories, setExternalLoading });\n  useCustomCategoriesUpdate(\n    shouldFetch,\n    providerIdsForCategories,\n    leftSideBarCasinoMain()\n  );\n};\n","import { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { CUSTOM_CATEGORIES } from 'utils/constants/casino/custom-categories';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { getCasinoParams, mountPoint } from 'utils/generic/route-manipulation';\nimport { NewCasinoCategory } from 'interfaces/new-casino';\nimport { useSbRouteMatch } from 'newhooks/generic/useSbRouteMatch';\nimport store from 'store';\nimport { setCasinoCustomCategories } from 'store/actions/new-casino';\nimport { getFavoriteEntitiesCount } from 'store/selectors/fav-data';\nimport {\n  getCasinoOriginalCategories,\n  getCasinoOriginalCategoriesSet,\n  getCasinoOriginalCategoriesSetLeftSideBar,\n  getCategoryCustomIds,\n  getGamesConfigs\n} from 'store/selectors/new-casino';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\n\nexport const useCustomCategoriesUpdate = (\n  shouldFetch = false,\n  providerIdsForCategories?: string,\n  leftSideBarMain?: boolean\n): void => {\n  const { path } = useSbRouteMatch(window.location.pathname);\n  const originalCategories = useSelector(getCasinoOriginalCategories);\n  const originalCategoriesSet = useSelector(getCasinoOriginalCategoriesSet);\n  const categoryCustomIds = useSelector(getCategoryCustomIds);\n  const leftSideBarOriginalCategoriesSet = useSelector(\n    getCasinoOriginalCategoriesSetLeftSideBar\n  );\n\n  const user = useSelector(getUser);\n\n  const casinoGamesConfigs = useSelector(getGamesConfigs);\n\n  const categoriesSets = useMemo(() => {\n    return (\n      (leftSideBarMain\n        ? leftSideBarOriginalCategoriesSet\n        : originalCategoriesSet) ?? []\n    );\n  }, [leftSideBarOriginalCategoriesSet, originalCategoriesSet]);\n\n  const isLoggedIn = useSelector(getIsLoggedIn);\n  const {\n    casino: casinoGamesFavoritesCount,\n    providers: casinoProvidersFavoritesCount\n  } = useSelector(getFavoriteEntitiesCount);\n\n  const dispatch = useDispatch();\n  const history = useHistory();\n\n  const originalCategoriesCount = useMemo(() => {\n    if (originalCategories === null) {\n      return 0;\n    } else {\n      const categoriesIntersection = categoriesSets.length\n        ? originalCategories.filter(cat => categoriesSets.includes(cat.id))\n        : originalCategories;\n\n      return categoriesIntersection.reduce((acc, i) => acc + +i.games_count, 0);\n    }\n  }, [\n    originalCategories,\n    categoriesSets,\n    leftSideBarOriginalCategoriesSet,\n    leftSideBarMain\n  ]);\n\n  useEffect(() => {\n    if (shouldFetch && originalCategories !== null) {\n      let finalCasinoGamesConfigs = casinoGamesConfigs || null;\n\n      if (finalCasinoGamesConfigs === null) {\n        const casinoGamesWidgetContainer = document.querySelector(\n          `[data-widget=\"CasinoGames\"]`\n        );\n\n        if (casinoGamesWidgetContainer) {\n          finalCasinoGamesConfigs = JSON.parse(\n            casinoGamesWidgetContainer.getAttribute('data-configs') || '{}'\n          );\n        }\n      }\n\n      CUSTOM_CATEGORIES.favorite = {\n        ...CUSTOM_CATEGORIES.favorite,\n        games_count: (\n          casinoGamesFavoritesCount + casinoProvidersFavoritesCount\n        ).toString()\n      };\n\n      const reduxStore = store.getState().newCasinoStore;\n      const reduxCustomCategoryAll = reduxStore.categories.custom.find(\n        ({ id }: { id: string }) => id === CUSTOM_CATEGORIES.all.id\n      );\n\n      if (!reduxCustomCategoryAll?.games_count) {\n        CUSTOM_CATEGORIES.all = {\n          ...CUSTOM_CATEGORIES.all,\n          games_count: finalCasinoGamesConfigs?.bindWithCategories\n            ? ''\n            : originalCategoriesCount.toString()\n        };\n      } else {\n        CUSTOM_CATEGORIES.all = {\n          ...CUSTOM_CATEGORIES.all,\n          games_count: finalCasinoGamesConfigs?.bindWithCategories\n            ? reduxCustomCategoryAll?.games_count\n            : originalCategoriesCount.toString()\n        };\n      }\n\n      let customCategoriesToApply: NewCasinoCategory[];\n\n      if (isLoggedIn) {\n        customCategoriesToApply = [...Object.values(CUSTOM_CATEGORIES)];\n\n        if (typeof providerIdsForCategories === 'string') {\n          customCategoriesToApply = customCategoriesToApply.filter(item => {\n            return !['suggested', 'special', 'specialLive'].includes(item.id);\n          });\n        }\n      } else {\n        customCategoriesToApply = [\n          CUSTOM_CATEGORIES.favorite,\n          CUSTOM_CATEGORIES.all\n        ];\n\n        if (typeof providerIdsForCategories !== 'string') {\n          customCategoriesToApply = [\n            ...customCategoriesToApply,\n            CUSTOM_CATEGORIES.special,\n            CUSTOM_CATEGORIES.specialLive\n          ];\n        }\n      }\n\n      if (SpringConfigs.DECENTRALIZED_CASINO_URL) {\n        customCategoriesToApply = [CUSTOM_CATEGORIES.all];\n      }\n\n      const { categoryId: queryCategory } = getCasinoParams();\n\n      if (\n        !isLoggedIn &&\n        user.pending === undefined &&\n        [\n          CUSTOM_CATEGORIES.suggested.id,\n          CUSTOM_CATEGORIES.lastPlayed.id\n        ].includes(queryCategory)\n      ) {\n        history.push({\n          pathname: `${mountPoint(path, false, true)}/${\n            CUSTOM_CATEGORIES.all.id\n          }`,\n          search: window.location.search\n        });\n      }\n\n      customCategoriesToApply = customCategoriesToApply.filter(item => {\n        return categoryCustomIds.includes(item.id);\n      });\n\n      dispatch(setCasinoCustomCategories(customCategoriesToApply));\n    }\n  }, [\n    originalCategories,\n    casinoGamesFavoritesCount,\n    casinoProvidersFavoritesCount,\n    originalCategoriesCount,\n    isLoggedIn,\n    casinoGamesConfigs,\n    leftSideBarOriginalCategoriesSet,\n    leftSideBarMain,\n    categoryCustomIds\n  ]);\n};\n"],"names":["useOptions","_ref","shouldFetch","providerIdsForCategories","setExternalLoading","dispatch","useDispatch","data","useQuery","queryKey","ECasinoQueryKey","CasinoCategories","queryFn","getCategories","retry","useEffect","setCasinoOriginalCategories","Promise","resolve","SpringConfigs","MOCKED_DATA","then","mockModule","CASINO_CATEGORIES_MOCK","lang","document","documentElement","params","DECENTRALIZED_CASINO_URL","partnerId","DECENTRALIZED_CASINO_PARTNER_ID","partner_id","PARTNER_ID","is_mobile","Number","isMobile","only_categories","country","CURRENT_COUNTRY_CODE","GLOBALS","languageConfigs","casinoLangPrefix","CASINO_LANG_EXCEPTIONS","slice","LANGUAGE_PREFIX","providers","url","CasinoCommandNames","GET_DECENTRALIZED_CATEGORIES","CASINO_URL","GET_OPTIONS","axios","resp","status","SUCCESS_STATUS_CODE","result","categories","map","category","id","categoryId","name","title","games_count","gameCount","badge","setCanRequestCategoriesNestedData","finally","useCategoriesFetch","arguments","length","undefined","leftSideBarMain","path","useSbRouteMatch","window","location","pathname","originalCategories","useSelector","getCasinoOriginalCategories","originalCategoriesSet","getCasinoOriginalCategoriesSet","categoryCustomIds","getCategoryCustomIds","leftSideBarOriginalCategoriesSet","getCasinoOriginalCategoriesSetLeftSideBar","user","getUser","casinoGamesConfigs","getGamesConfigs","categoriesSets","useMemo","isLoggedIn","getIsLoggedIn","casino","casinoGamesFavoritesCount","casinoProvidersFavoritesCount","getFavoriteEntitiesCount","history","useHistory","originalCategoriesCount","filter","cat","includes","reduce","acc","i","finalCasinoGamesConfigs","casinoGamesWidgetContainer","querySelector","JSON","parse","getAttribute","CUSTOM_CATEGORIES","favorite","toString","reduxCustomCategoryAll","store","getState","newCasinoStore","custom","find","_ref2","all","_finalCasinoGamesConf2","_finalCasinoGamesConf","customCategoriesToApply","bindWithCategories","Object","values","item","special","specialLive","queryCategory","getCasinoParams","pending","suggested","lastPlayed","push","mountPoint","search","setCasinoCustomCategories","useCustomCategoriesUpdate","leftSideBarCasinoMain"],"sourceRoot":""}