From fb142d6bab22a39d19f2c41b24f899b59371c407 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Mon, 15 Oct 2018 18:21:36 +0400 Subject: Add redux persist expire and update dependencies --- package.json | 11 +++++++-- src/components/repository-grid/grid-item/index.js | 9 ++++--- src/components/repository-list/list-item/index.js | 8 ++++-- src/redux/github/transform.js | 30 +---------------------- src/store.js | 9 ++++++- yarn.lock | 9 +++++++ 6 files changed, 39 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index d9c0a90..20e352b 100644 --- a/package.json +++ b/package.json @@ -14,11 +14,12 @@ "react-redux": "^5.0.7", "react-router": "^4.3.1", "react-router-dom": "^4.3.1", - "react-scripts": "2.0.4", + "react-scripts": "2.0.5", "reactstrap": "^6.4.0", "redux": "^4.0.0", "redux-devtools-extension": "^2.13.5", "redux-persist": "^5.10.0", + "redux-persist-expire": "^1.0.1", "redux-thunk": "^2.3.0" }, "scripts": { @@ -32,5 +33,11 @@ "devDependencies": { "cross-env": "^5.2.0", "gh-pages": "^2.0.1" - } + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] } diff --git a/src/components/repository-grid/grid-item/index.js b/src/components/repository-grid/grid-item/index.js index ac7c9c2..582d348 100644 --- a/src/components/repository-grid/grid-item/index.js +++ b/src/components/repository-grid/grid-item/index.js @@ -13,7 +13,7 @@ class GridItem extends React.Component {
- +
{ @@ -29,12 +29,12 @@ class GridItem extends React.Component {
- + { this.props.repository.name }

- Built by · { this.props.repository.owner.login } · { moment(this.props.repository.created_at).format('MMMM D, YYYY') } + Built by · { this.props.repository.owner.login } · { moment(this.props.repository.created_at).format('MMMM D, YYYY') }

@@ -53,18 +53,21 @@ class GridItem extends React.Component { } { this.props.repository.stargazers_count.toLocaleString() } { this.props.repository.forks.toLocaleString() } { this.props.repository.watchers.toLocaleString() } diff --git a/src/components/repository-list/list-item/index.js b/src/components/repository-list/list-item/index.js index 1d9bcac..0a93ae6 100644 --- a/src/components/repository-list/list-item/index.js +++ b/src/components/repository-list/list-item/index.js @@ -14,12 +14,12 @@ class ListItem extends React.Component {

- + { this.props.repository.owner.login } / { this.props.repository.name }

-

Built by · { this.props.repository.owner.login } · { moment(this.props.repository.created_at).format('MMMM D YYYY') }

+

Built by · { this.props.repository.owner.login } · { moment(this.props.repository.created_at).format('MMMM D YYYY') }

{ this.props.repository.description || 'No description given.' }

@@ -37,18 +37,21 @@ class ListItem extends React.Component { } { this.props.repository.stargazers_count.toLocaleString() } { this.props.repository.forks.toLocaleString() } { this.props.repository.watchers.toLocaleString() } @@ -58,6 +61,7 @@ class ListItem extends React.Component { { inboundState = inboundState || {}; - // If given data does not have persistence configuration before - if (!inboundState.__persisted_at) { - inboundState = { - ...inboundState, - __persisted_at: moment() - }; - } - // Keep the first group only to avoid overflowing the storage if (inboundState.repositories && inboundState.repositories.length > 1) { inboundState = { @@ -37,25 +27,7 @@ const GithubTransform = createTransform( }, // transform state being rehydrated (outboundState, key) => { - outboundState = outboundState || {}; - - if (outboundState.__persisted_at) { - const startTime = moment(outboundState.__persisted_at); - const endTime = moment(); - - const duration = moment.duration(endTime.diff(startTime)); - const seconds = duration.asSeconds(); - - // If the state is more than one hour old - // reset it to initial state - if (seconds > 3600) { - return { - ...initialState - }; - } - } - - return outboundState; + return { ...outboundState }; }, // define which reducers this transform gets called for. { diff --git a/src/store.js b/src/store.js index c8e72b1..cab211a 100644 --- a/src/store.js +++ b/src/store.js @@ -4,8 +4,10 @@ import { persistReducer, persistStore } from 'redux-persist'; import { applyMiddleware, createStore } from 'redux'; import storage from 'redux-persist/lib/storage'; import thunk from 'redux-thunk'; +import expireReducer from 'redux-persist-expire'; import GithubTransform from './redux/github/transform'; +import githubState from './redux/github/reducer'; import rootReducer from './redux/reducers'; const persistedReducers = persistReducer( @@ -14,7 +16,12 @@ const persistedReducers = persistReducer( storage: storage, stateReconciler: autoMergeLevel2, transforms: [ - GithubTransform + GithubTransform, + expireReducer('github', { + expireSeconds: 3600, + expiredState: { ...githubState }, + autoExpire: true + }) ] }, rootReducer, diff --git a/yarn.lock b/yarn.lock index 28945c6..8aeb3e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8225,6 +8225,15 @@ redux-devtools-extension@^2.13.5: resolved "https://registry.yarnpkg.com/redux-devtools-extension/-/redux-devtools-extension-2.13.5.tgz#3ff34f7227acfeef3964194f5f7fc2765e5c5a39" integrity sha512-QQ9BRy77oURHMdGys9rfQcCQDzXZ1T4oW+eUyE5Cg7DNVau69HJzc4YNDMOmpi0Dzpi1zOQgQ2rUpgJta4Lfqg== +redux-persist-expire@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/redux-persist-expire/-/redux-persist-expire-1.0.1.tgz#3c5cacbf6d735ab60ac6de5ae47017d0bf4cad05" + integrity sha512-V8ra+OeHGKEBK78wo2vCcyEoTs0gWobzpXSVsO38szi3KjsxKxLJT4MC684RQ9hxFwtwvMzctw6zF2/F3luSow== + dependencies: + moment "^2.22.2" + redux "^4.0.0" + redux-persist "^5.10.0" + redux-persist@^5.10.0: version "5.10.0" resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-5.10.0.tgz#5d8d802c5571e55924efc1c3a9b23575283be62b" -- cgit v1.2.3