Redux changes and refactoring

This commit is contained in:
Scott E. Graves
2019-06-06 13:00:19 -05:00
parent defbc58c7d
commit 6502657e3c
9 changed files with 193 additions and 161 deletions

View File

@@ -0,0 +1,3 @@
import {createAction} from 'redux-starter-kit';
export const setApplicationReady = createAction('common/setApplicationReady');

View File

@@ -1,6 +1,7 @@
import axios from 'axios';
import * as Constants from '../../constants';
import {createAction} from 'redux-starter-kit';
import {setApplicationReady} from '../actions/common_actions';
export const CLEAR_UI_UPGRADE = 'relver/clearUIUpgrade';
export const clearUIUpgrade = () => {
@@ -35,6 +36,59 @@ export const detectUIUpgrade = () => {
};
};
export const loadReleases = () => {
return (dispatch, getState) => {
const dispatchActions = (locationsLookup, versionLookup)=> {
const state = getState().relver;
const latestVersion = versionLookup[Constants.RELEASE_TYPES[state.Release]].length - 1;
let version = state.Version;
if ((version === -1) || !versionLookup[Constants.RELEASE_TYPES[state.Release]][version]) {
version = latestVersion;
}
dispatch(setReleaseData(locationsLookup, versionLookup));
if (version !== state.Version) {
dispatch(setActiveRelease(state.Release, version));
}
dispatch(setReleaseUpgradeAvailable((version !== latestVersion)));
dispatch(setApplicationReady(true));
};
axios
.get(Constants.RELEASES_URL)
.then(response => {
const appPlatform = getState().common.AppPlatform;
const versionLookup = {
Release: response.data.Versions.Release[appPlatform],
RC: response.data.Versions.RC[appPlatform],
Beta: response.data.Versions.Beta[appPlatform],
Alpha: response.data.Versions.Alpha[appPlatform],
};
const locationsLookup = {
...response.data.Locations[appPlatform],
};
localStorage.setItem('releases', JSON.stringify({
LocationsLookup: locationsLookup,
VersionLookup: versionLookup
}));
dispatchActions(locationsLookup, versionLookup);
}).catch(error => {
const releases = window.localStorage.getItem('releases');
if (releases && (releases.length > 0)) {
const obj = JSON.parse(releases);
const locationsLookup = obj.LocationsLookup;
const versionLookup = obj.VersionLookup;
dispatchActions(locationsLookup, versionLookup);
} else {
//this.setErrorState(error, null, true);
//TODO Display error
}
});
};
};
export const SET_ACTIVE_RELEASE = 'relver/setActiveRelease';
export const setActiveRelease = (release, version) => {
return {
@@ -47,4 +101,17 @@ export const setActiveRelease = (release, version) => {
};
export const setDismissUIUpgrade = createAction('relver/setDismissUIUpgrade');
export const SET_RELEASE_DATA = 'relver/setReleaseData';
export const setReleaseData = (locationsLookup, versionLookup)=> {
return {
type: SET_RELEASE_DATA,
payload: {
locations: locationsLookup,
versions: versionLookup,
}
}
};
export const setReleaseUpgradeAvailable = createAction('relver/setReleaseUpgradeAvailable');
export const setUIUpgradeData = createAction('relver/setUIUpgradeData');

View File

@@ -0,0 +1,18 @@
import {createReducer} from "redux-starter-kit";
import {setApplicationReady} from "../actions/common_actions";
export const createCommonReducer = (platform, appPlatform, version) => {
return createReducer({
AppReady: false,
AppPlatform: appPlatform,
Platform: platform,
Version: version,
}, {
[setApplicationReady]: (state, action) => {
return {
...state,
AppReady: action.payload,
};
}
});
};

View File

@@ -16,6 +16,7 @@ const versionLookup = Constants.RELEASE_TYPES.map(k=> {
export const releaseVersionReducer = createReducer({
LocationsLookup: {},
Release: 2,
ReleaseUpgradeAvailable: false,
UpgradeAvailable: false,
UpgradeDismissed: false,
Version: -1,
@@ -42,6 +43,19 @@ export const releaseVersionReducer = createReducer({
UpgradeDismissed: action.payload,
};
},
[Actions.SET_RELEASE_DATA]: (state, action) => {
return {
...state,
LocationsLookup: action.payload.locations,
VersionLookup: action.payload.versions,
};
},
[Actions.setReleaseUpgradeAvailable]: (state, action) => {
return {
...state,
ReleaseUpgradeAvailable: action.payload,
};
},
[Actions.setUIUpgradeData]: (state, action) => {
return {
...state,

View File

@@ -1,16 +1,9 @@
import {configureStore, createReducer, getDefaultMiddleware} from 'redux-starter-kit';
import {configureStore, getDefaultMiddleware} from 'redux-starter-kit';
import {createCommonReducer} from '../reducers/common_reducer';
import {mountReducer} from '../reducers/mount_reducer';
import {releaseVersionReducer} from '../reducers/release_version_reducer';
export default function createAppStore(platform, appPlatform, version) {
const createCommonReducer = () => {
return createReducer({
AppPlatform: appPlatform,
Platform: platform,
Version: version,
}, {});
};
const reducer = {
common: createCommonReducer(platform, appPlatform, version),
mounts: mountReducer,