Handled loading server in just one place, and added error handling for loading servers

This commit is contained in:
Alejandro Celaya
2020-03-08 10:00:25 +01:00
parent f4cc8d3a0c
commit c8d682cc98
5 changed files with 53 additions and 31 deletions

View File

@@ -21,20 +21,37 @@ const versionToSemVer = pipe(
export const resetSelectedServer = createAction(RESET_SELECTED_SERVER);
export const selectServer = ({ findServerById }, buildShlinkApiClient) => (serverId) => async (dispatch) => {
dispatch(resetSelectedServer());
dispatch(resetShortUrlParams());
const selectedServer = findServerById(serverId);
const { health } = buildShlinkApiClient(selectedServer);
const { version } = await health().catch(() => MIN_FALLBACK_VERSION);
dispatch({
type: SELECT_SERVER,
selectedServer: {
...selectedServer,
version: versionToSemVer(version),
printableVersion: versionToPrintable(version),
},
});
if (!selectedServer) {
dispatch({
type: SELECT_SERVER,
selectedServer: { serverNotFound: true },
});
return;
}
try {
const { health } = buildShlinkApiClient(selectedServer);
const { version } = await health();
dispatch({
type: SELECT_SERVER,
selectedServer: {
...selectedServer,
version: versionToSemVer(version),
printableVersion: versionToPrintable(version),
},
});
} catch (e) {
dispatch({
type: SELECT_SERVER,
selectedServer: { serverNotReachable: true },
});
}
};
export default handleActions({