main.b34fa139.chunk.js.map 55 KB

1
  1. {"version":3,"sources":["components/reusableComponents/Routes/PrivateRoute/index.tsx","components/reusableComponents/Routes/PublicRoute/index.tsx","redux/loading/selector/index.ts","components/reusableComponents/Loader/Loader.jsx","App.tsx","redux/messages/reducer/index.ts","redux/allMessages/reducer/index.ts","redux/contacts/reducer/index.ts","redux/chat/reducer/index.ts","redux/chats/reducer/index.ts","redux/control/reducer/index.ts","redux/loading/action/index.ts","redux/loading/reducer/index.ts","redux/authorization/reducer/index.ts","redux/rootReducer/index.ts","redux/store/index.ts","index.tsx","redux/authorization/action/index.ts","api-data/index.ts","redux/authorization/selector/index.ts","redux/control/action/index.ts","redux/chat/action/index.ts","redux/authorization/operations/index.ts","redux/messages/action/index.ts","redux/allMessages/action/index.ts","redux/contacts/action/index.ts","redux/chats/action/index.ts","components/reusableComponents/Loader/Loader.module.css","helpers/index.ts","redux/chat/selector/index.ts","App.module.css"],"names":["PrivateRoute","children","routeProps","token","useSelector","getToken","to","PublicRoute","restricted","shouldRedirect","getLoad","state","isLoading","CLoad","className","s","loader","type","color","height","width","timeout","Load","HomePage","lazy","AuthPage","App","companionId","getChat","dispatch","useDispatch","handleTypingClose","a","typingChat","useEffect","localStorage","isChecked","setToken","set","asyncCurrentUser","handleKeepIn","asyncLogout","onlineUser","window","addEventListener","removeEventListener","handleTypingChat","onMouseLeave","appWrapper","utils","DateFnsUtils","fallback","exact","path","position","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","reducerMessages","createReducer","total","limit","page","messages","actionGetMessagesSuccess","_","payload","actionGetMessagesReject","reducerAllMessages","actionGetAllMessagesSuccess","actionGetAllMessagesReject","reducerContacts","contacts","actionGetContactsSuccess","_state","actionGetContactsReject","initialState","name","lastName","originalName","originalLastName","avatarUrl","avatarsArr","online","lastMessage","lastMessageCreatedAt","mute","sort","seen","watched","typing","number","_id","owner","createdAt","updatedAt","__v","reducerChat","actionSelectChat","actionGetChatById","actionRemoveChat","reducerChats","chats","actionGetChatsSuccess","actionGetChatsReject","reducerControl","leftIsOpen","rightIsOpen","scrollChat","actionLeftIsOpen","actionRightIsOpen","actionScrollChat","scroll","actionIsLoading","createAction","value","reducerLoading","code","country","nightMode","reducerAuthorization","actionLogInSuccess","actionLogInReject","actionLogOutSuccess","actionLogOutReject","actionCurrentSuccess","actionCurrentReject","authorizationPersistConfig","key","storage","rootReducer","combineReducers","allMessages","chat","control","authorization","persistReducer","composeEnhancers","composeWithDevTools","store","createStore","applyMiddleware","thunk","persistor","persistStore","queryClient","QueryClient","ReactDOM","render","StrictMode","loading","QueryClientProvider","client","document","getElementById","axios","require","defaults","baseURL","prodBaseURL","headers","common","Authorization","unset","forbidden","message","slice","removeItem","location","reload","authorizeUser","post","data","toast","success","progress","undefined","loginUser","patch","logoutUser","updateCredentials","body","updateUser","removeUserAvatar","index","delete","updateUserAvatar","formData","currentUser","get","addContact","removeContact","id","updateContact","getContacts","getChatById","_doc","startChat","removeChatForBoth","muteChat","sortChat","seenChat","getChats","removeMessageById","sentMessageById","sentImgMessageById","sentAudioMessageById","sentVideoMessageById","sentFileMessageById","getMessagesById","getAllMessages","getNumber","getState","asyncCreateUser","file","FormData","append","Promise","all","find","el","asyncLogin","cb","registered","Error","module","exports","format","split","join","trim","firstLetter","word","toUpperCase","slicedWord","max","from","length","timeStampEU","Date","toLocaleString","year","month","day","hour","minute","timeStampEUFilter","second","timeStampMessage","timeStampFilter","playNotification","url","Audio","play","notification","onClick","copied","text","playNotificationWithoutPermission","w","audioContext","AudioContext","webkitAudioContext","navigator","mediaDevices","getUserMedia","audio","then","source","createBufferSource","stop","close","request","XMLHttpRequest","open","responseType","onload","decodeAudioData","response","buffer","connect","destination","start","e","console","log","send","catch","reason","error","handleDownload","FileSaver","saveAs","handleSort","sortBy","b","sortByRecent","aCreatedAt","bCreatedAt","aTime","bTime","filteredMessages","arr","date","filter","fullType","toLowerCase","includes","refreshAppTime","getChatMemo","createSelector"],"mappings":"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","file":"static/js/main.b34fa139.chunk.js","sourcesContent":["import { Route, Redirect } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { IPrivateProps} from '../../../../typescript/components/Routes/interfaces';\nimport { getToken } from '../../../../redux/authorization/selector'\n\nfunction PrivateRoute({ children, ...routeProps }: IPrivateProps) {\n const token = useSelector(getToken)\n return (\n <Route {...routeProps}>\n {token ? children : <Redirect to=\"/w/\" />}\n </Route>\n );\n}\n\n\n\nexport default PrivateRoute\n","import { Route, Redirect } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nimport { IPublicProps } from '../../../../typescript/components/Routes/interfaces';\nimport { getToken } from '../../../../redux/authorization/selector'\n\nfunction PublicRoute({\n children,\n restricted = false,\n ...routeProps\n}: IPublicProps) {\n const token = useSelector(getToken)\n const shouldRedirect = token && restricted;\n\n return (\n <Route {...routeProps}>\n {shouldRedirect ? <Redirect to=\"/\" /> : children}\n </Route>\n );\n}\n\n\nexport default PublicRoute;\n","import { IState } from '../../../typescript/redux/interfaces'\nconst getLoad = (state:IState) => state.isLoading;\n\nexport { getLoad };\n","import 'react-loader-spinner/dist/loader/css/react-spinner-loader.css';\nimport Loader from 'react-loader-spinner';\nimport { useSelector } from 'react-redux';\n\nimport {getLoad} from '../../../redux/loading/selector'\nimport s from './Loader.module.css';\n\nconst CLoad = () => {\n const isLoading = useSelector(getLoad)\n return isLoading?(\n <Loader\n className={s.loader}\n type=\"Puff\"\n color=\"#0ca0f5\"\n height={100}\n width={100}\n timeout={300000}\n />\n ):null\n};\n\nconst Load = () => {\n return (\n <Loader\n className={s.loader}\n type=\"Puff\"\n color=\"#0ca0f5\"\n height={100}\n width={100}\n timeout={300000}\n />\n )\n};\n\nexport {CLoad,Load};\n\n\n\n","import { lazy, Suspense , useEffect } from 'react';\nimport { BrowserRouter, Switch } from 'react-router-dom';\nimport { ToastContainer } from 'react-toastify';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport DateFnsUtils from '@date-io/date-fns';\n\nimport s from './App.module.css';\nimport { getToken } from './redux/authorization/selector'\nimport { getChat } from './redux/chat/selector'\nimport { asyncLogout, asyncCurrentUser } from './redux/authorization/operations'\nimport { setToken, onlineUser,typingChat } from './api-data'\nimport PrivateRoute from './components/reusableComponents/Routes/PrivateRoute';\nimport PublicRoute from './components/reusableComponents/Routes/PublicRoute';\nimport { Load,CLoad } from './components/reusableComponents/Loader/Loader';\n\nconst HomePage = lazy(\n () =>\n import(\n './components/HomePage' /* webpackChunkName: \"HomePage\" */\n ),\n);\n\nconst AuthPage = lazy(\n () =>\n import(\n './components/AuthPage' /* webpackChunkName: \"AuthPage\" */\n ),\n);\n\nfunction App() {\n const token = useSelector(getToken)\n const { companionId } = useSelector(getChat)\n const dispatch = useDispatch()\n const handleTypingClose = async () => companionId&& await typingChat(companionId, false)\n \n useEffect(() => {\n if (token && localStorage.isChecked === 'true') {\n setToken.set(token)\n dispatch(asyncCurrentUser())\n }\n }, [dispatch, token])\n\n useEffect(() => {\n const handleKeepIn = async () => {\n const isChecked = localStorage.isChecked\n if (isChecked&&isChecked === 'false') {\n dispatch(asyncLogout())\n } else if (isChecked&&isChecked === 'true') {\n await onlineUser()\n }\n }\n window.addEventListener(\"beforeunload\",handleKeepIn)\n return () => window.removeEventListener(\"beforeunload\", handleKeepIn)\n\n }, [dispatch])\n\n useEffect(() => {\n const handleTypingChat = async () => await typingChat(companionId,false)\n window.addEventListener(\"beforeunload\",handleTypingChat)\n return () => window.removeEventListener(\"beforeunload\", handleTypingChat)\n\n }, [companionId])\n\n return (\n <div onMouseLeave={handleTypingClose} className={s.appWrapper}>\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\n <Suspense fallback={<Load/>}>\n <BrowserRouter>\n <Switch>\n <PrivateRoute exact path=\"/\">\n <HomePage/>\n </PrivateRoute>\n <PublicRoute path={'/w/'} restricted>\n <AuthPage />\n </PublicRoute>\n </Switch>\n </BrowserRouter>\n <CLoad/>\n </Suspense>\n <ToastContainer\n position=\"top-right\"\n autoClose={5000}\n hideProgressBar={false}\n newestOnTop={false}\n closeOnClick\n rtl={false}\n pauseOnFocusLoss\n draggable\n pauseOnHover\n /> \n </MuiPickersUtilsProvider>\n </div>\n)}\n\n\nexport default App;\n","import { createReducer } from '@reduxjs/toolkit';\r\nimport { IMessagesState, IMessagesPayload} from '../../../typescript/redux/messages/interfaces';\r\nimport {\r\n actionGetMessagesSuccess,\r\n actionGetMessagesReject\r\n} from '../action';\r\n\r\nconst initialState: IMessagesState = {\r\n total: \"0\",\r\n limit: \"0\",\r\n page: \"0\",\r\n messages: [],\r\n}\r\n\r\nconst reducerMessages = createReducer(initialState, {\r\n [actionGetMessagesSuccess.type]: (_, { payload }: IMessagesPayload) => {\r\n return payload;\r\n },\r\n [actionGetMessagesReject.type]: (state, _) => {\r\n return state;\r\n },\r\n});\r\n\r\nexport default reducerMessages;\r\n","import { createReducer } from '@reduxjs/toolkit';\r\nimport { IAllMessagesState, IAllMessagesPayload} from '../../../typescript/redux/allMessages/interfaces';\r\nimport {\r\n actionGetAllMessagesSuccess,\r\n actionGetAllMessagesReject,\r\n} from '../action';\r\n\r\nconst initialState: IAllMessagesState = {\r\n total: \"0\",\r\n limit: \"0\",\r\n page: \"0\",\r\n messages: [],\r\n}\r\n\r\nconst reducerAllMessages = createReducer(initialState, {\r\n [actionGetAllMessagesSuccess.type]: (_, { payload }: IAllMessagesPayload) => {\r\n return payload;\r\n },\r\n [actionGetAllMessagesReject.type]: (state, _) => {\r\n return state;\r\n },\r\n});\r\n\r\nexport default reducerAllMessages;\r\n","import { createReducer } from '@reduxjs/toolkit';\r\nimport { IContactsState,IContactsPayload} from '../../../typescript/redux/contacts/interfaces';\r\nimport {\r\n actionGetContactsSuccess,\r\n actionGetContactsReject\r\n} from '../action';\r\n\r\nconst initialState:IContactsState = {\r\n total: \"0\",\r\n limit: \"0\",\r\n page: \"0\",\r\n contacts: []\r\n}\r\n\r\nconst reducerContacts = createReducer(initialState, {\r\n [actionGetContactsSuccess.type]: (_state,{ payload}:IContactsPayload) => {\r\n return payload;\r\n },\r\n [actionGetContactsReject.type]: (state, _) => {\r\n return state;\r\n },\r\n});\r\n\r\nexport default reducerContacts;\r\n","import { createReducer } from '@reduxjs/toolkit';\r\nimport { IChatPayload } from '../../../typescript/redux/chat/interfaces';\r\nimport { TChat} from '../../../typescript/redux/chat/types';\r\n\r\nimport {\r\n actionSelectChat,\r\n actionGetChatById,\r\n actionRemoveChat\r\n} from '../action';\r\n\r\nconst initialState: TChat = {\r\n name: '',\r\n lastName: '',\r\n originalName: '',\r\n originalLastName: '',\r\n avatarUrl: '',\r\n avatarsArr: [],\r\n color: '',\r\n online: '',\r\n lastMessage: '',\r\n lastMessageCreatedAt:'',\r\n mute: false,\r\n sort:false,\r\n seen: 0,\r\n total: 0,\r\n watched: false,\r\n typing: false,\r\n number:'',\r\n _id: '',\r\n companionId: '',\r\n owner: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n __v: 0,\r\n}\r\n\r\nconst reducerChat = createReducer(initialState, {\r\n [actionSelectChat.type]: (_,{ payload }:IChatPayload) => {\r\n return payload\r\n },\r\n [actionGetChatById.type]: (_,{ payload }:IChatPayload) => {\r\n return payload\r\n },\r\n [actionRemoveChat.type]: (_state,_) => {\r\n return initialState\r\n }, \r\n});\r\n\r\nexport default reducerChat;\r\n","import { createReducer } from '@reduxjs/toolkit';\r\nimport { IChatsState, IChatsPayload } from '../../../typescript/redux/chats/interfaces';\r\n\r\nimport {\r\n actionGetChatsSuccess,\r\n actionGetChatsReject,\r\n} from '../action';\r\n\r\nconst initialState: IChatsState = {\r\n total: \"0\",\r\n limit: \"0\",\r\n page: \"0\",\r\n chats: [],\r\n}\r\n\r\n\r\n\r\nconst reducerChats = createReducer(initialState, {\r\n [actionGetChatsSuccess.type]: (_,{ payload }:IChatsPayload) => {\r\n return payload\r\n },\r\n [actionGetChatsReject.type]: (state, _) => {\r\n return state;\r\n },\r\n});\r\n\r\nexport default reducerChats;\r\n","import { createReducer } from '@reduxjs/toolkit';\nimport { actionLeftIsOpen,actionRightIsOpen,actionScrollChat } from '../action';\nimport { IControlState,IPayloadLeftIsOpen,IPayloadRightIsOpen,IPayloadScrollChat } from '../../../typescript/redux/control/interfaces'\n\nconst initialState: IControlState = {\n leftIsOpen: '',\n rightIsOpen: '',\n scrollChat: false,\n}\n\nconst reducerControl = createReducer(initialState, {\n [actionLeftIsOpen.type]: (state, { payload:leftIsOpen }:IPayloadLeftIsOpen) => {\n return {...state,leftIsOpen}\n }, \n [actionRightIsOpen.type]: (state, { payload:rightIsOpen }:IPayloadRightIsOpen) => {\n return {...state,rightIsOpen}\n },\n [actionScrollChat.type]: (state, { payload:scroll }:IPayloadScrollChat) => {\n return {...state,scroll}\n }, \n});\n\nexport default reducerControl;\n","import { createAction } from '@reduxjs/toolkit';\n\nconst actionIsLoading = createAction('fetch/loading', (value:boolean) => ({\n payload: value,\n}));\n\nexport { actionIsLoading };\n","import { createReducer } from '@reduxjs/toolkit';\nimport { actionIsLoading } from '../action';\n\nconst reducerLoading = createReducer(false, {\n [actionIsLoading.type]: (_, { payload }: {payload : boolean}) => payload,\n});\n\nexport default reducerLoading;\n","import { createReducer } from '@reduxjs/toolkit';\r\nimport { IAuthorizationState , IAuthorizationPayload} from '../../../typescript/redux/authorization/interfaces';\r\nimport {\r\n actionLogInSuccess,\r\n actionLogInReject,\r\n actionLogOutSuccess,\r\n actionLogOutReject,\r\n actionCurrentSuccess,\r\n actionCurrentReject\r\n} from '../action';\r\n\r\nconst initialState:IAuthorizationState = {\r\n name: \"\",\r\n lastName: \"\",\r\n originalName: \"\",\r\n originalLastName: \"\",\r\n avatarUrl: \"\",\r\n avatarsArr: [],\r\n color: \"\",\r\n code: \"\",\r\n _id: \"\",\r\n token: \"\",\r\n online: \"\",\r\n number: \"\" ,\r\n country: \"\",\r\n sort: false,\r\n nightMode: false,\r\n createdAt: \"\",\r\n updatedAt: \"\",\r\n __v: 0,\r\n}\r\n\r\nconst reducerAuthorization = createReducer(initialState, {\r\n [actionLogInSuccess.type]: (state, { payload:token }: { payload: string }) => {\r\n return {...state,token};\r\n },\r\n [actionLogInReject.type]: (state, _) => {\r\n return state;\r\n },\r\n [actionLogOutSuccess.type]: (_state, _) => {\r\n return initialState;\r\n },\r\n [actionLogOutReject.type]: (state, _) => {\r\n return state;\r\n },\r\n [actionCurrentSuccess.type]: (_state, { payload }:IAuthorizationPayload) => {\r\n return payload\r\n },\r\n [actionCurrentReject.type]: (_state, _) => {\r\n return initialState;\r\n },\r\n});\r\n\r\nexport default reducerAuthorization;\r\n","import { combineReducers } from '@reduxjs/toolkit';\r\nimport { persistReducer } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage';\r\n\r\nimport reducerMessages from '../messages/reducer'\r\nimport reducerAllMessages from '../allMessages/reducer'\r\nimport reducerContacts from '../contacts/reducer'\r\nimport reducerChat from '../chat/reducer'\r\nimport reducerChats from '../chats/reducer'\r\nimport reducerControl from '../control/reducer'\r\nimport reducerLoading from '../loading/reducer';\r\nimport reducerAuthorization from '../authorization/reducer';\r\n\r\nconst authorizationPersistConfig = {\r\n key: 'auth',\r\n storage: storage,\r\n};\r\n\r\nexport const rootReducer = combineReducers({\r\n isLoading: reducerLoading,\r\n messages: reducerMessages,\r\n allMessages: reducerAllMessages,\r\n chat:reducerChat,\r\n chats: reducerChats,\r\n contacts:reducerContacts,\r\n control: reducerControl,\r\n authorization: persistReducer(\r\n authorizationPersistConfig,\r\n reducerAuthorization,\r\n ),\r\n});\r\n","import { createStore, applyMiddleware } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { persistStore } from 'redux-persist';\r\nimport { composeWithDevTools } from 'redux-devtools-extension';\r\n\r\nimport { rootReducer } from '../rootReducer';\r\n\r\nconst composeEnhancers = composeWithDevTools({});\r\nconst store = createStore(\r\n rootReducer,\r\n composeEnhancers(applyMiddleware(thunk)),\r\n);\r\nconst persistor = persistStore(store);\r\nexport { store, persistor };\r\n","import React from 'react';\nimport { Provider } from 'react-redux';\nimport { PersistGate } from 'redux-persist/integration/react';\nimport ReactDOM from 'react-dom';\nimport 'video-react/dist/video-react.css';\nimport 'react-toastify/dist/ReactToastify.css';\nimport 'modern-normalize/modern-normalize.css';\nimport \"react-responsive-carousel/lib/styles/carousel.min.css\"\nimport './index.css';\nimport App from './App';\nimport { Load } from './components/reusableComponents/Loader/Loader'\nimport { store, persistor } from './redux/store';\nimport { QueryClient, QueryClientProvider } from 'react-query';\n\nconst queryClient = new QueryClient();\n\n\nReactDOM.render(\n <React.StrictMode>\n <PersistGate loading={<Load/>} persistor={persistor}>\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <App />\n </QueryClientProvider>\n </Provider>\n </PersistGate>\n </React.StrictMode>,\n document.getElementById('root'),\n);\n","import { createAction } from '@reduxjs/toolkit';\r\nimport {IAuthorizationState} from '../../../typescript/redux/authorization/interfaces'\r\n\r\nconst actionLogInSuccess = createAction('login/success', (value:string) => ({\r\n payload: value,\r\n}));\r\n\r\nconst actionLogInReject = createAction('login/reject', () => ({\r\n payload: null,\r\n}));\r\n\r\nconst actionLogOutSuccess = createAction('logout/success', () => ({\r\n payload: null,\r\n}));\r\n\r\nconst actionLogOutReject = createAction('logout/reject', () => ({\r\n payload: null,\r\n}));\r\n\r\nconst actionCurrentSuccess = createAction('current/success', (value:IAuthorizationState) => ({\r\n payload: value,\r\n}));\r\n\r\nconst actionCurrentReject = createAction('current/reject', () => ({\r\n payload: null,\r\n}));\r\n\r\nexport {\r\n actionLogInSuccess,\r\n actionLogInReject,\r\n actionLogOutSuccess,\r\n actionLogOutReject,\r\n actionCurrentSuccess,\r\n actionCurrentReject\r\n};\r\n","import { toast } from 'react-toastify';\nimport { prodBaseURL } from '../helpers';\nconst axios = require('axios');\naxios.defaults.baseURL = `${prodBaseURL}/api`;\n\nconst error = (message:string) =>\n toast.error(`🔥 ${message}!`, {\n position: 'bottom-left',\n autoClose: 3000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n });\n\nconst success = (message:string) =>\n toast.success(`⚡ ${message}`, {\n position: 'bottom-left',\n autoClose: 3000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n });\n\nconst setToken = {\n set(token:string) {\n axios.defaults.headers.common.Authorization = `Bearer ${token}`;\n },\n unset() {\n axios.defaults.headers.common.Authorization = '';\n },\n};\n\nconst forbidden = ({ message }: any) => {\n if (message.slice(-3) === '403') {\n localStorage.removeItem('persist:auth')\n window.location.reload(true);\n }\n}\n\nconst authorizeUser = async (number:string,country:string):Promise<string | undefined> => {\n try {\n const { data : {data} } = await axios.post('/auth/register', { number,country });\n success(`code ${data}`);\n return data\n } catch (e) {\n return undefined\n }\n};\n\nconst loginUser = async <T>(number:string,code:string):Promise<T | undefined> => {\n try {\n const { data : {data} } = await axios.patch('/auth/login', { number,code });\n return data\n } catch (e) {\n return undefined\n }\n};\n\nconst logoutUser = async <T>():Promise<T | undefined> => {\n try {\n const { data } = await axios.patch('/auth/logout');\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst onlineUser = async <T>():Promise<T | undefined> => {\n try {\n const { data } = await axios.patch('/auth/online');\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst updateCredentials = async <T>(body:object):Promise<T | undefined> => {\n try {\n const { data : {data} } = await axios.patch('/users/current/credentials', body);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst updateUser = async <T>(body:object):Promise<T | undefined> => {\n try {\n const { data : {data} } = await axios.patch('/users/current/update', body);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst removeUserAvatar = async <T>(index:number):Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.delete(`/users/current/${index}`);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst updateUserAvatar = async <T>(formData: object): Promise<T | undefined> => {\n try {\n const { data : {data} } = await axios.patch('/users/avatars', formData);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n } \n};\n\nconst currentUser = async <T>(): Promise<T | undefined> => {\n try {\n const { data : {data} } = await axios.get('/users/current');\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n } \n};\n\nconst addContact = async <T>(number:string): Promise<T | undefined> => {\n try {\n const { data : {data} } = await axios.post('/contacts', { number });\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst removeContact = async <T>(id:string): Promise<T | undefined> => {\n try {\n const { data : {data} } = await axios.delete(`/contacts/${id}`);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst updateContact = async <T>(id:string,_id:string,name:string,lastName:string,companionId:string): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.patch('/contacts', { id, _id, name, lastName,companionId });\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst getContacts = async <T>(): Promise<T | undefined> => {\n try {\n const { data : {data} } = await axios.get('/contacts');\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst getChatById = async <T>(id:string): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.get(`/chats/${id}`);\n return data._doc\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst startChat = async <T>(id:string): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.post('/chats', { id });\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst removeChatForBoth = async <T>(id:string): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.delete(`/chats/both/${id}`);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst muteChat = async <T>(id:string): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.patch('/chats/mute', {id});\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst sortChat = async <T>(id:string): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.patch('/chats/sort', {id});\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst seenChat = async <T>(id:string): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.patch('/chats/seen', { id });\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst typingChat = async <T>(id:string,typing:boolean): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.patch('/chats/typing', { id,typing});\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst getChats = async <T>(): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.get('/chats');\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst removeMessageById = async <T>(id:string): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.delete(`/messages/${id}`);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst sentMessageById = async <T>(id:string,message:any): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.post('/messages', { id, message });\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst sentImgMessageById = async <T>(id:string,formData: object): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.post(`/messages/image/${id}`, formData);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst sentAudioMessageById = async <T>(id:string,formData: object): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.post(`/messages/audio/${id}`, formData);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst sentVideoMessageById = async <T>(id:string,formData: object): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.post(`/messages/video/${id}`, formData);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst sentFileMessageById = async <T>(id:string,formData: object): Promise<T | undefined> => {\n try {\n const { data: { data } } = await axios.post(`/messages/file/${id}`, formData);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst getMessagesById = async <T>(id:string): Promise<T | undefined> => {\n try {\n const { data : {data} } = await axios.get(`/messages/${id}`);\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nconst getAllMessages = async <T>(): Promise<T | undefined> => {\n try {\n const { data : {data} } = await axios.get('/messages');\n return data\n } catch (e) {\n forbidden(e)\n return undefined\n }\n};\n\nexport {\n setToken,\n error,\n success,\n authorizeUser,\n loginUser,\n logoutUser,\n onlineUser,\n updateCredentials,\n updateUser,\n removeUserAvatar,\n updateUserAvatar,\n currentUser,\n addContact,\n removeContact,\n updateContact,\n getContacts,\n startChat,\n removeChatForBoth,\n getChatById,\n muteChat,\n sortChat,\n seenChat,\n typingChat,\n getChats,\n removeMessageById,\n sentMessageById,\n sentImgMessageById,\n sentAudioMessageById,\n sentVideoMessageById,\n sentFileMessageById,\n getMessagesById,\n getAllMessages\n};\n","import {IState} from '../../../typescript/redux/interfaces'\r\n\r\nconst getToken = (state: IState) => state.authorization.token;\r\nconst getNumber = (state:IState) => state.authorization.number;\r\nconst getName = (state: IState) => state.authorization.name;\r\nconst getLastName = (state: IState) => state.authorization.lastName;\r\nconst getCountry = (state: IState) => state.authorization.country;\r\nconst getAvatarUrl = (state: IState) => state.authorization.avatarUrl;\r\nconst getId = (state: IState) => state.authorization._id;\r\nconst getSort= (state:IState) => state.authorization.sort;\r\nconst getState= (state:IState) => state.authorization;\r\n\r\nexport { getToken,getNumber,getName,getLastName,getCountry,getAvatarUrl,getId,getSort,getState };\r\n","import { createAction } from '@reduxjs/toolkit';\nimport { TLeftIsOpen,TRightIsOpen,TScrollChat } from '../../../typescript/redux/control/types'\n\nconst actionLeftIsOpen= createAction('control/LeftIsOpen', (value:TLeftIsOpen) => ({\n payload: value,\n}));\n\nconst actionRightIsOpen= createAction('control/RightIsOpen', (value:TRightIsOpen) => ({\n payload: value,\n}));\n\nconst actionScrollChat = createAction('control/scrollChat', (value:TScrollChat) => ({\n payload: value,\n}));\n\n\nexport { actionLeftIsOpen,actionRightIsOpen,actionScrollChat };\n","import { createAction } from '@reduxjs/toolkit';\r\nimport { TChat } from '../../../typescript/redux/chat/types'\r\n\r\nconst actionSelectChat = createAction('selectChat/success', (value:TChat) => ({\r\n payload: value,\r\n}));\r\nconst actionGetChatById = createAction('getChatById/success', (value:TChat) => ({\r\n payload: value,\r\n}));\r\n\r\nconst actionRemoveChat = createAction('deleteChat/success', () => ({\r\n payload:{}\r\n}));\r\n\r\n\r\nexport {\r\n actionSelectChat,\r\n actionGetChatById,\r\n actionRemoveChat\r\n};\r\n","import {\r\n actionLogInSuccess,\r\n actionLogInReject,\r\n actionLogOutSuccess,\r\n actionLogOutReject,\r\n actionCurrentSuccess,\r\n actionCurrentReject\r\n} from '../action';\r\nimport { setToken, loginUser, logoutUser, updateCredentials, updateUserAvatar, currentUser } from '../../../api-data';\r\nimport { IAuthorizationState } from '../../../typescript/redux/authorization/interfaces'\r\nimport { TResPromiseAll } from '../../../typescript/redux/authorization/types'\r\n\r\nconst asyncCreateUser = (name:string, lastName: string,file:object) => async (dispatch:any) => {\r\n try {\r\n const formData: any = new FormData()\r\n formData.append(\"avatar\", file);\r\n const data = await Promise.all<TResPromiseAll>(\r\n [updateUserAvatar(formData), updateCredentials({ name, lastName, originalName:name, originalLastName:lastName})])\r\n const token = data.find(el => el?.token)?.token\r\n token&&dispatch(actionLogInSuccess(token))\r\n } catch (e) {\r\n dispatch(actionLogInReject())\r\n } \r\n};\r\n\r\nconst asyncLogin = (number:string, code: string,cb:() => void ) => async (dispatch:any) => {\r\n try {\r\n const data = await loginUser<{ token: string, registered: boolean }>(number, code);\r\n const token = data?.token\r\n const registered = data?.registered\r\n if (!token) return\r\n setToken.set(token)\r\n if (!registered) return cb()\r\n dispatch(actionLogInSuccess(token))\r\n } catch (e) {\r\n dispatch(actionLogInReject());\r\n cb()\r\n } \r\n};\r\n\r\nconst asyncLogout = () => async (dispatch:any) => {\r\n try {\r\n await logoutUser<object>();\r\n dispatch(actionLogOutSuccess());\r\n setToken.unset()\r\n } catch (e) {\r\n dispatch(actionLogOutReject());\r\n } \r\n};\r\n\r\nconst asyncCurrentUser = () => async (dispatch:any) => {\r\n try {\r\n const data = await currentUser<IAuthorizationState>()\r\n data && dispatch(actionCurrentSuccess(data));\r\n if(!data?.token) throw new Error('old token')\r\n } catch (e) {\r\n dispatch(actionCurrentReject());\r\n } \r\n};\r\n\r\nexport { asyncCreateUser, asyncLogin, asyncLogout, asyncCurrentUser };\r\n","import { createAction } from '@reduxjs/toolkit';\r\nimport { IMessagesState } from '../../../typescript/redux/messages/interfaces'\r\n\r\nconst actionGetMessagesSuccess = createAction('getMessages/success', (value:IMessagesState) => ({\r\n payload: value,\r\n}));\r\n\r\nconst actionGetMessagesReject = createAction('getMessages/reject', () => ({\r\n payload: null,\r\n}));\r\n\r\n\r\nexport {\r\n actionGetMessagesSuccess,\r\n actionGetMessagesReject,\r\n};\r\n","import { createAction } from '@reduxjs/toolkit';\r\nimport { IAllMessagesState } from '../../../typescript/redux/allMessages/interfaces'\r\n\r\nconst actionGetAllMessagesSuccess = createAction('getAllMessages/success', (value:IAllMessagesState) => ({\r\n payload: value,\r\n}));\r\n\r\nconst actionGetAllMessagesReject = createAction('getAllMessages/reject', () => ({\r\n payload: null,\r\n}));\r\n\r\n\r\nexport {\r\n actionGetAllMessagesSuccess,\r\n actionGetAllMessagesReject,\r\n};\r\n","import { createAction } from '@reduxjs/toolkit';\r\nimport { IContactsState } from '../../../typescript/redux/contacts/interfaces'\r\n\r\nconst actionGetContactsSuccess = createAction('getContacts/success', (value:IContactsState) => ({\r\n payload: value,\r\n}));\r\n\r\nconst actionGetContactsReject = createAction('getContacts/reject', () => ({\r\n payload: null,\r\n}));\r\n\r\n\r\nexport {\r\n actionGetContactsSuccess,\r\n actionGetContactsReject\r\n};\r\n","import { createAction } from '@reduxjs/toolkit';\r\nimport { IChatsRes } from '../../../typescript/redux/chats/interfaces'\r\nimport { TChat } from '../../../typescript/redux/chats/types'\r\n\r\nconst actionGetChatsSuccess = createAction('getChats/success', (value:IChatsRes) => ({\r\n payload: value,\r\n}));\r\n\r\nconst actionGetChatsReject = createAction('getChats/reject', () => ({\r\n payload: null,\r\n}));\r\n\r\n\r\nexport {\r\n actionGetChatsSuccess,\r\n actionGetChatsReject,\r\n};\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loader\":\"Loader_loader__2bvUw\"};","import { toast } from 'react-toastify';\r\nimport FileSaver from 'file-saver';\r\nimport { TChats } from '../typescript/redux/chats/types';\r\nimport { TAllMessages } from '../typescript/redux/allMessages/types';\r\n\r\nconst format = (a: string) => a.split(' ').join('').trim()\r\n\r\nconst firstLetter = (word: string) => word.slice(0, 1).toUpperCase()\r\n\r\nconst slicedWord = (word: string, max: number, from: number = 0) =>\r\n word.length < max ? word.slice(from) : word.slice(from, max)\r\n \r\nconst timeStamp = (updatedAt: string) => new Date(updatedAt).toLocaleString(\"en-US\", {\r\n year:'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n})\r\n\r\nconst timeStampEU = (updatedAt: string) => new Date(updatedAt).toLocaleString('en-GB', {\r\n year:'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n})\r\n\r\nconst timeStampEUFilter = (updatedAt: string) => new Date(updatedAt).toLocaleString('en-GB', {\r\n year:'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n})\r\n\r\nconst timeStampMessage = (updatedAt: string) => new Date(updatedAt).toLocaleString('en-GB',{\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n})\r\n\r\n\r\nconst timeStampFilter = (updatedAt: string) => new Date(updatedAt).toLocaleString(\"en-US\", {\r\n year:'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n})\r\n\r\n\r\nconst playNotification = (url:string) => {\r\n const audio = new Audio(url);\r\n audio.play();\r\n}\r\n\r\nconst notification = (name: string, onClick: () => void) => {\r\n toast(`🦄new message from ${name}`, {\r\n position: \"bottom-right\",\r\n autoClose: 5000,\r\n hideProgressBar: false,\r\n closeOnClick: true,\r\n pauseOnHover: true,\r\n draggable: true,\r\n progress: undefined,\r\n onClick\r\n });\r\n}\r\n\r\nconst copied = (text:string) => {\r\n toast(`${text} Copied`, {\r\n position: \"bottom-right\",\r\n autoClose: 2000,\r\n hideProgressBar: false,\r\n closeOnClick: true,\r\n pauseOnHover: true,\r\n draggable: true,\r\n progress: undefined,\r\n });\r\n}\r\n\r\nconst playNotificationWithoutPermission = (url: string) => {\r\n const w:any = window\r\n const audioContext: any = new (w.AudioContext || w.webkitAudioContext)();\r\n navigator.mediaDevices\r\n .getUserMedia({ audio: true })\r\n .then(() => {\r\n const source = audioContext.createBufferSource();\r\n source.addEventListener('ended', () => {\r\n source.stop();\r\n audioContext.close();\r\n });\r\n const request = new XMLHttpRequest();\r\n request.open('GET', url, true);\r\n request.responseType = 'arraybuffer';\r\n request.onload = () => {\r\n audioContext.decodeAudioData(\r\n request.response,\r\n (buffer:any) => {\r\n source.buffer = buffer;\r\n source.connect(audioContext.destination);\r\n source.start();\r\n },\r\n (e:any) => {\r\n console.log('Error with decoding audio data' + e.message);\r\n });\r\n }\r\n request.send();\r\n })\r\n .catch(reason => console.error(`Audio permissions denied: ${reason}`));\r\n}\r\n\r\nconst handleDownload = async (url: string, type: string) => await FileSaver.saveAs(url, type);\r\n\r\nconst handleSort = (sortBy: string, data: any,sort:boolean): any => {\r\n return [...data].sort(function (a: any, b: any) {\r\n if (sort?a[sortBy] > b[sortBy]:a[sortBy] < b[sortBy]) {\r\n return -1;\r\n } else if (sort?a[sortBy] < b[sortBy]:a[sortBy] > b[sortBy]) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n};\r\n\r\nconst sortByRecent = (chats:TChats,sort:boolean) => [...chats].sort((a, b) => {\r\n const aCreatedAt = a.lastMessageCreatedAt ? a.lastMessageCreatedAt : a.createdAt\r\n const bCreatedAt = b.lastMessageCreatedAt ? b.lastMessageCreatedAt : b.createdAt\r\n const aTime = timeStampEUFilter(aCreatedAt)\r\n const bTime = timeStampEUFilter(bCreatedAt)\r\n const direction = sort ? aTime < bTime: aTime > bTime\r\n return direction ? 1 : -1\r\n})\r\n\r\nconst filteredMessages = (arr: TAllMessages,date:any,value:string) => arr.filter((el) => {\r\n if (!date) {\r\n if (!el.fullType && el.message.toLowerCase().includes(value.toLowerCase())) {\r\n return el\r\n }\r\n if (el.fullType && el.fullType.toLowerCase().includes(value.toLowerCase())) {\r\n return el\r\n }\r\n } else {\r\n if (!el.fullType && el.message.toLowerCase().includes(value.toLowerCase())\r\n && timeStampFilter(date) === timeStampFilter(el.createdAt)) {\r\n return el\r\n }\r\n if (el.fullType && el.fullType.toLowerCase().includes(value.toLowerCase())\r\n && timeStampFilter(date) === timeStampFilter(el.createdAt)) {\r\n return el\r\n }\r\n }\r\n})\r\n\r\nconst prodBaseURL = 'http://localhost:3000'\r\n\r\nconst refreshAppTime = 3000\r\n\r\nexport {\r\n format,\r\n firstLetter,\r\n slicedWord,\r\n timeStamp,\r\n timeStampEU,\r\n timeStampEUFilter,\r\n timeStampMessage,\r\n timeStampFilter,\r\n playNotification,\r\n notification,\r\n copied,\r\n playNotificationWithoutPermission,\r\n handleDownload,\r\n handleSort,\r\n sortByRecent,\r\n filteredMessages,\r\n prodBaseURL,\r\n refreshAppTime,\r\n}","import { createSelector } from 'reselect';\r\nimport { IState } from '../../../typescript/redux/interfaces'\r\n\r\nconst getState = (state: IState) => state;\r\nconst getChat = (state: IState) => state.chat;\r\nconst getChatMemo = createSelector([getChat], chat => chat);\r\n\r\nexport { getChat,getState,getChatMemo };\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"appWrapper\":\"App_appWrapper__2lsaD\"};"],"sourceRoot":""}