2022-04-06 23:41:57 +00:00
|
|
|
import { browser, dev } from "$app/env";
|
2022-03-04 21:31:05 +00:00
|
|
|
import { readable, get, derived } from "svelte/store";
|
2022-03-02 00:14:01 +00:00
|
|
|
import { compose, applyMiddleware } from "redux";
|
|
|
|
|
|
|
|
import shipDux from "../shipDux/index.js";
|
2022-04-07 00:53:39 +00:00
|
|
|
import { initial } from "lodash";
|
2022-03-02 00:14:01 +00:00
|
|
|
|
|
|
|
let composeEnhancers = compose;
|
|
|
|
|
2022-04-06 23:41:57 +00:00
|
|
|
if (dev && browser && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) {
|
|
|
|
composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;
|
2022-03-02 00:14:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export default () => {
|
2022-04-07 00:53:39 +00:00
|
|
|
|
|
|
|
let initialState = undefined;
|
|
|
|
|
|
|
|
if( browser ) {
|
|
|
|
const i =localStorage.getItem('ship');
|
|
|
|
|
|
|
|
if(i) initialState = JSON.parse(localStorage.getItem('ship'));
|
|
|
|
}
|
|
|
|
|
|
|
|
const duxStore = shipDux.createStore(initialState, (mw) =>
|
2022-04-06 23:41:57 +00:00
|
|
|
composeEnhancers(applyMiddleware(mw))
|
|
|
|
);
|
2022-03-02 00:14:01 +00:00
|
|
|
|
2022-04-06 23:41:57 +00:00
|
|
|
let previous;
|
|
|
|
const state = readable(duxStore.getState(), (set) => {
|
|
|
|
duxStore.subscribe(() => {
|
|
|
|
if (previous === duxStore.getState()) return;
|
|
|
|
previous = duxStore.getState();
|
|
|
|
set(previous);
|
2022-04-07 00:53:39 +00:00
|
|
|
if( browser ) localStorage.setItem('ship', JSON.stringify(previous));
|
2022-04-06 23:41:57 +00:00
|
|
|
});
|
2022-03-02 00:14:01 +00:00
|
|
|
});
|
|
|
|
|
2022-04-06 23:41:57 +00:00
|
|
|
return {
|
|
|
|
dispatch: duxStore.dispatch,
|
|
|
|
state,
|
|
|
|
shipMass: derived(state, (state) => state.reqs.mass),
|
|
|
|
};
|
2022-03-02 00:14:01 +00:00
|
|
|
};
|