Fixed: Restoring a backup with a different API didn't reload properly
This commit is contained in:
parent
2728bf79ca
commit
13ff2d4c70
|
@ -1,7 +1,9 @@
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { createAction } from 'redux-actions';
|
import { createAction } from 'redux-actions';
|
||||||
|
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
||||||
import getSectionState from 'Utilities/State/getSectionState';
|
import getSectionState from 'Utilities/State/getSectionState';
|
||||||
import updateSectionState from 'Utilities/State/updateSectionState';
|
import updateSectionState from 'Utilities/State/updateSectionState';
|
||||||
|
import { createThunk, handleThunks } from 'Store/thunks';
|
||||||
import createHandleActions from './Creators/createHandleActions';
|
import createHandleActions from './Creators/createHandleActions';
|
||||||
|
|
||||||
function getDimensions(width, height) {
|
function getDimensions(width, height) {
|
||||||
|
@ -22,6 +24,8 @@ function getDimensions(width, height) {
|
||||||
|
|
||||||
export const section = 'app';
|
export const section = 'app';
|
||||||
const messagesSection = 'app.messages';
|
const messagesSection = 'app.messages';
|
||||||
|
let abortPingServer = null;
|
||||||
|
let pingTimeout = null;
|
||||||
|
|
||||||
//
|
//
|
||||||
// State
|
// State
|
||||||
|
@ -50,6 +54,8 @@ export const SET_VERSION = 'app/setVersion';
|
||||||
export const SET_APP_VALUE = 'app/setAppValue';
|
export const SET_APP_VALUE = 'app/setAppValue';
|
||||||
export const SET_IS_SIDEBAR_VISIBLE = 'app/setIsSidebarVisible';
|
export const SET_IS_SIDEBAR_VISIBLE = 'app/setIsSidebarVisible';
|
||||||
|
|
||||||
|
export const PING_SERVER = 'app/pingServer';
|
||||||
|
|
||||||
//
|
//
|
||||||
// Action Creators
|
// Action Creators
|
||||||
|
|
||||||
|
@ -59,6 +65,70 @@ export const setIsSidebarVisible = createAction(SET_IS_SIDEBAR_VISIBLE);
|
||||||
export const setAppValue = createAction(SET_APP_VALUE);
|
export const setAppValue = createAction(SET_APP_VALUE);
|
||||||
export const showMessage = createAction(SHOW_MESSAGE);
|
export const showMessage = createAction(SHOW_MESSAGE);
|
||||||
export const hideMessage = createAction(HIDE_MESSAGE);
|
export const hideMessage = createAction(HIDE_MESSAGE);
|
||||||
|
export const pingServer = createThunk(PING_SERVER);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Helpers
|
||||||
|
|
||||||
|
function pingServerAfterTimeout(getState, dispatch) {
|
||||||
|
if (abortPingServer) {
|
||||||
|
abortPingServer();
|
||||||
|
abortPingServer = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pingTimeout) {
|
||||||
|
clearTimeout(pingTimeout);
|
||||||
|
pingTimeout = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
pingTimeout = setTimeout(() => {
|
||||||
|
if (!getState().isRestarting && getState().isConnected) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ajaxOptions = {
|
||||||
|
url: '/system/status',
|
||||||
|
method: 'GET',
|
||||||
|
contentType: 'application/json'
|
||||||
|
};
|
||||||
|
|
||||||
|
const { request, abortRequest } = createAjaxRequest(ajaxOptions);
|
||||||
|
|
||||||
|
abortPingServer = abortRequest;
|
||||||
|
|
||||||
|
request.done(() => {
|
||||||
|
abortPingServer = null;
|
||||||
|
pingTimeout = null;
|
||||||
|
|
||||||
|
dispatch(setAppValue({
|
||||||
|
isRestarting: false
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
request.fail((xhr) => {
|
||||||
|
abortPingServer = null;
|
||||||
|
pingTimeout = null;
|
||||||
|
|
||||||
|
// Unauthorized, but back online
|
||||||
|
if (xhr.status === 401) {
|
||||||
|
dispatch(setAppValue({
|
||||||
|
isRestarting: false
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
pingServerAfterTimeout(getState, dispatch);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Action Handlers
|
||||||
|
|
||||||
|
export const actionHandlers = handleThunks({
|
||||||
|
[PING_SERVER]: function(getState, payload, dispatch) {
|
||||||
|
pingServerAfterTimeout(getState, dispatch);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
//
|
//
|
||||||
// Reducers
|
// Reducers
|
||||||
|
@ -135,4 +205,3 @@ export const reducers = createHandleActions({
|
||||||
}
|
}
|
||||||
|
|
||||||
}, defaultState, section);
|
}, defaultState, section);
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ import createFetchHandler from './Creators/createFetchHandler';
|
||||||
import createRemoveItemHandler from './Creators/createRemoveItemHandler';
|
import createRemoveItemHandler from './Creators/createRemoveItemHandler';
|
||||||
import createHandleActions from './Creators/createHandleActions';
|
import createHandleActions from './Creators/createHandleActions';
|
||||||
import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers';
|
import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers';
|
||||||
|
import { pingServer } from './appActions';
|
||||||
import { set } from './baseActions';
|
import { set } from './baseActions';
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -351,6 +352,7 @@ export const actionHandlers = handleThunks({
|
||||||
|
|
||||||
promise.done(() => {
|
promise.done(() => {
|
||||||
dispatch(setAppValue({ isRestarting: true }));
|
dispatch(setAppValue({ isRestarting: true }));
|
||||||
|
dispatch(pingServer());
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue