diff --git a/packages/jaeger-ui/package.json b/packages/jaeger-ui/package.json index 94bd933044..d431d7b916 100644 --- a/packages/jaeger-ui/package.json +++ b/packages/jaeger-ui/package.json @@ -84,12 +84,12 @@ "react-json-view-lite": "1.0.0", "react-redux": "^8.1.2", "react-router-dom": "4.3.1", - "react-router-redux": "5.0.0-alpha.8", "react-vis": "^1.7.2", "react-vis-force": "^0.3.1", "react-window": "^1.8.3", "redux": "^4.2.1", "redux-actions": "2.6.5", + "redux-first-history": "^5.1.1", "redux-form": "^8.3.10", "redux-promise-middleware": "^6.1.3", "reselect": "^4.1.6", diff --git a/packages/jaeger-ui/src/components/App/__snapshots__/index.test.js.snap b/packages/jaeger-ui/src/components/App/__snapshots__/index.test.js.snap index 8c852d7e73..2ddfeb60b2 100644 --- a/packages/jaeger-ui/src/components/App/__snapshots__/index.test.js.snap +++ b/packages/jaeger-ui/src/components/App/__snapshots__/index.test.js.snap @@ -12,17 +12,20 @@ exports[`JaegerUIApp does not explode 1`] = ` } } > - @@ -138,6 +132,6 @@ exports[`JaegerUIApp does not explode 1`] = ` /> - + `; diff --git a/packages/jaeger-ui/src/components/App/index.jsx b/packages/jaeger-ui/src/components/App/index.jsx index de9f4bc088..2c7580d5b8 100644 --- a/packages/jaeger-ui/src/components/App/index.jsx +++ b/packages/jaeger-ui/src/components/App/index.jsx @@ -13,10 +13,8 @@ // limitations under the License. import React, { Component } from 'react'; -import createHistory from 'history/createBrowserHistory'; import { Provider } from 'react-redux'; -import { Route, Redirect, Switch } from 'react-router-dom'; -import { ConnectedRouter } from 'react-router-redux'; +import { Route, Redirect, Switch, Router } from 'react-router-dom'; import NotFound from './NotFound'; import Page from './Page'; @@ -35,28 +33,25 @@ import { ROUTE_PATH as tracePath } from '../TracePage/url'; import MonitorATMPage from '../Monitor'; import { ROUTE_PATH as monitorATMPath } from '../Monitor/url'; import JaegerAPI, { DEFAULT_API_ROOT } from '../../api/jaeger'; -import configureStore from '../../utils/configure-store'; import processScripts from '../../utils/config/process-scripts'; import prefixUrl from '../../utils/prefix-url'; import '../common/vars.css'; import '../common/utils.css'; import './index.css'; - -const history = createHistory(); +import { history, store } from '../../utils/configure-store'; export default class JaegerUIApp extends Component { constructor(props) { super(props); - this.store = configureStore(history); JaegerAPI.apiRoot = DEFAULT_API_ROOT; processScripts(); } render() { return ( - - + + @@ -74,7 +69,7 @@ export default class JaegerUIApp extends Component { - + ); } diff --git a/packages/jaeger-ui/src/middlewares/index.js b/packages/jaeger-ui/src/middlewares/index.js index b015a4c540..21f8c3eb9a 100644 --- a/packages/jaeger-ui/src/middlewares/index.js +++ b/packages/jaeger-ui/src/middlewares/index.js @@ -14,7 +14,7 @@ import promiseMiddleware from 'redux-promise-middleware'; import { change } from 'redux-form'; -import { replace } from 'react-router-redux'; +import { replace } from 'redux-first-history'; import { searchTraces, fetchServiceOperations } from '../actions/jaeger-api'; import { getUrl as getSearchUrl } from '../components/SearchTracePage/url'; diff --git a/packages/jaeger-ui/src/utils/configure-store.js b/packages/jaeger-ui/src/utils/configure-store.js index 186c3039a9..77407a569e 100644 --- a/packages/jaeger-ui/src/utils/configure-store.js +++ b/packages/jaeger-ui/src/utils/configure-store.js @@ -1,3 +1,4 @@ +/* eslint-disable import/no-extraneous-dependencies */ // Copyright (c) 2017 Uber Technologies, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,7 +14,8 @@ // limitations under the License. import { createStore, combineReducers, applyMiddleware, compose } from 'redux'; -import { routerReducer, routerMiddleware } from 'react-router-redux'; +import { createReduxHistoryContext } from 'redux-first-history'; +import { createBrowserHistory } from 'history'; import traceDiff from '../components/TraceDiff/duck'; import archive from '../components/TracePage/ArchiveNotifier/duck'; @@ -22,7 +24,11 @@ import jaegerReducers from '../reducers'; import * as jaegerMiddlewares from '../middlewares'; import { getAppEnvironment } from './constants'; -export default function configureStore(history) { +const { createReduxHistory, routerMiddleware, routerReducer } = createReduxHistoryContext({ + history: createBrowserHistory(), +}); + +export default function configureStore() { return createStore( combineReducers({ ...jaegerReducers, @@ -36,7 +42,7 @@ export default function configureStore(history) { ...Object.keys(jaegerMiddlewares) .map(key => jaegerMiddlewares[key]) .filter(Boolean), - routerMiddleware(history) + routerMiddleware ), getAppEnvironment() !== 'production' && window && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__() @@ -44,3 +50,6 @@ export default function configureStore(history) { ) ); } + +export const store = configureStore(); +export const history = createReduxHistory(store); diff --git a/yarn.lock b/yarn.lock index 847e492c5a..b459263a14 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9876,7 +9876,7 @@ promzard@^1.0.0: dependencies: read "^2.0.0" -prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.7.0, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.7.0, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -10538,16 +10538,7 @@ react-router-dom@4.3.1: react-router "^4.3.1" warning "^4.0.1" -react-router-redux@5.0.0-alpha.8: - version "5.0.0-alpha.8" - resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-5.0.0-alpha.8.tgz#5242c705730b2ac862aff7a8e90f870d0cf45e12" - integrity sha512-R/Cw62KtlMIifIjLF/xyiVOdHsooXK4uUW/ycX+jYfy1haKqmeY/N/bBiwRFNrMBat1Bn30ynDlgckwFcXLmIQ== - dependencies: - history "^4.7.2" - prop-types "^15.6.0" - react-router "^4.2.0" - -react-router@^4.2.0, react-router@^4.3.1: +react-router@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz#aada4aef14c809cb2e686b05cee4742234506c4e" dependencies: @@ -10770,6 +10761,11 @@ redux-actions@2.6.5: reduce-reducers "^0.4.3" to-camel-case "^1.0.0" +redux-first-history@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/redux-first-history/-/redux-first-history-5.1.1.tgz#6aec4a3eaa52dbaaf2683776324d9219b182fab4" + integrity sha512-ujVHv+y9wC2rqavS5tLiSu6zkw+VYrEea+/ggwVTRuutadEtwxSRlaK19ry/PTLSQtFuUF1Xu+plL5erD4roVw== + redux-form@^8.3.10: version "8.3.10" resolved "https://registry.yarnpkg.com/redux-form/-/redux-form-8.3.10.tgz#335657fafd4b26b91b4ce65371cd9dabe3648158"