From a5888e412cd2714d96a1ed549295e39472d94a9a Mon Sep 17 00:00:00 2001 From: Luke Berndt Date: Fri, 24 Mar 2023 09:14:58 -0400 Subject: [PATCH] cleaned up the routing --- admin/package.json | 1 - admin/src/App/Restricted.js | 55 ------ admin/src/Permission/AddPermissionModal.js | 148 ---------------- .../Permission/AddPermissionModalContainer.js | 23 --- admin/src/Permission/ListPermissions.js | 76 -------- admin/src/Permission/UpdatePermissionModal.js | 134 -------------- .../UpdatePermissionModalContainer.js | 23 --- admin/src/Permission/permission-actions.js | 166 ------------------ admin/src/Permission/permission-constants.js | 12 -- admin/src/Permission/permission-reducer.js | 87 --------- admin/src/System/CallChart.js | 4 - admin/src/System/ResponsiveCallChart.js | 36 ++-- admin/src/System/ResponsiveErrorChart.js | 35 ++-- admin/src/features/group/groupSlice.js | 15 -- admin/src/index.js | 4 +- admin/src/redux-router/configureStore.js | 39 ++-- admin/src/redux-router/reducers.js | 16 -- admin/yarn.lock | 5 - frontend/src/index.js | 4 +- frontend/src/redux-router/configureStore.js | 47 ++--- frontend/src/redux-router/reducers.js | 15 -- 21 files changed, 68 insertions(+), 877 deletions(-) delete mode 100644 admin/src/Permission/AddPermissionModal.js delete mode 100644 admin/src/Permission/AddPermissionModalContainer.js delete mode 100644 admin/src/Permission/ListPermissions.js delete mode 100644 admin/src/Permission/UpdatePermissionModal.js delete mode 100644 admin/src/Permission/UpdatePermissionModalContainer.js delete mode 100644 admin/src/Permission/permission-actions.js delete mode 100644 admin/src/Permission/permission-constants.js delete mode 100644 admin/src/Permission/permission-reducer.js delete mode 100644 admin/src/features/group/groupSlice.js delete mode 100644 admin/src/redux-router/reducers.js delete mode 100644 frontend/src/redux-router/reducers.js diff --git a/admin/package.json b/admin/package.json index 6d3d461..475cc40 100644 --- a/admin/package.json +++ b/admin/package.json @@ -3,7 +3,6 @@ "version": "0.1.0", "private": true, "dependencies": { - "@lagunovsky/redux-react-router": "^4.3.0", "@visx/axis": "3.0.1", "@visx/curve": "3.0.0", "@visx/glyph": "3.0.0", diff --git a/admin/src/App/Restricted.js b/admin/src/App/Restricted.js index d99a24f..3229b6f 100644 --- a/admin/src/App/Restricted.js +++ b/admin/src/App/Restricted.js @@ -1,5 +1,4 @@ // in src/restricted.js -//import React, { Component } from 'react'; import React, { useEffect} from "react"; import { useSelector, useDispatch } from 'react-redux' import { authenticateUser } from "../features/user/userSlice"; @@ -7,7 +6,6 @@ import { authenticateUser } from "../features/user/userSlice"; * Higher-order component (HOC) to wrap restricted pages */ - const Restricted = ({children }) => { const { authenticated, hasAuthenticated } = useSelector((state) => state.user); const dispatch = useDispatch(); @@ -16,12 +14,6 @@ const Restricted = ({children }) => { dispatch(authenticateUser({})); },[]); - useEffect(() => { - if (!authenticated) { - console.log("I loaded things and it is not good") - } - }, [hasAuthenticated]) - if (authenticated) { return children;; } @@ -29,51 +21,4 @@ const Restricted = ({children }) => { }; -/* -const restricted = (BaseComponent, store) => { - - class Restricted extends Component { - componentDidMount() { - this.checkAuthentication(this.props); - } - - componentDidUpdate(prevProps) { - if (prevProps.location !== this.props.location) { - this.checkAuthentication(this.props); - } - } - - checkAuthentication(params) { - const authenticated = store.getState().user.authenticated; - if (!authenticated) { - axios - .get(process.env.REACT_APP_ACCOUNT_SERVER + "/authenticated", { withCredentials: true }) - .then(response => { - if (response.data.success) { - const user = response.data.user - store.dispatch({ - type: types.LOGIN_SUCCESS_USER, - data: user - }); - } else { - window.location = process.env.REACT_APP_ACCOUNT_SERVER + "/login?nextLocation=admin"; - } - }) - .catch(response => { - if (response instanceof Error) { - window.location = process.env.REACT_APP_ACCOUNT_SERVER + "/login?nextLocation=admin"; - // Something happened during logout that triggered an Error - console.log("Error", response.message); - } - }); - } - } - render() { - return ; - } - } - return withRouter(Restricted); -} -*/ - export default Restricted \ No newline at end of file diff --git a/admin/src/Permission/AddPermissionModal.js b/admin/src/Permission/AddPermissionModal.js deleted file mode 100644 index 6abf98d..0000000 --- a/admin/src/Permission/AddPermissionModal.js +++ /dev/null @@ -1,148 +0,0 @@ -import React, { Component } from "react"; -import ReactDOM from "react-dom"; -import { - Container, - Checkbox, - Header, - Form, - Grid, - Modal, - Rail, - Segment, - List, - Input, - Button, - Message, - Icon, - Table -} from "semantic-ui-react"; - -// ---------------------------------------------------- -const requestMessageStyle = { - color: "red" -}; - -// ---------------------------------------------------- -class AddPermissionModal extends Component { - constructor(props) { - super(props); - this.handleSubmit = this.handleSubmit.bind(this); - this.handleClose = this.handleClose.bind(this); - this.handleChange = this.handleChange.bind(this); - // Set initial state - this.state = { - role: 5, - email: "", - error: "" - }; - } - - componentDidMount() { - - } - - - - handleInputChange = (e, { name, value }) => this.setState({ [name]: value }); - handleChange = (e, { newRole }) => this.setState({ newRole }) - - - - - handleClose = () => { - this.setState({ - error: "" - }); - this.props.onClose(false); - } - handleSubmit() { - //if (this.props.updatePermissionId) { - const data = {email: this.state.email, shortName: this.props.shortName, role: this.state.role } - - this.props.permissionActions.addPermission(data).then(requestMessage => { - if (requestMessage) { - // report to the user is there was a problem during registration - this.setState({ - error: requestMessage - }); - //this.props.onClose(false); - } else { - this.setState({ - error: "" - }); - this.props.onClose(true); - } - }); - - - //} - } - - render() { - - const railStyle = { - top: "15px", - minHeight: "200px" - }; - var errorMessage = ""; - - if (this.state.error) { - errorMessage = ( - - That didn't work... -

{this.state.error}

-
- ) - } - - return ( - - Select Role - - -
- - Add User Access to System: {this.props.shortName} - - - - - - = 0) && (this.state.role < 10)} - onChange={this.handleInputChange} - /> - - - = 10) && (this.state.role < 20)} - onChange={this.handleInputChange} - /> - -
- {errorMessage} -
-
- - - - -
- - ); - } -} - -export default AddPermissionModal; diff --git a/admin/src/Permission/AddPermissionModalContainer.js b/admin/src/Permission/AddPermissionModalContainer.js deleted file mode 100644 index 0d0c4d7..0000000 --- a/admin/src/Permission/AddPermissionModalContainer.js +++ /dev/null @@ -1,23 +0,0 @@ -import { connect } from "react-redux" -import * as permissionActionCreators from "./permission-actions" -import { bindActionCreators } from 'redux' -import AddPermissionModal from "./AddPermissionModal" - -//groups: state.group.items[props.match.params.shortName], -function mapStateToProps(state,props) { - return { - permissions: state.permission.items, - shortName: props.shortName - } -} - -function mapDispatchToProps(dispatch) { - return { - permissionActions: bindActionCreators(permissionActionCreators,dispatch) - } -} - -export default connect( - mapStateToProps, - mapDispatchToProps -)(AddPermissionModal) diff --git a/admin/src/Permission/ListPermissions.js b/admin/src/Permission/ListPermissions.js deleted file mode 100644 index f5a4811..0000000 --- a/admin/src/Permission/ListPermissions.js +++ /dev/null @@ -1,76 +0,0 @@ -import React, { Component } from "react"; -import ReactDOM from "react-dom"; -import { Link } from 'react-router-dom' -import { - Container, - Header, - Form, - Grid, - Segment, - Input, - Button, - Message, - Icon, - Table -} from "semantic-ui-react"; - -// ---------------------------------------------------- - - - -// ---------------------------------------------------- -class ListPermissions extends Component { - constructor(props) { - super(props); - - } - - -//https://stackoverflow.com/questions/36559661/how-can-i-dispatch-from-child-components-in-react-redux -//https://stackoverflow.com/questions/42597602/react-onclick-pass-event-with-parameter - render() { - const permissions = this.props.permissions; - if (permissions) { - return ( - - - - - Name - Email - Role - - - - - {permissions.map((permission, i) => ( - - {permission.firstName} {permission.lastName} - {permission.email} - {permission.role} - this.props.updatePermission(permission._id)} - /> - this.props.deletePermission(permission)} - /> - - - ))} - -
- - ); - } else { - return ( -
- ); - } -} -} - -export default ListPermissions; diff --git a/admin/src/Permission/UpdatePermissionModal.js b/admin/src/Permission/UpdatePermissionModal.js deleted file mode 100644 index 63a53cc..0000000 --- a/admin/src/Permission/UpdatePermissionModal.js +++ /dev/null @@ -1,134 +0,0 @@ -import React, { Component } from "react"; -import ReactDOM from "react-dom"; -import { - Container, - Checkbox, - Header, - Form, - Grid, - Modal, - Rail, - Segment, - List, - Input, - Button, - Message, - Icon, - Table -} from "semantic-ui-react"; - -// ---------------------------------------------------- -const requestMessageStyle = { - color: "red" -}; - -// ---------------------------------------------------- -class UpdatePermissionModal extends Component { - constructor(props) { - super(props); - this.handleSubmit = this.handleSubmit.bind(this); - this.handleClose = this.handleClose.bind(this); - this.handleChange = this.handleChange.bind(this); - // Set initial state - this.state = { - newRole: false, - permission: false - }; - } - - componentDidMount() { - - } - - componentWillReceiveProps(nextProps) { - - if (nextProps.permissions && nextProps.updatePermissionId) { - var updatePermission = nextProps.permissions.find(permission=> permission._id === nextProps.updatePermissionId); - - if (updatePermission) { - this.setState({permission: updatePermission, newRole: updatePermission.role}); - } - } - } - - handleChange = (e, { name, value }) => this.setState({ newRole: value }) - - - - - handleClose = () => this.props.onClose(false); - handleSubmit() { - if (this.props.updatePermissionId) { - const data = {permissionId: this.props.updatePermissionId, shortName: this.props.shortName, role: this.state.newRole } - - this.props.permissionActions.update(data).then(requestMessage => { - if (requestMessage) { - // report to the user is there was a problem during registration - this.setState({ - requestMessage - }); - this.props.onClose(false); - } else { - this.props.onClose(true); - } - }); - - - } - } - - render() { - - const railStyle = { - top: "15px", - minHeight: "200px" - }; - var user = "" - if (this.state.permission) { - user = this.state.permission.email - } - return ( - - Select Role - - -
- - Set role for {user}: - - - = 0) && (this.state.newRole < 10)} - onChange={this.handleChange} - /> - - - = 10) && (this.state.newRole < 20)} - onChange={this.handleChange} - /> - -
- -
-
- - - -
- - ); - } -} - -export default UpdatePermissionModal; diff --git a/admin/src/Permission/UpdatePermissionModalContainer.js b/admin/src/Permission/UpdatePermissionModalContainer.js deleted file mode 100644 index 512034e..0000000 --- a/admin/src/Permission/UpdatePermissionModalContainer.js +++ /dev/null @@ -1,23 +0,0 @@ -import { connect } from "react-redux" -import * as permissionActionCreators from "./permission-actions" -import { bindActionCreators } from 'redux' -import UpdatePermissionModal from "./UpdatePermissionModal" - -//groups: state.group.items[props.match.params.shortName], -function mapStateToProps(state,props) { - return { - permissions: state.permission.items, - shortName: props.shortName - } -} - -function mapDispatchToProps(dispatch) { - return { - permissionActions: bindActionCreators(permissionActionCreators,dispatch) - } -} - -export default connect( - mapStateToProps, - mapDispatchToProps -)(UpdatePermissionModal) diff --git a/admin/src/Permission/permission-actions.js b/admin/src/Permission/permission-actions.js deleted file mode 100644 index f153c9d..0000000 --- a/admin/src/Permission/permission-actions.js +++ /dev/null @@ -1,166 +0,0 @@ -import axios from "axios"; -//import { browserHistory } from "react-router" -import * as types from "./permission-constants"; - -function beginAddPermission() { - return { type: types.ADD_PERMISSION }; -} - -function addPermissionSuccess(data) { - return { type: types.ADD_PERMISSION_SUCCESS, data }; -} - -function addPermissionError() { - return { type: types.ADD_PERMISSION_ERROR }; -} - -function beginDeletePermission() { - return { type: types.DELETE_PERMISSION }; -} - -function deletePermissionSuccess(data) { - return { type: types.DELETE_PERMISSION_SUCCESS, data }; -} - -function deletePermissionError() { - return { type: types.DELETE_PERMISSION_ERROR }; -} - - -function beginUpdateRole() { - return { type: types.UPDATE_ROLE }; -} - -function updateRoleSuccess(data) { - return { type: types.UPDATE_ROLE_SUCCESS, data }; -} - -function updateRoleError() { - return { type: types.UPDATE_ROLE_ERROR }; -} - -// "Log In" action creators -function beginFetchPermission() { - return { type: types.FETCH_PERMISSION }; -} - -function fetchPermissionError(data) { - return { type: types.FETCH_ERROR_PERMISSION, - data }; -} - -function fetchPermissionSuccess(data) { - return { type: types.FETCH_SUCCESS_PERMISSION, - data }; -} - -function shouldFetch(state) { - if ((!state.permission.items) || (state.permission.items.length <1)) { - return true - } else if (state.permission.isWaiting) { - return false - } else { - return false - } -} - -export function fetch(shortName) { - return (dispatch, getState) => { - if (shouldFetch(getState())) { - dispatch(beginFetchPermission()); - - return axios - .get(process.env.REACT_APP_ADMIN_SERVER + "/permissions/"+shortName, {withCredentials: true}) - .then(response => { - if (response.data.success) { - dispatch(fetchPermissionSuccess(response.data.permissions)); - } else { - dispatch(fetchPermissionError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -}; -} - -export function update(data) { - return (dispatch, getState) => { - - dispatch(beginUpdateRole()); - var url = process.env.REACT_APP_ADMIN_SERVER + "/permissions/" + data.shortName + "/" + data.permissionId; - return axios.post( url, data, {withCredentials: true}) - .then(response => { - if (response.data.success) { - dispatch(updateRoleSuccess(response.data.permission)); - } else { - dispatch(updateRoleError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - -}; -} - -export function addPermission(data) { - return (dispatch, getState) => { - dispatch(beginAddPermission()); - var url = process.env.REACT_APP_ADMIN_SERVER + "/permissions/" + data.shortName; - return axios.post( url, data, {withCredentials: true}) - .then(response => { - if (response.data.success) { - dispatch(addPermissionSuccess(response.data.permission)); - } else { - dispatch(addPermissionError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - -}; -} - - -export function deletePermission(data) { - return (dispatch, getState) => { - - dispatch(beginDeletePermission()); - var url = process.env.REACT_APP_ADMIN_SERVER + "/permissions/" + data.shortName + "/" + data.permissionId; - return axios.delete( url, {withCredentials: true}) - .then(response => { - if (response.data.success) { - dispatch(deletePermissionSuccess(data.permissionId)); - } else { - dispatch(deletePermissionError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - -}; -} diff --git a/admin/src/Permission/permission-constants.js b/admin/src/Permission/permission-constants.js deleted file mode 100644 index 1a9acce..0000000 --- a/admin/src/Permission/permission-constants.js +++ /dev/null @@ -1,12 +0,0 @@ -export const ADD_PERMISSION = "ADD_PERMISSION" -export const ADD_PERMISSION_ERROR = "ADD_PERMISSION_ERROR" -export const ADD_PERMISSION_SUCCESS = "ADD_PERMISSION_SUCCESS" -export const FETCH_PERMISSION = "FETCH_PERMISSION" -export const FETCH_ERROR_PERMISSION = "FETCH_ERROR_PERMISSION" -export const FETCH_SUCCESS_PERMISSION = "FETCH_SUCCESS_PERMISSION" -export const UPDATE_ROLE = "UPDATE_ROLE" -export const UPDATE_ROLE_ERROR = "UPDATE_ROLE_ERROR" -export const UPDATE_ROLE_SUCCESS = "UPDATE_ROLE SUCCESS" -export const DELETE_PERMISSION = "DELETE_PERMISSION" -export const DELETE_PERMISSION_ERROR = "DELETE_PERMISSION_ERROR" -export const DELETE_PERMISSION_SUCCESS = "DELETE_PERMISSION_SUCCESS" diff --git a/admin/src/Permission/permission-reducer.js b/admin/src/Permission/permission-reducer.js deleted file mode 100644 index 7ced34a..0000000 --- a/admin/src/Permission/permission-reducer.js +++ /dev/null @@ -1,87 +0,0 @@ -import { - ADD_PERMISSION, - ADD_PERMISSION_SUCCESS, - ADD_PERMISSION_ERROR, - DELETE_PERMISSION, - DELETE_PERMISSION_SUCCESS, - DELETE_PERMISSION_ERROR, - FETCH_PERMISSION, - FETCH_SUCCESS_PERMISSION, - FETCH_ERROR_PERMISSION, - UPDATE_ROLE, - UPDATE_ROLE_ERROR, - UPDATE_ROLE_SUCCESS -} from "./permission-constants"; - -function updateRoleInArray(array, updatedItem) { - const updatedItems = array.map(item => { - if(item._id !== updatedItem._id) { - // Since we only want to update one item, preserve all others as they are now - return item; - } - item.role = updatedItem.role; - return item; - }); - - return updatedItems; -} - -function deleteItemInArray(array, _id) { - const updatedItems = array.filter(function (item) { - return item._id !== _id; - }); - - return updatedItems; -} - -const permission = ( - state = { - isWaiting: false, - items: [] - }, - action -) => { - switch (action.type) { - - - case ADD_PERMISSION_SUCCESS: - return Object.assign({}, state, { - isWaiting: false, - items: [...state.items, action.data] - }); - case DELETE_PERMISSION_SUCCESS: - return Object.assign({}, state, { - isWaiting: false, - items: deleteItemInArray(state.items, action.data) - }); - case UPDATE_ROLE_SUCCESS: - return Object.assign({}, state, { - isWaiting: false, - items: updateRoleInArray(state.items, action.data) - }); - case FETCH_SUCCESS_PERMISSION: - return Object.assign({}, state, { - isWaiting: false, - items: action.data - }); - - case DELETE_PERMISSION_ERROR: - case ADD_PERMISSION_ERROR: - case UPDATE_ROLE_ERROR: - case FETCH_ERROR_PERMISSION: - return Object.assign({}, state, { - isWaiting: false - }); - - case DELETE_PERMISSION: - case ADD_PERMISSION: - case UPDATE_ROLE: - case FETCH_PERMISSION: - return Object.assign({}, state, { isWaiting: true}); - - default: - return state; - } -}; - -export default permission; diff --git a/admin/src/System/CallChart.js b/admin/src/System/CallChart.js index 6205b17..c3a3cdf 100644 --- a/admin/src/System/CallChart.js +++ b/admin/src/System/CallChart.js @@ -76,8 +76,6 @@ constructor(props) { { - render() { - return( - - {({ width: w, height: h }) => { - return ( - - ); - }} - - ) - } + return ( + + {({ width: w, height: h }) => { + return ( + + ); + }} + + ) } + export default ResponsiveCallChart diff --git a/admin/src/System/ResponsiveErrorChart.js b/admin/src/System/ResponsiveErrorChart.js index d360190..72d49ce 100644 --- a/admin/src/System/ResponsiveErrorChart.js +++ b/admin/src/System/ResponsiveErrorChart.js @@ -1,27 +1,22 @@ -import React, { Component } from "react" +import React, { Component } from "react" import ErrorChart from "./ErrorChart" import { ParentSize } from "@visx/responsive"; -class ResponsiveErrorChart extends Component { - constructor(props) { - super(props); - } +const ResponsiveErrorChart = (props) => { - render() { - return( - - {({ width: w, height: h }) => { - return ( - - ); - }} - - ) - } + return ( + + {({ width: w, height: h }) => { + return ( + + ); + }} + + ) } export default ResponsiveErrorChart diff --git a/admin/src/features/group/groupSlice.js b/admin/src/features/group/groupSlice.js deleted file mode 100644 index 1906233..0000000 --- a/admin/src/features/group/groupSlice.js +++ /dev/null @@ -1,15 +0,0 @@ -const groupSlice = createSlice({ - name: 'group', - initialState: { - orderChange: false, - isWaiting: false, - items: {} - }, - reducers: { - }, - }) - - // Extract the action creators object and the reducer -const { actions, reducer } = groupSlice -// Export the reducer, either as a default or named export -export default reducer \ No newline at end of file diff --git a/admin/src/index.js b/admin/src/index.js index 56090eb..568c07e 100644 --- a/admin/src/index.js +++ b/admin/src/index.js @@ -2,12 +2,12 @@ import React from 'react'; import { Provider } from 'react-redux' import { createRoot } from 'react-dom/client'; import { BrowserRouter } from "react-router-dom"; -import configureStore, { history } from './redux-router/configureStore' +import setupStore from './redux-router/configureStore' import 'semantic-ui-css/semantic.min.css' import App from "./App/App" -const store = configureStore(/* provide initial state if any */) +const store = setupStore(/* provide initial state if any */) diff --git a/admin/src/redux-router/configureStore.js b/admin/src/redux-router/configureStore.js index 57ce03e..1ca7d94 100644 --- a/admin/src/redux-router/configureStore.js +++ b/admin/src/redux-router/configureStore.js @@ -1,31 +1,20 @@ -// https://github.com/supasate/connected-react-router -// configureStore.js +import { configureStore } from '@reduxjs/toolkit' +import { userReducer } from '../features/user/userSlice' +import { apiSlice } from "../features/api/apiSlice" -import { createBrowserHistory } from 'history' -import { applyMiddleware, compose, createStore } from 'redux' -import { createRouterMiddleware } from '@lagunovsky/redux-react-router' -import createRootReducer from './reducers' -import thunk from 'redux-thunk'; -import { apiSlice } from '../features/api/apiSlice' -import { composeWithDevTools } from 'redux-devtools-extension' - -//const composedEnhancers = composeWithDevTools(...enhancers) -export const history = createBrowserHistory() - -export default function configureStore(preloadedState) { - const store = createStore( - createRootReducer(history), // root reducer with router state +const setupStore = (preloadedState) => { + const store = configureStore({ + reducer: { + user: userReducer, + [apiSlice.reducerPath]: apiSlice.reducer, + }, + middleware: (getDefaultMiddleware) => + // adding the api middleware enables caching, invalidation, polling and other features of `rtk-query` + getDefaultMiddleware().concat(apiSlice.middleware), preloadedState, - composeWithDevTools( - applyMiddleware( - createRouterMiddleware(history), // for dispatching history actions - thunk, - apiSlice.middleware, - // ... other middlewares ... - ), - ), - ) + }) return store } +export default setupStore; \ No newline at end of file diff --git a/admin/src/redux-router/reducers.js b/admin/src/redux-router/reducers.js deleted file mode 100644 index 494a78c..0000000 --- a/admin/src/redux-router/reducers.js +++ /dev/null @@ -1,16 +0,0 @@ - -// from https://github.com/supasate/connected-react-router -import { combineReducers } from 'redux' -import { createRouterReducer } from '@lagunovsky/redux-react-router' -import { userSlice, userReducer } from '../features/user/userSlice' -import {apiSlice} from "../features/api/apiSlice" - -const createRootReducer = (history) => combineReducers({ - router: createRouterReducer (history), - user: userReducer, - [apiSlice.reducerPath]: apiSlice.reducer, - -}) -export default createRootReducer - - diff --git a/admin/yarn.lock b/admin/yarn.lock index af82f12..1209b50 100644 --- a/admin/yarn.lock +++ b/admin/yarn.lock @@ -1546,11 +1546,6 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@lagunovsky/redux-react-router@^4.3.0": - version "4.3.0" - resolved "https://registry.npmjs.org/@lagunovsky/redux-react-router/-/redux-react-router-4.3.0.tgz" - integrity sha512-zjjIu0xiX4cAE6O0ttLwo/Fk2zF3oeDfP3nC9YPUFSMnK7QumxS4xQIaH8x+amIIrg3klvPAk64L1bZLvDHl5w== - "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" diff --git a/frontend/src/index.js b/frontend/src/index.js index 848b999..f62ba79 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -2,11 +2,11 @@ import React from 'react'; import { createRoot } from 'react-dom/client'; import { BrowserRouter } from "react-router-dom"; import { Provider } from 'react-redux' -import configureStore from './redux-router/configureStore' +import setupStore from './redux-router/configureStore' import App from "./app" -const store = configureStore(/* provide initial state if any */) +const store = setupStore(/* provide initial state if any */) const container = document.getElementById('root'); const root = createRoot(container); diff --git a/frontend/src/redux-router/configureStore.js b/frontend/src/redux-router/configureStore.js index 9e67bfb..89d02fe 100644 --- a/frontend/src/redux-router/configureStore.js +++ b/frontend/src/redux-router/configureStore.js @@ -1,31 +1,22 @@ -// https://github.com/supasate/connected-react-router -// configureStore.js +import { configureStore } from '@reduxjs/toolkit' +import { apiSlice } from "../features/api/apiSlice" +import callPlayerSlice from "../features/callPlayer/callPlayerSlice" +import { callsReducer } from "../features/calls/callsSlice" -import { createBrowserHistory } from 'history' -import { applyMiddleware, compose, createStore } from 'redux' -import { createRouterMiddleware } from '@lagunovsky/redux-react-router' -//import { routerMiddleware } from 'connected-react-router' -import createRootReducer from './reducers' -import { apiSlice } from '../features/api/apiSlice' +const setupStore = (preloadedState) => { + const store = configureStore({ + reducer: { + callPlayer: callPlayerSlice, + calls: callsReducer, + [apiSlice.reducerPath]: apiSlice.reducer, + }, + middleware: (getDefaultMiddleware) => + // adding the api middleware enables caching, invalidation, polling and other features of `rtk-query` + getDefaultMiddleware().concat(apiSlice.middleware), + preloadedState, + }) -import thunk from 'redux-thunk'; - -export const history = createBrowserHistory() - -export default function configureStore(preloadedState) { - const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; - const store = createStore( - createRootReducer(history), // root reducer with router state - preloadedState, - composeEnhancers( - applyMiddleware( - createRouterMiddleware(history), // for dispatching history actions - thunk, - apiSlice.middleware, - // ... other middlewares ... - ), - ), - ) - return store -} \ No newline at end of file +} + +export default setupStore; \ No newline at end of file diff --git a/frontend/src/redux-router/reducers.js b/frontend/src/redux-router/reducers.js deleted file mode 100644 index f7e84f9..0000000 --- a/frontend/src/redux-router/reducers.js +++ /dev/null @@ -1,15 +0,0 @@ - -// from https://github.com/supasate/connected-react-router -import { combineReducers } from 'redux' -//import { connectRouter } from 'connected-react-router' -import { createRouterReducer } from '@lagunovsky/redux-react-router' -import {apiSlice} from "../features/api/apiSlice" -import callPlayerSlice from "../features/callPlayer/callPlayerSlice" -import { callsReducer } from "../features/calls/callsSlice" - -export default (history) => combineReducers({ - router: createRouterReducer(history), - callPlayer: callPlayerSlice, - calls: callsReducer, - [apiSlice.reducerPath]: apiSlice.reducer, -}) \ No newline at end of file