{"version":3,"sources":["helpers/errorMessagesConverter.ts","api/index.ts","helpers/errorNotify.tsx","routes/private-route.tsx","components/loader/index.tsx","pages/404/index.tsx","store/modules/appDocuments/types.ts","routes/index.tsx","App.tsx","store/modules/appDocuments/actions.ts","reportWebVitals.ts","index.tsx","config/config.ts","store/modules/licenses/reducer.ts","store/modules/auth/types.ts","store/modules/profile/reducer.ts","store/modules/loader/reducer.ts","store/modules/registration/reducer.ts","store/modules/geoData/reducer.ts","store/root-reducer.ts","store/store.ts","webSocket/index.ts","routes/routes.ts","store/modules/playQueue/reducer.ts","store/modules/profile/selectors.ts","store/modules/appDocuments/reducer.ts","styles/colors.ts","store/modules/catalogs/reducer.ts","store/modules/profile/actions.ts","store/modules/spots/reducer.ts","store/modules/adaptive/reducer.ts","store/modules/devices/reducer.ts","constants/limit.ts","store/modules/playerUsers/reducer.ts","store/modules/tariffs/reducer.ts","store/modules/charts/reducer.ts","store/modules/calculator/reducer.ts","store/modules/playQueue/selectors.ts","store/modules/licenses/actions.ts","store/modules/support/reducer.ts","store/modules/statistics/reducer.ts","store/modules/invoices/reducer.ts","store/modules/timzone/reducer.ts","store/modules/loader/selectors.ts"],"names":["messagesConverter","m","request","axios","create","baseURL","config","baseUrl","responseType","interceptors","use","store","dispatch","isLoading","token","localStorage","getItem","LocalStorageKey","key","headers","authorization","error","Promise","reject","response","data","statusCode","toast","message","Array","isArray","forEach","errorNotify","removeItem","location","replace","Routes","auth","PrivateRoute","children","props","useDispatch","isToken","Boolean","profile","useSelector","getProfile","useEffect","getProfileFromServer","render","to","pathname","state","from","overrideSpinnerStyles","css","Loader","size","color","main_colors","text","violet","loading","showSpinner","AppDocumentTypes","NoFound","Container","Text","styled","div","p","RegistrationPage","lazy","ConfirmPhoneNumber","ProfilePage","CataloguesPage","RestorePasswordPage","PlayersPage","UsersPage","UserEditPage","UserCreatePage","StatisticsPage","AvailableUpdatesPage","TariffsPage","TariffPage","LicensePage","SupportPage","UserForm","BlackListEdit","PlaylistLK","PlaylistOKC","SpotsPage","DevicePage","PlayQueuePage","LoginPage","ChartPage","OnboardingPage","AppPage","RootRoute","fallback","path","signup","confirm","restorePassword","onboarding","exact","profileEdit","users","newUser","editUser","toString","editDevice","players","catalogues","statistics","playQueue","tariffs","availableUpdates","tariff","license","chart","support","blacklistEdit","playlistLK","playlistOKC","spots","app","App","getIsLoading","isSocketConnected","getIsSocketConnected","documentType","socket","on","setIsSocketConnected","videoInstruction","a","get","setVideoInstructionLink","externalUrl","console","log","getMyLicenseFromServer","io","opts","extraHeaders","Authorization","connect","SocketIndicator","$isSocketConnected","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","document","getElementById","process","redirectUrl","isDev","isProd","standardCover","terminalKey","notificationURL","storageBaseUrl","daDataAPIKey","userSlice","createSlice","name","initialState","myLicense","licenseById","myLicensesList","paymentURL","reducers","setMyLicense","action","payload","setLicenseById","setPaymentURL","actions","userEditSlice","setProfile","setDefaultEntertainmentCenter","company","defaultEntertainmentCenter","setAddressMatch","isAddressMatched","userRegistrationSlice","regFormData","setRegFormData","geoTypesList","geoNamesList","setGeoTypesList","setGeoNamesList","rootReducer","combineReducers","configureStore","reducer","wsEmit","wsOn","Manager","disconnect","queue","playerId","setQueue","setPlayerId","getDefaultEntertainmentCenter","getIsAddressMatchedProfile","getIsCalculationAgreed","isCalculationAgreed","appDocumentsSlice","videoInstructionLink","background","primary","secondary","cards","items","activeItems","tertiary","gold","white","red","blue","green","lightGreen","button","enabled","disabled","inverse","border","focus","table","item","default","odd","playing","playlistsOks","playlistsLk","genresList","phonogramsList","phonogramsListHasMore","phonogramsLoadOffset","LIMIT","listBlacklistPhonograms","addingPhonogramsIds","deletingPhonogramsIds","playlistID","playlistById","playlistPhonograms","tabIndex","catalogs","setPhonogramsList","setGenreList","id","undefined","nameTr","setPlaylistsOks","setPlaylistsLk","setPhonogramsListOnScroll","setPhonogramsLoadOffset","setPhonogramsListHasMore","setAddPhonogramInBlacklist","push","setRemovePhonogramFromBlacklist","filter","setAddingPhonogramIds","setDeletingPhonogramIds","clearAddingDeletingPhonogramIds","setPhonogramsInBlacklistFromServer","setPlaylistID","setPlaylistById","setAddPhonogramsInPlaylistFromServer","setAddPhonogramInPlaylist","setRemovePhonogramFromPlaylist","setTabIndex","editProfile","goBack","put","r","catch","saveAddressMatch","isMatch","updateDefaultEntertainmentCenter","addressData","onSuccess","addressDetails","res","changePassword","password","fn","uploadContractFileOnServer","contractId","files","formData","FormData","append","post","sendToUserPhoneConfirmCode","callback","confirmPhone","code","sendOnboardingProcessCompletedStatus","patch","profileResponse","getUserInstructionFromServer","resPath","link","createElement","href","file","relativePath","target","setAttribute","body","appendChild","click","removeChild","spot","room","tables","rooms","spotId","roomId","tableId","showSpotBlock","showRoomBlock","showTableBlock","unBindDevices","setSpot","setRoom","setTable","setSpots","setTables","setRooms","setSpotId","setRoomId","setTableId","setShowSpotBlock","setShowRoomBlock","setShowTableBlock","setUnbindDevices","isMobile","window","innerWidth","adaptiveSlice","setIsMobile","devices","device","isCreated","setDevices","setDevice","playerUserSlice","user","setUser","setUsers","tariffsList","tariffById","setTariffsList","setTariffById","chartsList","chartPhonogramsList","chartId","chartById","chartByIdIsDeleted","setChartPhonogramsList","setChartList","setChartId","setChartById","setChartByIdIsDeleted","calculatorSlice","discounts","selectedDiscountId","calculateResult","setDiscounts","setSelectedDiscountId","setCalculateResult","getPLayerId","getPlayQueue","getMyLicensesListFromServer","isActual","params","getLicenseByIdFromServer","buyLicenseByInvoicing","tariffId","duration","cost","discountId","showPopUp","supportSubjectsList","faqList","setSupportSubjectsList","setFaqList","statisticsPhonogramList","spotsRooms","setStatisticsPhonogramList","setSpotsRooms","invoicesSlice","lastInvoice","isNextDayWork","setLastInvoice","setIsNextDayWork","timzoneSlice","timzones","setTimeZones","loader"],"mappings":"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","file":"static/js/main.4368a9e8.chunk.js","sourcesContent":["export const messagesConverter = (m: string) => {\n switch (m) {\n case 'Validation Error':\n return 'Неверно заполнено поле.'\n case 'inn must be longer than or equal to 10 characters':\n return 'ИНН должен содержать 10 или 12 цифр.'\n case 'Unauthorized':\n return 'Ошибка авторизации.'\n case 'Not Found':\n return 'Объект не найден.'\n case 'Internal Server Error':\n return 'Нет доступа к серверу. Повторите попытку позже...'\n case 'Method not implemented':\n return 'Данное действие не возможно выполнить. Обратитесь в тех. поддержку.'\n case 'Invalid credentials':\n return 'Неверные логин или пароль.'\n case 'Sms request too often':\n return 'Слишком частый запрос на отправку смс.'\n case 'Object not found':\n return 'Объект не найден.'\n case 'User not found':\n return 'Пользователь не найден.'\n case 'User`s password is empty':\n return 'Введите, пожалуйста, пароль.'\n case 'Catalog phonogram number does not match':\n return 'Номер фонограммы не совпадает с каталогом.'\n case 'User already exists':\n return 'Пользователь уже существует.'\n case 'Company not found':\n return 'Компания не найдена.'\n case 'Access denied':\n return 'Доступ запрещён.'\n case 'Device not registered':\n return 'Устройство не зарегистрировано в системе.'\n case 'Device is registered to another company':\n return 'Данное устройство зарегистрировано в другой компании.'\n case 'Client not found':\n return 'Пользователь не найден.'\n case 'Player user not found':\n return 'Пользователь не найден.'\n case 'Entertainment center not found':\n return 'Компания не найдена.'\n case 'User is locked':\n return 'Пользователь заблокирован.'\n case 'Email already in use':\n return 'Введенная электронная почта уже используется в системе.'\n case 'Contract not found':\n return 'Договор не найден.'\n case 'File not found':\n return 'Не удалось найти файл.'\n case 'File is not attached':\n return 'Не удалось прикрепить файл.'\n case 'Xls file parsing is failured':\n return 'Ошибка обработки xls файла.'\n case 'File has the wrong format':\n return 'Неверный формат файла.'\n case 'File cannot be parsed':\n return 'Загруженный файл не может быть обработан.'\n case 'File cannot be built':\n return 'Невозможно сформировать файл.'\n case 'Files are too large':\n return 'Слишком большой файл.'\n case 'Phonogram not found':\n return 'Фонограмма не найдена.'\n case 'Playlist not found':\n return 'Плейлист не найден.'\n case 'Default chart can not be updated':\n return 'Нельзя обновить текущий чарт.'\n case 'Tariff not found':\n return 'Выбранный тариф не найден.'\n case 'License missing or expired':\n return 'Лицензия не найдена или срок действия лицензии истек.'\n case 'Exceeded the number of devices':\n return 'Превышено допустимое количество добавленных устройств. Обновите лицензию или удалите одно из текущих устройств.'\n case 'Exceeded the number of playlists':\n return 'Превышено допустимое количество добавленных плейлистов. Обновите лицензию или удалите один из текущих плейлистов.'\n case 'License not found':\n return 'Действующая лицензия не найдена.'\n case 'Signature not verified':\n return 'Подпись договора не подтверждена.'\n case 'Support subject not found':\n return 'Не выбрана тема обращения.'\n case 'phone must be a valid phone number':\n return 'Номер телефона должен быть валидным.'\n case 'email must be an email':\n return 'Адрес эл. почты должен быть валидным.'\n case 'inn must be a number string':\n return 'ИНН должен быть числом'\n case 'Company already exists':\n return 'Компания уже зарегистрирована'\n case 'Verification code is expired':\n return 'Срок действия кода подтверждения истек'\n case 'User phone is already verified':\n return 'Телефон пользователя уже подтвержден'\n case 'Entertainment center is last':\n return 'Нельзя удалять последнее заведение в списке'\n case 'Royalty not found':\n return 'Не найдено ставок для выбранного тарифа'\n default:\n return m\n }\n}\n","import axios from 'axios'\nimport { config } from 'config/config'\nimport { errorNotify } from 'helpers/errorNotify'\nimport { Routes } from 'routes/routes'\nimport { LocalStorageKey } from 'store/modules/auth/types'\nimport { store } from 'store/store'\nimport { isLoading } from 'store/modules/loader/reducer'\n\nexport const request = axios.create({\n baseURL: config.baseUrl,\n responseType: 'json',\n})\n\nrequest.interceptors.request.use(\n (config) => {\n store.dispatch(isLoading(true))\n\n const token = localStorage.getItem(LocalStorageKey.key)\n if (token) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config.headers.authorization = `Bearer ${token}`\n }\n return config\n },\n (error) => {\n store.dispatch(isLoading(false))\n return Promise.reject(error)\n },\n)\n\nrequest.interceptors.response.use(\n (response) => {\n store.dispatch(isLoading(false))\n return response\n },\n function (error) {\n store.dispatch(isLoading(false))\n errorNotify(error)\n if (error.response.data.statusCode === 401 || error.response.data.error === 'Access denied') {\n localStorage.removeItem(LocalStorageKey.key)\n location.replace(Routes.auth)\n }\n return Promise.reject(error)\n },\n)\n","import { toast } from 'react-toastify'\nimport { TError$ } from 'store/modules/error/types'\nimport { messagesConverter } from 'helpers/errorMessagesConverter'\n\nexport const errorNotify = (error: TError$) => {\n if (error.response.data.statusCode === 401 || error.response.data.error === 'Access denied') return\n\n if (error.response && error.response.data) {\n toast.error(messagesConverter(error.response.data.error))\n if (error.response.data.message && Array.isArray(error.response.data.message)) {\n error.response.data.message.forEach((m: string) => toast.error(messagesConverter(m)))\n } else if (error.response.data.message) {\n toast.error(messagesConverter(error.response.data.message))\n }\n } else {\n toast.error('Ooops...')\n }\n}\n","import React, { useEffect } from 'react'\nimport { Routes } from 'routes/routes'\nimport { Route, Redirect } from 'react-router-dom'\nimport { FC } from 'react'\nimport { LocalStorageKey } from 'store/modules/auth/types'\nimport { getProfileFromServer } from 'store/modules/profile/actions'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { getProfile } from 'store/modules/profile/selectors'\n\ntype TProps = {\n path?: Routes | string\n exact?: boolean\n}\n\nexport const PrivateRoute: FC = ({ children, ...props }) => {\n const dispatch = useDispatch()\n const isToken = Boolean(localStorage.getItem(LocalStorageKey.key))\n const profile = useSelector(getProfile)\n\n // const accessIsAllowed = profile?.phone.isVerified && myLicense\n // console.log('private', accessIsAllowed)\n\n useEffect(() => {\n if (!profile) {\n dispatch(getProfileFromServer())\n }\n }, [profile])\n\n if (!profile) {\n return <>\n }\n\n return (\n <>\n \n isToken ? (\n children\n ) : (\n \n )\n }\n />\n \n )\n}\n","import React from 'react'\nimport { css } from '@emotion/core'\nimport ClipLoader from 'react-spinners/ClipLoader'\nimport { main_colors } from 'styles/colors'\n\nconst overrideSpinnerStyles = css`\n margin: auto;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 30px;\n right: 0;\n z-index: 100;\n`\n\ntype TProps = {\n showSpinner: boolean\n size?: number\n}\n\nexport const Loader = (props: TProps) => (\n \n)\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Link } from 'react-router-dom'\nimport { Routes } from 'routes/routes'\n\nconst NoFound = () => {\n return (\n \n Запрашиваемая страница не найдена\n На главную\n \n )\n}\n\nexport default NoFound\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`\nconst Text = styled.p`\n font-size: 24px;\n font-weight: 700;\n`\n","export type TAppDocumentSate = {\n videoInstructionLink: null | string\n}\n\nexport enum AppDocumentTypes {\n videoInstruction = 'lk-user-instruction',\n}\n\nexport type AppDocumentRes = {\n id: string\n type: string\n name: string\n accept: string\n uploadedBy: {\n firstName: string\n fatherName: string\n lastName: string\n }\n file: {\n id: string\n createdAt: string\n updatedAt: string\n deletedAt: string\n uploadedBy: number\n relativePath: string\n mimeType: string\n size: number\n originalName: string\n uploadedAt: string\n removedAt: string\n }\n updatedAt: string\n externalUrl: string\n}\n","import React, { FC, Suspense, lazy } from 'react'\nimport { BrowserRouter, Route, Switch } from 'react-router-dom'\nimport { PrivateRoute } from 'routes/private-route'\nimport { Routes } from 'routes/routes'\nimport { Loader } from 'components/loader'\nimport NoFound from 'pages/404'\nconst RegistrationPage = lazy(() => import('pages/registration'))\nconst ConfirmPhoneNumber = lazy(() => import('pages/confirmPhoneNumber'))\nconst ProfilePage = lazy(() => import('pages/profile'))\nconst CataloguesPage = lazy(() => import('pages/catalogs'))\nconst RestorePasswordPage = lazy(() => import('pages/restorePassword'))\nconst PlayersPage = lazy(() => import('pages/devices'))\nconst UsersPage = lazy(() => import('pages/users'))\nconst UserEditPage = lazy(() => import('pages/users/userEdit'))\nconst UserCreatePage = lazy(() => import('pages/users/userCreate'))\nconst StatisticsPage = lazy(() => import('pages/statistics'))\nconst AvailableUpdatesPage = lazy(() => import('pages/availableUpdates'))\nconst TariffsPage = lazy(() => import('pages/tariffs'))\nconst TariffPage = lazy(() => import('pages/tariff'))\nconst LicensePage = lazy(() => import('pages/license'))\nconst SupportPage = lazy(() => import('pages/support'))\nconst UserForm = lazy(() => import('pages/profile/editProfile'))\nconst BlackListEdit = lazy(() => import('pages/catalogs/playlists/blacklist'))\nconst PlaylistLK = lazy(() => import('pages/catalogs/playlists/playlistLK'))\nconst PlaylistOKC = lazy(() => import('pages/catalogs/playlists/playlistOKC'))\nconst SpotsPage = lazy(() => import('pages/spots'))\nconst DevicePage = lazy(() => import('pages/device'))\nconst PlayQueuePage = lazy(() => import('pages/playQueue'))\nconst LoginPage = lazy(() => import('pages/login'))\nconst ChartPage = lazy(() => import('pages/catalogs/charts/chart'))\nconst OnboardingPage = lazy(() => import('pages/onboarding'))\nconst AppPage = lazy(() => import('pages/app'))\n\nexport const RootRoute: FC = () => {\n return (\n \n }>\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n )\n}\n","import React, { useEffect } from 'react'\nimport { RootRoute } from 'routes'\nimport { ToastContainer } from 'react-toastify'\nimport 'react-toastify/dist/ReactToastify.css'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { getIsLoading } from 'store/modules/loader/selectors'\nimport { Loader } from 'components/loader'\nimport { getProfile } from 'store/modules/profile/selectors'\nimport { socket } from 'webSocket'\nimport { LocalStorageKey } from 'store/modules/auth/types'\nimport { getMyLicenseFromServer } from 'store/modules/licenses/actions'\nimport { setIsSocketConnected } from 'store/modules/playQueue/reducer'\nimport { getIsSocketConnected } from 'store/modules/playQueue/selectors'\nimport styled from 'styled-components'\nimport 'react-dadata/dist/react-dadata.css'\nimport { getDocumentByType } from 'store/modules/appDocuments/actions'\nimport { AppDocumentTypes } from 'store/modules/appDocuments/types'\n\nexport function App() {\n const isLoading = useSelector(getIsLoading)\n const profile = useSelector(getProfile)\n const dispatch = useDispatch()\n const isSocketConnected = useSelector(getIsSocketConnected)\n\n useEffect(() => {\n // const loadingScreen = document.querySelector('#await-app-loading-screen')\n // if (loadingScreen) {\n // loadingScreen.remove()\n // }\n socket.on('connect', () => {\n dispatch(setIsSocketConnected(true))\n })\n socket.on('disconnect', () => {\n dispatch(setIsSocketConnected(false))\n })\n\n dispatch(getDocumentByType(AppDocumentTypes.videoInstruction))\n }, [])\n\n useEffect(() => {\n if (profile) {\n dispatch(getMyLicenseFromServer())\n\n socket.auth = { token: localStorage.getItem(LocalStorageKey.key) }\n socket.io.opts.extraHeaders = {\n Authorization: `Bearer ${localStorage.getItem(LocalStorageKey.key)}`,\n }\n socket.connect()\n }\n }, [profile])\n\n return (\n <>\n {isLoading && }\n \n \n \n \n )\n}\n\nconst SocketIndicator = styled.div<{ $isSocketConnected: boolean }>`\n width: 2px;\n height: 2px;\n position: fixed;\n top: 0;\n right: 0;\n border-radius: 50%;\n background-color: ${(props) => (props.$isSocketConnected ? 'green' : 'red')};\n`\n","import { request } from 'api'\nimport { AppDispatch } from 'store/store'\nimport { AppDocumentRes, AppDocumentTypes } from './types'\nimport { setVideoInstructionLink } from './reducer'\nimport { AxiosResponse } from 'axios'\n\nexport const getDocumentByType = (documentType: AppDocumentTypes) => {\n return async (dispatch: AppDispatch) => {\n try {\n const response = await request.get>(`/documentation/${documentType}`)\n if (documentType === AppDocumentTypes.videoInstruction) {\n dispatch(setVideoInstructionLink(response.data.data.externalUrl))\n }\n } catch (error) {\n console.log(error)\n }\n }\n}\n","import { ReportHandler } from 'web-vitals'\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry)\n getFID(onPerfEntry)\n getFCP(onPerfEntry)\n getLCP(onPerfEntry)\n getTTFB(onPerfEntry)\n })\n }\n}\n\nexport default reportWebVitals\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { App } from 'App'\nimport reportWebVitals from './reportWebVitals'\nimport { Provider } from 'react-redux'\nimport { store } from 'store/store'\nimport './index.css'\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root'),\n)\n\nreportWebVitals()\n","if (!process.env.REACT_APP_BASE_URL) {\n throw new Error('Please specify REACT_APP_BASE_URL env variable')\n}\n\nexport const config = {\n baseUrl: process.env.REACT_APP_BASE_URL,\n redirectUrl: process.env.REACT_APP_REDIRECT_URL,\n isDev: process.env.NODE_ENV === 'development',\n isProd: process.env.NODE_ENV === 'production',\n standardCover: 'https://storage.theoryandpractice.ru/tnp/uploads/image_unit/000/156/586/image/base_87716f252d.jpg',\n terminalKey: process.env.REACT_APP_TERMINAL_KEY,\n notificationURL: process.env.REACT_APP_NOTIFICATION_URL,\n storageBaseUrl: process.env.REACT_APP_STORAGE_BASE_URL,\n daDataAPIKey: process.env.REACT_APP_DADATA_API_KEY,\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TLicensesState, TMyLicense } from './types'\n\nconst initialState: TLicensesState = {\n myLicense: null,\n licenseById: null,\n myLicensesList: [],\n paymentURL: null,\n}\n\nconst userSlice = createSlice({\n name: 'licenses',\n initialState,\n reducers: {\n setMyLicense(state: TLicensesState, action: PayloadAction) {\n state.myLicense = action.payload\n },\n myLicensesList(state: TLicensesState, action: PayloadAction) {\n state.myLicensesList = action.payload\n },\n setLicenseById(state: TLicensesState, action: PayloadAction) {\n state.licenseById = action.payload\n },\n setPaymentURL(state: TLicensesState, action: PayloadAction) {\n state.paymentURL = action.payload\n },\n },\n})\n\nexport const { setMyLicense, setLicenseById, myLicensesList, setPaymentURL } = userSlice.actions\n\nexport default userSlice.reducer\n","export enum LocalStorageKey {\n key = 'admin-lk-token',\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TUser, TUserState } from 'store/modules/profile/types'\nimport { TSpot } from '../spots/types'\n\nconst initialState: TUserState = {\n data: null,\n}\n\nconst userEditSlice = createSlice({\n name: 'profile',\n initialState,\n reducers: {\n setProfile(state: TUserState, action: PayloadAction) {\n state.data = action.payload\n },\n setDefaultEntertainmentCenter(state: TUserState, action: PayloadAction) {\n if (state.data?.company) {\n state.data.company.defaultEntertainmentCenter = action.payload\n }\n },\n setAddressMatch(state: TUserState, action: PayloadAction) {\n if (state.data?.company) {\n state.data.company.isAddressMatched = action.payload\n }\n },\n },\n})\n\nexport const { setProfile, setDefaultEntertainmentCenter, setAddressMatch } = userEditSlice.actions\n\nexport default userEditSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\n\ntype TState = {\n isLoading: boolean\n}\n\nconst initialState: TState = {\n isLoading: false,\n}\n\nconst userSlice = createSlice({\n name: 'loader',\n initialState,\n reducers: {\n isLoading(state: TState, action: PayloadAction) {\n state.isLoading = action.payload\n },\n },\n})\n\nexport const { isLoading } = userSlice.actions\n\nexport default userSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TCreateClient, TRegistrationState } from './types'\n\nconst initialState: TRegistrationState = {\n regFormData: null,\n}\n\nconst userRegistrationSlice = createSlice({\n name: 'registration',\n initialState,\n reducers: {\n setRegFormData(state: TRegistrationState, action: PayloadAction) {\n state.regFormData = action.payload\n },\n },\n})\n\nexport const { setRegFormData } = userRegistrationSlice.actions\n\nexport default userRegistrationSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TGeoName, TGeoState, TGeoType } from 'store/modules/geoData/types'\n\nconst initialState: TGeoState = {\n geoTypesList: [],\n geoNamesList: [],\n}\n\nconst userSlice = createSlice({\n name: 'geoData',\n initialState,\n reducers: {\n setGeoTypesList(state: TGeoState, action: PayloadAction) {\n state.geoTypesList = action.payload\n },\n setGeoNamesList(state: TGeoState, action: PayloadAction) {\n state.geoNamesList = action.payload\n },\n },\n})\n\nexport const { setGeoTypesList, setGeoNamesList } = userSlice.actions\n\nexport default userSlice.reducer\n","import { combineReducers } from '@reduxjs/toolkit'\nimport * as reducers from './modules'\n\nexport const rootReducer = combineReducers({ ...reducers })\n","import { configureStore } from '@reduxjs/toolkit'\nimport { rootReducer } from 'store/root-reducer'\n\nexport const store = configureStore({\n reducer: rootReducer,\n})\n\nexport type AppDispatch = typeof store.dispatch\nexport type TState = ReturnType\n","import { Manager } from 'socket.io-client'\nimport { config } from 'config/config'\n\nexport const manager = new Manager(config.baseUrl)\n\nexport const socket = manager.socket('/', {}).disconnect()\n\nexport enum wsEmit {\n JoinToPlaybackQueue = 'JoinToPlaybackQueue',\n AddItemInSecondPosition = 'AddItemInSecondPosition',\n AddItemInLastPosition = 'AddItemInLastPosition',\n MoveQueueItem = 'MoveQueueItem',\n RemoveQueueItem = 'RemoveQueueItem',\n ClearPlaybackQueue = 'ClearPlaybackQueue',\n}\nexport enum wsOn {\n PlaybackQueueReceived = 'PlaybackQueueReceived',\n PlaybackQueueUpdated = 'PlaybackQueueUpdated',\n ErrorOccured = 'ErrorOccured',\n exception = 'exception',\n}\n","export enum Routes {\n profile = '/',\n profileEdit = '/profileEdit',\n signup = '/signup',\n confirm = '/confirm',\n auth = '/auth',\n restorePassword = '/restorePassword',\n users = '/users',\n newUser = '/users/add',\n editUser = '/users/edit',\n players = '/players',\n editDevice = '/players/edit',\n catalogues = '/catalogues',\n statistics = '/statistics',\n tariffs = '/tariffs',\n availableUpdates = '/availableUpdates',\n tariff = '/tariff',\n license = '/license',\n myPurchaseDetail = '/myPurchaseDetail',\n catalogUpdateDetail = '/catalogUpdateDetail',\n chart = '/chart',\n support = '/support',\n blacklistEdit = '/blacklistEdit',\n playlistLK = '/playlist-lk',\n playlistOKC = '/playlist-okc',\n spots = '/spots',\n playQueue = '/play-queue',\n onboarding = '/onboarding',\n app = '/app',\n // createSpot = '/spots/create',\n noMatch = '*',\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TPlayQueueState, TSong } from 'store/modules/playQueue/types'\n\nconst initialState: TPlayQueueState = {\n queue: [],\n playerId: null,\n isSocketConnected: false,\n}\n\nconst userEditSlice = createSlice({\n name: 'playQueue',\n initialState,\n reducers: {\n setQueue(state: TPlayQueueState, action: PayloadAction) {\n state.queue = action.payload\n },\n setPlayerId(state: TPlayQueueState, action: PayloadAction) {\n state.playerId = action.payload\n },\n setIsSocketConnected(state: TPlayQueueState, action: PayloadAction) {\n state.isSocketConnected = action.payload\n },\n },\n})\n\nexport const { setQueue, setPlayerId, setIsSocketConnected } = userEditSlice.actions\n\nexport default userEditSlice.reducer\n","import { TState } from 'store/store'\n\nexport const getProfile = (state: TState) => state.profile.data\nexport const getDefaultEntertainmentCenter = (state: TState) => state.profile.data?.company.defaultEntertainmentCenter\nexport const getIsAddressMatchedProfile = (state: TState) => state.profile.data?.company.isAddressMatched\nexport const getIsCalculationAgreed = (state: TState) => state.profile.data?.company.isCalculationAgreed\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TAppDocumentSate } from './types'\n\nconst initialState: TAppDocumentSate = {\n videoInstructionLink: null,\n}\n\nconst appDocumentsSlice = createSlice({\n name: 'appDocuments',\n initialState,\n reducers: {\n setVideoInstructionLink(state: TAppDocumentSate, action: PayloadAction) {\n state.videoInstructionLink = action.payload\n },\n },\n})\n\nexport const { setVideoInstructionLink } = appDocumentsSlice.actions\n\nexport default appDocumentsSlice.reducer\n","export const main_colors = {\n background: {\n primary: '#8441FF',\n secondary: '#FFFFFF',\n cards: '#F8F9FB',\n items: '#FAF9FF',\n activeItems: '#EBE7FB',\n },\n text: {\n primary: '#03000E',\n secondary: '#3E3E3F',\n tertiary: '#959598',\n violet: '#8441FF',\n gold: '#FFEC00',\n white: '#FFFFFF',\n red: 'red',\n blue: 'blue',\n green: '#27ae60',\n lightGreen: 'rgba(39, 174, 96, 0.1)',\n },\n button: {\n background: {\n enabled: '#8441FF',\n disabled: '#E0E0E0',\n },\n text: {\n enabled: '#F5F5F5',\n disabled: '#BDBDBD',\n },\n inverse: {\n background: {\n enabled: '#E0E0E0',\n },\n text: {\n enabled: '#8441FF',\n },\n },\n },\n border: {\n primary: '#e1e9f0',\n focus: '#8441FF',\n violet: '#6714FF',\n },\n auth: {\n text: {\n primary: '#FFFFFF',\n secondary: '#F5F5F5',\n },\n button: {\n background: '#FFFFFF',\n text: '#8441FF',\n },\n border: '#FFFFFF',\n },\n error: {\n text: 'red',\n },\n table: {\n item: {\n background: {\n default: '#ffffff',\n odd: '#FAF9FF',\n playing: '#EBE7FB',\n },\n },\n },\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TCatalog, TGenreItem, TMixedPlaylistPhonograms, TPhonogram, TPhonogramInBlacklist, TPlaylist } from './types'\nimport { LIMIT } from 'constants/limit'\n\nconst initialState: TCatalog = {\n playlistsOks: [],\n playlistsLk: [],\n genresList: [],\n phonogramsList: [],\n phonogramsListHasMore: true,\n phonogramsLoadOffset: LIMIT,\n listBlacklistPhonograms: [],\n addingPhonogramsIds: [],\n deletingPhonogramsIds: [],\n playlistID: null,\n playlistById: null,\n playlistPhonograms: [],\n tabIndex: 0,\n}\n\nconst catalogs = createSlice({\n name: 'catalog',\n initialState,\n reducers: {\n setPhonogramsList(state: TCatalog, action: PayloadAction>) {\n state.phonogramsList = action.payload\n },\n setGenreList(state: TCatalog, action: PayloadAction) {\n state.genresList = [{ id: undefined, name: 'Все жанры', nameTr: 'All genres' }, ...action.payload]\n },\n setPlaylistsOks(state: TCatalog, action: PayloadAction) {\n state.playlistsOks = action.payload\n },\n setPlaylistsLk(state: TCatalog, action: PayloadAction) {\n state.playlistsLk = action.payload\n },\n setPhonogramsListOnScroll(state: TCatalog, action: PayloadAction>) {\n state.phonogramsList = [...state.phonogramsList, ...action.payload]\n },\n setPhonogramsLoadOffset(state: TCatalog, action: PayloadAction) {\n state.phonogramsLoadOffset = action.payload\n },\n setPhonogramsListHasMore(state: TCatalog, action: PayloadAction) {\n state.phonogramsListHasMore = action.payload\n },\n setAddPhonogramInBlacklist(state: TCatalog, action: PayloadAction) {\n state.listBlacklistPhonograms.push(action.payload)\n },\n setRemovePhonogramFromBlacklist(state: TCatalog, action: PayloadAction) {\n state.listBlacklistPhonograms = state.listBlacklistPhonograms.filter((item) => item.id !== action.payload)\n },\n setAddingPhonogramIds(state: TCatalog, action: PayloadAction) {\n state.addingPhonogramsIds.push(action.payload)\n },\n setDeletingPhonogramIds(state: TCatalog, action: PayloadAction) {\n state.deletingPhonogramsIds.push(action.payload)\n },\n clearAddingDeletingPhonogramIds(state: TCatalog, action: PayloadAction<[]>) {\n state.addingPhonogramsIds = action.payload\n state.deletingPhonogramsIds = action.payload\n },\n setPhonogramsInBlacklistFromServer(state: TCatalog, action: PayloadAction>) {\n state.listBlacklistPhonograms = action.payload\n },\n setPlaylistID(state: TCatalog, action: PayloadAction) {\n state.playlistID = action.payload\n },\n setPlaylistById(state: TCatalog, action: PayloadAction) {\n state.playlistById = action.payload\n },\n setAddPhonogramsInPlaylistFromServer(state: TCatalog, action: PayloadAction>) {\n state.playlistPhonograms = action.payload\n },\n setAddPhonogramInPlaylist(state: TCatalog, action: PayloadAction) {\n state.playlistPhonograms.push(action.payload)\n },\n setRemovePhonogramFromPlaylist(state: TCatalog, action: PayloadAction) {\n state.playlistPhonograms = state.playlistPhonograms.filter((item) => item.id !== action.payload)\n },\n setTabIndex(state: TCatalog, action: PayloadAction) {\n state.tabIndex = action.payload\n },\n },\n})\n\nexport const {\n setPlaylistsOks,\n setPlaylistsLk,\n setGenreList,\n setPhonogramsList,\n setPhonogramsListOnScroll,\n setPhonogramsLoadOffset,\n setPhonogramsListHasMore,\n setRemovePhonogramFromBlacklist,\n setAddingPhonogramIds,\n setDeletingPhonogramIds,\n clearAddingDeletingPhonogramIds,\n setPhonogramsInBlacklistFromServer,\n setAddPhonogramInBlacklist,\n setPlaylistID,\n setPlaylistById,\n setAddPhonogramsInPlaylistFromServer,\n setAddPhonogramInPlaylist,\n setRemovePhonogramFromPlaylist,\n setTabIndex,\n} = catalogs.actions\n\nexport default catalogs.reducer\n","import { request } from 'api'\nimport { AppDispatch } from 'store/store'\nimport { setAddressMatch, setDefaultEntertainmentCenter, setProfile } from './reducer'\nimport { TUpdateUser } from 'store/modules/profile/types'\nimport { DaDataAddress, DaDataSuggestion } from 'react-dadata'\nimport { config } from 'config/config'\n\nexport const editProfile = (data: TUpdateUser, id: string, goBack: () => void) => {\n return (dispatch: AppDispatch) => {\n request\n .put(`/users/clients/${id}`, data)\n .then((r) => dispatch(setProfile(r.data.data)))\n .then(() => goBack())\n .catch(function (error) {\n console.log(error)\n })\n }\n}\n\nexport const saveAddressMatch = (isMatch: boolean) => {\n return async (dispatch: AppDispatch) => {\n try {\n const res = await request.put('/users/clients/address-match', { isAddressMatched: isMatch })\n if (res) {\n dispatch(setAddressMatch(isMatch))\n }\n } catch (e) {\n console.log(e)\n }\n }\n}\n\nexport const updateDefaultEntertainmentCenter = (\n id: string,\n addressData: DaDataSuggestion,\n onSuccess?: () => void,\n) => {\n return async (dispatch: AppDispatch) => {\n try {\n const res = await request.put(`/lk/entertainment-centers/${id}`, { addressDetails: addressData })\n const data = res.data.data\n dispatch(setDefaultEntertainmentCenter(data))\n onSuccess && onSuccess()\n } catch (error) {\n console.log(error)\n }\n }\n}\n\n// export const saveAddressMatch2 = createAsyncThunk(\n// 'users/saveAddressMatch',\n// async (isMatch: boolean, { getState, dispatch }) => {\n// try {\n// const res = await request.put('/users/clients/address-match', { isAddressMatched: isMatch })\n// if (res) {\n// dispatch(setAddressMatch(isMatch))\n// }\n// } catch (e) {\n// console.log(e)\n// }\n// },\n// )\n\nexport const changePassword = (password: string, id: string, fn: () => void) => {\n return async () => {\n try {\n await request.put(`/users/clients/${id}`, { password: password })\n fn()\n } catch (e) {\n console.log(e)\n }\n }\n}\n\nexport const getProfileFromServer = () => {\n return (dispatch: AppDispatch) => {\n request\n .get('/users/clients/me')\n .then(function (response) {\n const data = response.data.data\n dispatch(setProfile(data))\n })\n .catch(function (error) {\n console.log(error)\n })\n }\n}\n\nexport const uploadContractFileOnServer = (contractId: string, files: FileList) => {\n return async (dispatch: AppDispatch) => {\n const formData = new FormData()\n formData.append('file', files[0])\n try {\n await request.post(`/contracts/${contractId}/upload`, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n dispatch(getProfileFromServer() as any)\n } catch (error) {\n console.log(error)\n }\n }\n}\n\n// export const createContractOnServer = () => {\n// return async (dispatch: AppDispatch) => {\n// try {\n// await request.post(`/contracts`)\n// dispatch(getProfileFromServer())\n// } catch (error) {\n// console.log(error)\n// }\n// }\n// }\n\nexport const sendToUserPhoneConfirmCode = (callback?: () => void) => {\n return async () => {\n try {\n await request.post(`/users/clients/phone`)\n if (callback) callback()\n } catch (e) {\n console.log(e)\n }\n }\n}\n\nexport const confirmPhone = (code: string, callback?: () => void) => {\n return async (dispatch: AppDispatch) => {\n try {\n await request.post(`/users/clients/phone/verify`, { code })\n dispatch(getProfileFromServer() as any)\n } catch (e) {\n console.log(e)\n } finally {\n if (callback) callback()\n }\n }\n}\n\nexport const sendOnboardingProcessCompletedStatus = (callback: () => void) => {\n return async (dispatch: AppDispatch) => {\n try {\n await request.patch(`/users/clients/onboarding/complete`)\n const profileResponse = await request.get('/users/clients/me')\n const data = profileResponse.data.data\n dispatch(setProfile(data))\n callback()\n } catch (error) {\n console.log(error)\n }\n }\n}\n\nexport const getUserInstructionFromServer = () => {\n return async () => {\n try {\n const resPath = await request.get('/documentation/user-instruction')\n const link = document.createElement('a')\n link.href = config.storageBaseUrl + resPath.data.data.file.relativePath\n link.target = '_blank'\n link.setAttribute('download', '')\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n } catch (error) {\n console.log(error)\n }\n }\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TRoom, TRoomInList, TSpot, TSpotInList, TSpotsState, TTable, TTableInList } from 'store/modules/spots/types'\nimport { TDevice } from 'store/modules/devices/types'\n\nconst initialState: TSpotsState = {\n spot: null,\n room: null,\n table: null,\n tables: [],\n spots: [],\n rooms: [],\n spotId: null,\n roomId: null,\n tableId: null,\n showSpotBlock: false,\n showRoomBlock: false,\n showTableBlock: false,\n unBindDevices: [],\n}\n\nconst userSlice = createSlice({\n name: 'spots',\n initialState,\n reducers: {\n setSpot(state: TSpotsState, action: PayloadAction) {\n state.spot = action.payload\n },\n setRoom(state: TSpotsState, action: PayloadAction) {\n state.room = action.payload\n },\n setTable(state: TSpotsState, action: PayloadAction) {\n state.table = action.payload\n },\n setSpots(state: TSpotsState, action: PayloadAction) {\n state.spots = action.payload\n },\n setTables(state: TSpotsState, action: PayloadAction) {\n state.tables = action.payload\n },\n setRooms(state: TSpotsState, action: PayloadAction) {\n state.rooms = action.payload\n },\n setSpotId(state: TSpotsState, action: PayloadAction) {\n state.spotId = action.payload\n },\n setRoomId(state: TSpotsState, action: PayloadAction) {\n state.roomId = action.payload\n },\n setTableId(state: TSpotsState, action: PayloadAction) {\n state.tableId = action.payload\n },\n setShowSpotBlock(state: TSpotsState, action: PayloadAction) {\n state.showSpotBlock = action.payload\n },\n setShowRoomBlock(state: TSpotsState, action: PayloadAction) {\n state.showRoomBlock = action.payload\n },\n setShowTableBlock(state: TSpotsState, action: PayloadAction) {\n state.showTableBlock = action.payload\n },\n setUnbindDevices(state: TSpotsState, action: PayloadAction) {\n state.unBindDevices = action.payload\n },\n },\n})\n\nexport const {\n setSpot,\n setSpots,\n setRooms,\n setRoom,\n setSpotId,\n setRoomId,\n setTableId,\n setTable,\n setTables,\n setShowSpotBlock,\n setShowRoomBlock,\n setShowTableBlock,\n setUnbindDevices,\n} = userSlice.actions\n\nexport default userSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\n\ntype TState = {\n isMobile: boolean\n}\n\nconst initialState: TState = {\n isMobile: window.innerWidth <= 1024,\n}\n\nconst adaptiveSlice = createSlice({\n name: 'loader',\n initialState,\n reducers: {\n setIsMobile(state: TState, action: PayloadAction) {\n state.isMobile = action.payload\n },\n },\n})\n\nexport const { setIsMobile } = adaptiveSlice.actions\n\nexport default adaptiveSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TDevice, TDevicesState } from 'store/modules/devices/types'\n\nconst initialState: TDevicesState = {\n devices: [],\n device: null,\n isCreated: false,\n}\n\nconst userEditSlice = createSlice({\n name: 'devices',\n initialState,\n reducers: {\n setDevices(state: TDevicesState, action: PayloadAction) {\n state.devices = action.payload\n },\n setDevice(state: TDevicesState, action: PayloadAction) {\n state.device = action.payload\n },\n },\n})\n\nexport const { setDevices, setDevice } = userEditSlice.actions\n\nexport default userEditSlice.reducer\n","// количество загружаемых фонограм за один запрос\nexport const LIMIT = 50\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TPlayerUser, TUsersState } from 'store/modules/playerUsers/types'\n\nconst initialState: TUsersState = {\n user: null,\n users: [],\n}\n\nconst playerUserSlice = createSlice({\n name: 'users',\n initialState,\n reducers: {\n setUser(state: TUsersState, action: PayloadAction) {\n state.user = action.payload\n },\n setUsers(state: TUsersState, action: PayloadAction) {\n state.users = action.payload\n },\n },\n})\n\nexport const { setUser, setUsers } = playerUserSlice.actions\n\nexport default playerUserSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TTariff, TTariffsState } from './types'\n\nconst initialState: TTariffsState = {\n tariffsList: [],\n tariffById: null,\n}\n\nconst userSlice = createSlice({\n name: 'tariffs',\n initialState,\n reducers: {\n setTariffsList(state: TTariffsState, action: PayloadAction) {\n state.tariffsList = action.payload\n },\n setTariffById(state: TTariffsState, action: PayloadAction) {\n state.tariffById = action.payload\n },\n },\n})\n\nexport const { setTariffsList, setTariffById } = userSlice.actions\n\nexport default userSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TChart, TChartPhonogram, TChartsState } from './types'\n\nconst initialState: TChartsState = {\n chartsList: [],\n chartPhonogramsList: [],\n chartId: null,\n chartById: null,\n chartByIdIsDeleted: false,\n}\n\nconst userSlice = createSlice({\n name: 'charts',\n initialState,\n reducers: {\n setChartPhonogramsList(state: TChartsState, action: PayloadAction) {\n state.chartPhonogramsList = action.payload\n },\n setChartList(state: TChartsState, action: PayloadAction) {\n state.chartsList = action.payload\n },\n setChartId(state: TChartsState, action: PayloadAction) {\n state.chartId = action.payload\n },\n setChartById(state: TChartsState, action: PayloadAction) {\n state.chartById = action.payload\n },\n setChartByIdIsDeleted(state: TChartsState, action: PayloadAction) {\n state.chartByIdIsDeleted = action.payload\n },\n },\n})\n\nexport const {\n setChartPhonogramsList,\n setChartList,\n setChartId,\n setChartById,\n setChartByIdIsDeleted,\n} = userSlice.actions\n\nexport default userSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { Discount, TCalculateResult } from './types'\n\ntype TState = {\n discounts: Discount[]\n selectedDiscountId: string\n calculateResult: TCalculateResult | null\n}\n\nconst initialState: TState = {\n discounts: [],\n selectedDiscountId: '',\n calculateResult: null,\n}\n\nconst calculatorSlice = createSlice({\n name: 'calculator',\n initialState,\n reducers: {\n setDiscounts(state: TState, action: PayloadAction) {\n state.discounts = action.payload\n },\n setSelectedDiscountId(state: TState, action: PayloadAction) {\n state.selectedDiscountId = action.payload\n },\n setCalculateResult(state: TState, action: PayloadAction) {\n state.calculateResult = action.payload\n },\n },\n})\n\nexport const { setDiscounts, setSelectedDiscountId, setCalculateResult } = calculatorSlice.actions\n\nexport default calculatorSlice.reducer\n","import { TState } from 'store/store'\n\nexport const getPLayerId = (state: TState) => state.playQueue.playerId\nexport const getPlayQueue = (state: TState) => state.playQueue.queue\nexport const getIsSocketConnected = (state: TState) => state.playQueue.isSocketConnected\n","import { request } from 'api'\nimport { AppDispatch } from 'store/store'\nimport { myLicensesList, setLicenseById, setMyLicense, setPaymentURL } from './reducer'\nimport { requestUserPayment } from 'api/paymentTinkoff'\nimport axios from 'axios'\n\nexport const getMyLicenseFromServer = () => {\n return async (dispatch: AppDispatch) => {\n try {\n const response = await request.get(`/licenses/my`)\n dispatch(setMyLicense(response.data.data))\n } catch (error) {\n console.log(error)\n }\n }\n}\n\nexport const getMyLicensesListFromServer = (isActual: boolean) => {\n return async (dispatch: AppDispatch) => {\n try {\n const response = await request.get(`/licenses`, {\n params: {\n isActual,\n },\n })\n dispatch(myLicensesList(response.data.data))\n } catch (error) {\n console.log(error)\n }\n }\n}\n\nexport const getLicenseByIdFromServer = (id: string) => {\n return async (dispatch: AppDispatch) => {\n try {\n const response = await request.get(`/licenses/${id}`)\n dispatch(setLicenseById(response.data.data))\n } catch (error) {\n console.log(error)\n }\n }\n}\n\n//cost передавать в копейках!!!!!!!!\nexport const buyLicense = (tariffId: string, duration: number, cost: number, email: string, tariffName: string) => {\n return async (dispatch: AppDispatch) => {\n try {\n const response = await request.post(`/orders/tariff`, { tariffId, duration, cost })\n const tinkoffResponse = await axios.post('https://securepay.tinkoff.ru/v2/Init', {\n ...requestUserPayment(response.data.data.id, cost, email, tariffName),\n })\n dispatch(setPaymentURL(tinkoffResponse.data.PaymentURL))\n dispatch(setMyLicense(null))\n } catch (error) {\n console.log(error)\n }\n }\n}\n\n//cost передавать в копейках!!!!!!!!\nexport const buyLicenseByInvoicing = (\n tariffId: string,\n duration: number,\n cost: number,\n discountId: string | undefined,\n showPopUp: () => void,\n) => {\n return async (dispatch: AppDispatch) => {\n try {\n await request.post(`/orders/invoice`, { tariffId, duration, cost, discountId })\n dispatch(setMyLicense(null))\n showPopUp()\n } catch (error) {\n console.log(error)\n }\n }\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TFaqItem, TSupportState, TSupportSubject } from 'store/modules/support/types'\n\nconst initialState: TSupportState = {\n supportSubjectsList: [],\n faqList: [],\n}\n\nconst userSlice = createSlice({\n name: 'support',\n initialState,\n reducers: {\n setSupportSubjectsList(state: TSupportState, action: PayloadAction) {\n state.supportSubjectsList = action.payload\n },\n setFaqList(state: TSupportState, action: PayloadAction) {\n state.faqList = action.payload\n },\n },\n})\n\nexport const { setSupportSubjectsList, setFaqList } = userSlice.actions\n\nexport default userSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TPhonogramForStatisticsPage, TStatisticsState } from './types'\nimport { TRoomInList } from 'store/modules/spots/types'\n\nconst initialState: TStatisticsState = {\n statisticsPhonogramList: [],\n spotsRooms: [],\n}\n\nconst userSlice = createSlice({\n name: 'statistics',\n initialState,\n reducers: {\n setStatisticsPhonogramList(state: TStatisticsState, action: PayloadAction) {\n state.statisticsPhonogramList = action.payload\n },\n setSpotsRooms(state: TStatisticsState, action: PayloadAction) {\n state.spotsRooms = action.payload\n },\n },\n})\n\nexport const { setStatisticsPhonogramList, setSpotsRooms } = userSlice.actions\n\nexport default userSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TInvoicesState, TLastInvoice } from './types'\n\nconst initialState: TInvoicesState = {\n lastInvoice: null,\n isNextDayWork: true,\n}\n\nconst invoicesSlice = createSlice({\n name: 'invoices',\n initialState,\n reducers: {\n setLastInvoice(state: TInvoicesState, action: PayloadAction) {\n state.lastInvoice = action.payload\n },\n setIsNextDayWork(state: TInvoicesState, action: PayloadAction) {\n state.isNextDayWork = action.payload\n },\n },\n})\n\nexport const { setLastInvoice, setIsNextDayWork } = invoicesSlice.actions\n\nexport default invoicesSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { TimeZone } from './types'\n\ntype TState = {\n timzones: TimeZone[]\n}\n\nconst initialState: TState = {\n timzones: [],\n}\n\nconst timzoneSlice = createSlice({\n name: 'loader',\n initialState,\n reducers: {\n setTimeZones(state: TState, action: PayloadAction) {\n state.timzones = action.payload\n },\n },\n})\n\nexport const { setTimeZones } = timzoneSlice.actions\n\nexport default timzoneSlice.reducer\n","import { TState } from 'store/store'\n\nexport const getIsLoading = (state: TState) => state.loader.isLoading\n"],"sourceRoot":""}