From f43c1e749f2e41cd2c6c334d044d9a005c65fed3 Mon Sep 17 00:00:00 2001 From: Qstick Date: Fri, 1 Mar 2019 22:27:55 -0500 Subject: [PATCH] New: Replace 'react-router-redux' with 'connected-react-router' --- .../AddNewArtist/AddNewArtistConnector.js | 2 +- .../ImportArtistSelectFolderConnector.js | 2 +- .../Details/AlbumDetailsPageConnector.js | 2 +- frontend/src/App/App.js | 2 +- .../Details/ArtistDetailsPageConnector.js | 2 +- .../Page/Header/ArtistSearchInputConnector.js | 2 +- .../Definition/QualityDefinitionsConnector.js | 2 +- .../{reducers.js => createReducers.js} | 15 +++-- frontend/src/Store/Middleware/middlewares.js | 2 +- frontend/src/Store/createAppStore.js | 4 +- package.json | 6 +- yarn.lock | 66 +++++++++++-------- 12 files changed, 59 insertions(+), 48 deletions(-) rename frontend/src/Store/Actions/{reducers.js => createReducers.js} (61%) diff --git a/frontend/src/AddArtist/AddNewArtist/AddNewArtistConnector.js b/frontend/src/AddArtist/AddNewArtist/AddNewArtistConnector.js index 8377244a8..50cc07cd2 100644 --- a/frontend/src/AddArtist/AddNewArtist/AddNewArtistConnector.js +++ b/frontend/src/AddArtist/AddNewArtist/AddNewArtistConnector.js @@ -10,7 +10,7 @@ import AddNewArtist from './AddNewArtist'; function createMapStateToProps() { return createSelector( (state) => state.addArtist, - (state) => state.routing.location, + (state) => state.router.location, (addArtist, location) => { const { params } = parseUrl(location.search); diff --git a/frontend/src/AddArtist/ImportArtist/SelectFolder/ImportArtistSelectFolderConnector.js b/frontend/src/AddArtist/ImportArtist/SelectFolder/ImportArtistSelectFolderConnector.js index 25fdca480..8354ed4da 100644 --- a/frontend/src/AddArtist/ImportArtist/SelectFolder/ImportArtistSelectFolderConnector.js +++ b/frontend/src/AddArtist/ImportArtist/SelectFolder/ImportArtistSelectFolderConnector.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; -import { push } from 'react-router-redux'; +import { push } from 'connected-react-router'; import createSystemStatusSelector from 'Store/Selectors/createSystemStatusSelector'; import { fetchRootFolders, addRootFolder } from 'Store/Actions/rootFolderActions'; import ImportArtistSelectFolder from './ImportArtistSelectFolder'; diff --git a/frontend/src/Album/Details/AlbumDetailsPageConnector.js b/frontend/src/Album/Details/AlbumDetailsPageConnector.js index 776fa8a6d..7f9f9b19a 100644 --- a/frontend/src/Album/Details/AlbumDetailsPageConnector.js +++ b/frontend/src/Album/Details/AlbumDetailsPageConnector.js @@ -2,7 +2,7 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; -import { push } from 'react-router-redux'; +import { push } from 'connected-react-router'; import NotFound from 'Components/NotFound'; import { fetchAlbums, clearAlbums } from 'Store/Actions/albumActions'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; diff --git a/frontend/src/App/App.js b/frontend/src/App/App.js index 2acfb1127..ecd3ea533 100644 --- a/frontend/src/App/App.js +++ b/frontend/src/App/App.js @@ -2,7 +2,7 @@ import PropTypes from 'prop-types'; import React from 'react'; import DocumentTitle from 'react-document-title'; import { Provider } from 'react-redux'; -import { ConnectedRouter } from 'react-router-redux'; +import { ConnectedRouter } from 'connected-react-router'; import PageConnector from 'Components/Page/PageConnector'; import AppRoutes from './AppRoutes'; diff --git a/frontend/src/Artist/Details/ArtistDetailsPageConnector.js b/frontend/src/Artist/Details/ArtistDetailsPageConnector.js index 184ca5c31..1b5831ae5 100644 --- a/frontend/src/Artist/Details/ArtistDetailsPageConnector.js +++ b/frontend/src/Artist/Details/ArtistDetailsPageConnector.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; -import { push } from 'react-router-redux'; +import { push } from 'connected-react-router'; import createAllArtistSelector from 'Store/Selectors/createAllArtistSelector'; import NotFound from 'Components/NotFound'; import ArtistDetailsConnector from './ArtistDetailsConnector'; diff --git a/frontend/src/Components/Page/Header/ArtistSearchInputConnector.js b/frontend/src/Components/Page/Header/ArtistSearchInputConnector.js index 55f1d9a25..1bb5acba3 100644 --- a/frontend/src/Components/Page/Header/ArtistSearchInputConnector.js +++ b/frontend/src/Components/Page/Header/ArtistSearchInputConnector.js @@ -1,5 +1,5 @@ import { connect } from 'react-redux'; -import { push } from 'react-router-redux'; +import { push } from 'connected-react-router'; import { createSelector } from 'reselect'; import jdu from 'jdu'; import createAllArtistSelector from 'Store/Selectors/createAllArtistSelector'; diff --git a/frontend/src/Settings/Quality/Definition/QualityDefinitionsConnector.js b/frontend/src/Settings/Quality/Definition/QualityDefinitionsConnector.js index c2f830afd..b7a36fe72 100644 --- a/frontend/src/Settings/Quality/Definition/QualityDefinitionsConnector.js +++ b/frontend/src/Settings/Quality/Definition/QualityDefinitionsConnector.js @@ -89,4 +89,4 @@ QualityDefinitionsConnector.propTypes = { onChildStateChange: PropTypes.func.isRequired }; -export default connect(createMapStateToProps, mapDispatchToProps, null, { withRef: true })(QualityDefinitionsConnector); +export default connect(createMapStateToProps, mapDispatchToProps, null)(QualityDefinitionsConnector); diff --git a/frontend/src/Store/Actions/reducers.js b/frontend/src/Store/Actions/createReducers.js similarity index 61% rename from frontend/src/Store/Actions/reducers.js rename to frontend/src/Store/Actions/createReducers.js index 0254cd226..11928e4d2 100644 --- a/frontend/src/Store/Actions/reducers.js +++ b/frontend/src/Store/Actions/createReducers.js @@ -1,13 +1,10 @@ import { combineReducers } from 'redux'; import { enableBatching } from 'redux-batched-actions'; -import { routerReducer } from 'react-router-redux'; import actions from 'Store/Actions'; +import { connectRouter } from 'connected-react-router'; const defaultState = {}; - -const reducers = { - routing: routerReducer -}; +const reducers = {}; actions.forEach((action) => { const section = action.section; @@ -17,4 +14,10 @@ actions.forEach((action) => { }); export { defaultState }; -export default enableBatching(combineReducers(reducers)); + +export default function(history) { + return enableBatching(combineReducers({ + ...reducers, + router: connectRouter(history) + })); +} diff --git a/frontend/src/Store/Middleware/middlewares.js b/frontend/src/Store/Middleware/middlewares.js index 59937bc45..119743b23 100644 --- a/frontend/src/Store/Middleware/middlewares.js +++ b/frontend/src/Store/Middleware/middlewares.js @@ -1,6 +1,6 @@ import { applyMiddleware, compose } from 'redux'; import thunk from 'redux-thunk'; -import { routerMiddleware } from 'react-router-redux'; +import { routerMiddleware } from 'connected-react-router'; import createSentryMiddleware from './createSentryMiddleware'; import createPersistState from './createPersistState'; diff --git a/frontend/src/Store/createAppStore.js b/frontend/src/Store/createAppStore.js index e05c80323..4fef265f1 100644 --- a/frontend/src/Store/createAppStore.js +++ b/frontend/src/Store/createAppStore.js @@ -1,10 +1,10 @@ import { createStore } from 'redux'; -import reducers, { defaultState } from 'Store/Actions/reducers'; +import createReducers, { defaultState } from 'Store/Actions/createReducers'; import middlewares from 'Store/Middleware/middlewares'; function createAppStore(history) { const appStore = createStore( - reducers, + createReducers(history), defaultState, middlewares(history) ); diff --git a/package.json b/package.json index 0ef003444..f063bca88 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "babel-preset-decorators-legacy": "1.0.0", "classnames": "2.2.6", "clipboard": "2.0.4", + "connected-react-router": "6.3.1", "create-react-class": "15.6.3", "css-loader": "0.28.11", "del": "3.0.0", @@ -97,9 +98,8 @@ "react-google-recaptcha": "1.0.5", "react-lazyload": "2.5.0", "react-measure": "1.4.7", - "react-redux": "5.1.1", + "react-redux": "6.0.1", "react-router-dom": "4.3.1", - "react-router-redux": "5.0.0-alpha.9", "react-slider": "0.11.2", "react-tether": "1.0.4", "react-text-truncate": "0.14.0", @@ -110,7 +110,7 @@ "redux-localstorage": "0.4.1", "redux-thunk": "2.3.0", "require-nocache": "1.0.0", - "reselect": "3.0.1", + "reselect": "4.0.0", "rimraf": "2.6.3", "run-sequence": "2.2.1", "signalr": "2.4.0", diff --git a/yarn.lock b/yarn.lock index 3bdea8e46..3c21980ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -728,7 +728,7 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.4.tgz#73d12ba819e365fcf7fd152aed56d6df97d21c83" integrity sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g== @@ -2093,6 +2093,14 @@ concat-with-sourcemaps@^1.0.0: dependencies: source-map "^0.6.1" +connected-react-router@6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/connected-react-router/-/connected-react-router-6.3.1.tgz#b68e505cca553ce9b6a179d4166cf43b948c85bf" + integrity sha512-nhuQiLOAQlCgkCypGSUhycgaqqTh2IUwVFvzw2y13v8JqB92yTk3yeAKG6X1b0IcD7S4gQizYbjgejf7DJjbyw== + dependencies: + immutable "^3.8.1" + seamless-immutable "^7.1.3" + console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" @@ -4155,7 +4163,7 @@ hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== -hoist-non-react-statics@^3.0.1, hoist-non-react-statics@^3.1.0: +hoist-non-react-statics@^3.0.1, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== @@ -4262,6 +4270,11 @@ ignore@^5.0.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.0.5.tgz#c663c548d6ce186fb33616a8ccb5d46e56bdbbf9" integrity sha512-kOC8IUb8HSDMVcYrDVezCxpJkzSQWTAzf3olpKM6o9rM5zpojx23O0Fl8Wr4+qJ6ZbPEHqf1fdwev/DS7v7pmA== +immutable@^3.8.1: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= + import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -6828,7 +6841,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types@15.7.2, prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: +prop-types@15.7.2, prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -7067,7 +7080,7 @@ react-google-recaptcha@1.0.5: prop-types "^15.5.0" react-async-script "^1.0.0" -react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.2: version "16.8.3" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.3.tgz#4ad8b029c2a718fc0cfc746c8d4e1b7221e5387d" integrity sha512-Y4rC1ZJmsxxkkPuMLwvKvlL1Zfpbcu+Bf4ZigkHup3v9EfdYhAlWAaVyA19olXq2o2mGn0w+dFKvk3pVVlYcIA== @@ -7077,7 +7090,7 @@ react-lazyload@2.5.0: resolved "https://registry.yarnpkg.com/react-lazyload/-/react-lazyload-2.5.0.tgz#7ed20bf0408dc684c10e808060e51d904cc0ab8d" integrity sha512-RkEwpJDqEUVkXodxBXAI/UDyGYUBTZCU9kdG0Lwmg8BIv8zDvP+exFwUzc7wP4HX6n33CCsz+cjG2FpwdRoxpw== -react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: +react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== @@ -7091,18 +7104,17 @@ react-measure@1.4.7: prop-types "^15.5.4" resize-observer-polyfill "^1.4.1" -react-redux@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.1.1.tgz#88e368682c7fa80e34e055cd7ac56f5936b0f52f" - integrity sha512-LE7Ned+cv5qe7tMV5BPYkGQ5Lpg8gzgItK07c67yHvJ8t0iaD9kPFPAli/mYkiyJYrs2pJgExR2ZgsGqlrOApg== +react-redux@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-6.0.1.tgz#0d423e2c1cb10ada87293d47e7de7c329623ba4d" + integrity sha512-T52I52Kxhbqy/6TEfBv85rQSDz6+Y28V/pf52vDWs1YRXG19mcFOGfHnY2HsNFHyhP+ST34Aih98fvt6tqwVcQ== dependencies: - "@babel/runtime" "^7.1.2" - hoist-non-react-statics "^3.1.0" + "@babel/runtime" "^7.3.1" + hoist-non-react-statics "^3.3.0" invariant "^2.2.4" - loose-envify "^1.1.0" - prop-types "^15.6.1" - react-is "^16.6.0" - react-lifecycles-compat "^3.0.0" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^16.8.2" react-router-dom@4.3.1: version "4.3.1" @@ -7116,16 +7128,7 @@ react-router-dom@4.3.1: react-router "^4.3.1" warning "^4.0.1" -react-router-redux@5.0.0-alpha.9: - version "5.0.0-alpha.9" - resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-5.0.0-alpha.9.tgz#825431516e0e6f1fd93b8807f6bd595e23ec3d10" - integrity sha512-euSgNIANnRXr4GydIuwA7RZCefrLQzIw5WdXspS8NPYbV+FxrKSS9MKG7U9vb6vsKHONnA4VxrVNWfnMUnUQAw== - 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" integrity sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg== @@ -7564,10 +7567,10 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" -reselect@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" - integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= +reselect@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" + integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== resize-observer-polyfill@^1.4.1: version "1.5.1" @@ -7800,6 +7803,11 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +seamless-immutable@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/seamless-immutable/-/seamless-immutable-7.1.4.tgz#6e9536def083ddc4dea0207d722e0e80d0f372f8" + integrity sha512-XiUO1QP4ki4E2PHegiGAlu6r82o5A+6tRh7IkGGTVg/h+UoeX4nFBeCGPOhb4CYjvkqsfm/TUtvOMYC1xmV30A== + section-iterator@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/section-iterator/-/section-iterator-2.0.0.tgz#bf444d7afeeb94ad43c39ad2fb26151627ccba2a"