App.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import { applyMiddleware, combineReducers, createStore } from 'redux';
  2. import thunk from 'redux-thunk';
  3. import { Provider,connect } from 'react-redux';
  4. import './App.scss';
  5. import { backendURL, gql } from './helpers/gql';
  6. import { useEffect, useState, useRef } from 'react';
  7. import { authReducer } from './reducers/authReducer';
  8. import {promiseReducer } from './reducers/promiseReducer';
  9. import React, { Component } from 'react';
  10. import {Router, Route, Link, Navigate, Switch, Redirect} from 'react-router-dom';
  11. import { createBrowserHistory } from 'history'
  12. import LoginPage from './pages/LoginPage';
  13. import RegisterPage from './pages/RegisterPage';
  14. import {MainPage} from './pages/MainPage';
  15. import { actionAuthLogout } from './actions/actionLogin';
  16. import { actionPromise } from './actions/actionsPromise';
  17. import { socket } from './actions/actionLogin';
  18. import { actionAboutMe } from './actions/actionAboutMe';
  19. import {chatReducer} from './reducers/chatReducer';
  20. import ModalNewChat from './components/CreateNewChat';
  21. import { modalReducer } from './reducers/modalReducer';
  22. import { actionGetMessageFromSocket } from './actions/actionsMessages';
  23. import { actionGetOneChat, actionLeftChat } from './actions/actionsForChats';
  24. // import { uploadFile } from '../helpers/uploadFile';
  25. export const history = createBrowserHistory();
  26. export const store = createStore(combineReducers({
  27. promise: promiseReducer, auth: authReducer, chats: chatReducer, modal: modalReducer
  28. }), applyMiddleware(thunk))
  29. console.log(store.getState())
  30. store.subscribe(() => console.log(store.getState()));
  31. if (localStorage.authToken) socket.emit('jwt', localStorage.authToken)
  32. socket.on('jwt_ok', data => console.log(data))
  33. socket.on('jwt_fail', error => console.log(error))
  34. socket.on('msg', msg => {console.log('from socket msg', msg); store.dispatch(actionGetMessageFromSocket(msg))})
  35. socket.on('chat', chat => {console.log('from socket chat', chat); if (localStorage.authToken) {socket.emit('jwt', localStorage.authToken)}; store.dispatch(actionGetOneChat(chat._id))})
  36. socket.on('chat_left', chat => {console.log('from socket chat_left', chat); store.dispatch(actionLeftChat(chat)) });
  37. socket.on('media', media => console.log(media));
  38. socket.on("connect", () => {
  39. console.log(socket.id)
  40. })
  41. const AllRoutes = ({auth}) => {
  42. return (
  43. <Switch>
  44. <Route path="/login" component={LoginPage}/>
  45. <Route path="/register" component={RegisterPage}/>
  46. <Route path="/main" component={MainPage} />
  47. <Route exact path="/">{auth ? <Redirect to="/main"/> : <Redirect to="/login" /> }</Route>
  48. </Switch>
  49. )
  50. }
  51. const CAllRoutes = connect(state => ({auth : state.auth?.payload}))(AllRoutes)
  52. function App() {
  53. return (
  54. <Router history={history}>
  55. <Provider store={store}>
  56. <div className="App">
  57. <CAllRoutes />
  58. </div>
  59. </Provider>
  60. </Router>
  61. );
  62. }
  63. export default App;