refactor: redux
This commit is contained in:
parent
2a67740911
commit
85958c2d87
|
@ -28,7 +28,6 @@
|
||||||
"@reduxjs/toolkit": "^1.5.0",
|
"@reduxjs/toolkit": "^1.5.0",
|
||||||
"debug": "^4.3.3",
|
"debug": "^4.3.3",
|
||||||
"lodash.throttle": "^4.1.1",
|
"lodash.throttle": "^4.1.1",
|
||||||
"react-redux": "^7.2.2",
|
|
||||||
"reduce-reducers": "^1.0.4"
|
"reduce-reducers": "^1.0.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
@ -1,21 +1,19 @@
|
||||||
import {Flecks} from '@flecks/core';
|
import {Flecks} from '@flecks/core';
|
||||||
import {Provider} from 'react-redux';
|
|
||||||
|
|
||||||
import configureStore, {createReducer} from '../store';
|
import configureStore, {createReducer} from '../store';
|
||||||
import localStorageEnhancer from './local-storage';
|
import localStorageEnhancer from './local-storage';
|
||||||
|
|
||||||
export const hooks = {
|
export const hooks = {
|
||||||
'@flecks/react.providers': Flecks.priority(
|
'@flecks/web/client.up': Flecks.priority(
|
||||||
async (req, flecks) => {
|
async (flecks) => {
|
||||||
const slices = await flecks.invokeMergeUnique('@flecks/redux.slices');
|
const slices = await flecks.invokeMergeUnique('@flecks/redux.slices');
|
||||||
const reducer = createReducer(flecks, slices);
|
const reducer = createReducer(flecks, slices);
|
||||||
// Hydrate from server.
|
// Hydrate from server.
|
||||||
const {preloadedState} = flecks.get('@flecks/redux');
|
const {preloadedState} = flecks.get('@flecks/redux');
|
||||||
const store = await configureStore(flecks, reducer, {preloadedState});
|
const store = await configureStore(flecks, reducer, {preloadedState});
|
||||||
flecks.redux = store;
|
flecks.redux = store;
|
||||||
return [Provider, {store}];
|
|
||||||
},
|
},
|
||||||
{before: '@flecks/react/router/client'},
|
{before: '@flecks/react/client'},
|
||||||
),
|
),
|
||||||
'@flecks/redux.store': ({enhancers}) => {
|
'@flecks/redux.store': ({enhancers}) => {
|
||||||
// Hydrate from and subscribe to localStorage.
|
// Hydrate from and subscribe to localStorage.
|
||||||
|
|
|
@ -21,9 +21,7 @@ const localStorageEnhancer = (createStore) => (reducer, initialState, enhancer)
|
||||||
// Hydrate.
|
// Hydrate.
|
||||||
const storage = JSON.parse(window.localStorage.getItem('@flecks/redux/state'));
|
const storage = JSON.parse(window.localStorage.getItem('@flecks/redux/state'));
|
||||||
if (storage) {
|
if (storage) {
|
||||||
setTimeout(() => {
|
store.dispatch(hydrateLocalStorage(storage));
|
||||||
store.dispatch(hydrateLocalStorage(storage));
|
|
||||||
}, 0);
|
|
||||||
}
|
}
|
||||||
// Subscribes to changes.
|
// Subscribes to changes.
|
||||||
store.subscribe(
|
store.subscribe(
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
import {Flecks} from '@flecks/core';
|
import {Flecks} from '@flecks/core';
|
||||||
|
|
||||||
export * from '@reduxjs/toolkit';
|
export * from '@reduxjs/toolkit';
|
||||||
export * from 'react-redux';
|
|
||||||
|
|
||||||
export * from './actions';
|
export * from './actions';
|
||||||
|
|
||||||
export const hooks = {
|
export const hooks = {
|
||||||
'@flecks/socket.packets': Flecks.provide(require.context('./packets', false, /\.js$/)),
|
'@flecks/socket.packets': Flecks.provide(require.context('./packets', false, /\.js$/)),
|
||||||
'@flecks/web.config': async (req) => ({
|
'@flecks/web.config': async (req) => ({
|
||||||
preloadedState: req.redux.getState(),
|
preloadedState: req['@flecks/redux'].getState(),
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import {D, Flecks} from '@flecks/core';
|
import {D} from '@flecks/core';
|
||||||
import {Provider} from 'react-redux';
|
|
||||||
|
|
||||||
import {hydrateServer} from './actions';
|
import {hydrateServer} from './actions';
|
||||||
import createReducer from './store/create-reducer';
|
import createReducer from './store/create-reducer';
|
||||||
|
@ -10,10 +9,6 @@ const debugSilly = debug.extend('silly');
|
||||||
|
|
||||||
export const hooks = {
|
export const hooks = {
|
||||||
'@flecks/electron/server.extensions': (installer) => [installer.REDUX_DEVTOOLS],
|
'@flecks/electron/server.extensions': (installer) => [installer.REDUX_DEVTOOLS],
|
||||||
'@flecks/react.providers': Flecks.priority(
|
|
||||||
(req) => [Provider, {store: req.redux}],
|
|
||||||
{before: '@flecks/react/router/server'},
|
|
||||||
),
|
|
||||||
'@flecks/web/server.request.route': (flecks) => async (req, res, next) => {
|
'@flecks/web/server.request.route': (flecks) => async (req, res, next) => {
|
||||||
const slices = await flecks.invokeMergeUnique('@flecks/redux.slices');
|
const slices = await flecks.invokeMergeUnique('@flecks/redux.slices');
|
||||||
const reducer = createReducer(flecks, slices);
|
const reducer = createReducer(flecks, slices);
|
||||||
|
@ -27,7 +22,7 @@ export const hooks = {
|
||||||
Object.keys(slices),
|
Object.keys(slices),
|
||||||
preloadedState,
|
preloadedState,
|
||||||
);
|
);
|
||||||
req.redux = await configureStore(flecks, reducer, {preloadedState});
|
req['@flecks/redux'] = await configureStore(flecks, reducer, {preloadedState});
|
||||||
next();
|
next();
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user