Handle settings errors

This commit is contained in:
Ildar Kamalov 2018-09-14 16:41:34 +03:00
parent 828bb40084
commit 22a5abb7b8
2 changed files with 52 additions and 53 deletions

View File

@ -14,35 +14,45 @@ export const toggleSettingStatus = createAction('SETTING_STATUS_TOGGLE');
export const showSettingsFailure = createAction('SETTINGS_FAILURE_SHOW'); export const showSettingsFailure = createAction('SETTINGS_FAILURE_SHOW');
export const toggleSetting = (settingKey, status) => async (dispatch) => { export const toggleSetting = (settingKey, status) => async (dispatch) => {
let successMessage = '';
try {
switch (settingKey) { switch (settingKey) {
case 'filtering': case 'filtering':
if (status) { if (status) {
successMessage = 'Disabled filtering';
await apiClient.disableFiltering(); await apiClient.disableFiltering();
} else { } else {
successMessage = 'Enabled filtering';
await apiClient.enableFiltering(); await apiClient.enableFiltering();
} }
dispatch(toggleSettingStatus({ settingKey })); dispatch(toggleSettingStatus({ settingKey }));
break; break;
case 'safebrowsing': case 'safebrowsing':
if (status) { if (status) {
successMessage = 'Disabled safebrowsing';
await apiClient.disableSafebrowsing(); await apiClient.disableSafebrowsing();
} else { } else {
successMessage = 'Enabled safebrowsing';
await apiClient.enableSafebrowsing(); await apiClient.enableSafebrowsing();
} }
dispatch(toggleSettingStatus({ settingKey })); dispatch(toggleSettingStatus({ settingKey }));
break; break;
case 'parental': case 'parental':
if (status) { if (status) {
successMessage = 'Disabled parental control';
await apiClient.disableParentalControl(); await apiClient.disableParentalControl();
} else { } else {
successMessage = 'Enabled parental control';
await apiClient.enableParentalControl(); await apiClient.enableParentalControl();
} }
dispatch(toggleSettingStatus({ settingKey })); dispatch(toggleSettingStatus({ settingKey }));
break; break;
case 'safesearch': case 'safesearch':
if (status) { if (status) {
successMessage = 'Disabled safe search';
await apiClient.disableSafesearch(); await apiClient.disableSafesearch();
} else { } else {
successMessage = 'Enabled safe search';
await apiClient.enableSafesearch(); await apiClient.enableSafesearch();
} }
dispatch(toggleSettingStatus({ settingKey })); dispatch(toggleSettingStatus({ settingKey }));
@ -50,6 +60,10 @@ export const toggleSetting = (settingKey, status) => async (dispatch) => {
default: default:
break; break;
} }
dispatch(addSuccessToast(successMessage));
} catch (error) {
dispatch(addErrorToast({ error }));
}
}; };
export const initSettingsRequest = createAction('SETTINGS_INIT_REQUEST'); export const initSettingsRequest = createAction('SETTINGS_INIT_REQUEST');
@ -77,7 +91,6 @@ export const initSettings = settingsList => async (dispatch) => {
}; };
dispatch(initSettingsSuccess({ settingsList: newSettingsList })); dispatch(initSettingsSuccess({ settingsList: newSettingsList }));
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(initSettingsFailure()); dispatch(initSettingsFailure());
} }
@ -93,7 +106,6 @@ export const getDnsStatus = () => async (dispatch) => {
const dnsStatus = await apiClient.getGlobalStatus(); const dnsStatus = await apiClient.getGlobalStatus();
dispatch(dnsStatusSuccess(dnsStatus)); dispatch(dnsStatusSuccess(dnsStatus));
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(initSettingsFailure()); dispatch(initSettingsFailure());
} }
@ -109,7 +121,6 @@ export const enableDns = () => async (dispatch) => {
await apiClient.startGlobalFiltering(); await apiClient.startGlobalFiltering();
dispatch(enableDnsSuccess()); dispatch(enableDnsSuccess());
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(enableDnsFailure()); dispatch(enableDnsFailure());
} }
@ -125,7 +136,6 @@ export const disableDns = () => async (dispatch) => {
await apiClient.stopGlobalFiltering(); await apiClient.stopGlobalFiltering();
dispatch(disableDnsSuccess()); dispatch(disableDnsSuccess());
} catch (error) { } catch (error) {
console.error(error);
dispatch(disableDnsFailure(error)); dispatch(disableDnsFailure(error));
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
} }
@ -147,7 +157,6 @@ export const getStats = () => async (dispatch) => {
dispatch(getStatsSuccess(processedStats)); dispatch(getStatsSuccess(processedStats));
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(getStatsFailure()); dispatch(getStatsFailure());
} }
@ -167,7 +176,6 @@ export const getTopStats = () => async (dispatch, getState) => {
const stats = await apiClient.getGlobalStatsTop(); const stats = await apiClient.getGlobalStatsTop();
dispatch(getTopStatsSuccess(stats)); dispatch(getTopStatsSuccess(stats));
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(getTopStatsFailure(error)); dispatch(getTopStatsFailure(error));
} }
@ -189,7 +197,6 @@ export const getLogs = () => async (dispatch, getState) => {
const logs = normalizeLogs(await apiClient.getQueryLog()); const logs = normalizeLogs(await apiClient.getQueryLog());
dispatch(getLogsSuccess(logs)); dispatch(getLogsSuccess(logs));
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(getLogsFailure(error)); dispatch(getLogsFailure(error));
} }
@ -213,7 +220,6 @@ export const toggleLogStatus = queryLogEnabled => async (dispatch) => {
await toggleMethod(); await toggleMethod();
dispatch(toggleLogStatusSuccess()); dispatch(toggleLogStatusSuccess());
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(toggleLogStatusFailure()); dispatch(toggleLogStatusFailure());
} }
@ -229,7 +235,6 @@ export const setRules = rules => async (dispatch) => {
await apiClient.setRules(rules); await apiClient.setRules(rules);
dispatch(setRulesSuccess()); dispatch(setRulesSuccess());
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(setRulesFailure()); dispatch(setRulesFailure());
} }
@ -245,7 +250,6 @@ export const getFilteringStatus = () => async (dispatch) => {
const status = await apiClient.getFilteringStatus(); const status = await apiClient.getFilteringStatus();
dispatch(getFilteringStatusSuccess({ status: normalizeFilteringStatus(status) })); dispatch(getFilteringStatusSuccess({ status: normalizeFilteringStatus(status) }));
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(getFilteringStatusFailure()); dispatch(getFilteringStatusFailure());
} }
@ -272,7 +276,6 @@ export const toggleFilterStatus = url => async (dispatch, getState) => {
dispatch(toggleFilterSuccess(url)); dispatch(toggleFilterSuccess(url));
dispatch(getFilteringStatus()); dispatch(getFilteringStatus());
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(toggleFilterFailure()); dispatch(toggleFilterFailure());
} }
@ -289,7 +292,6 @@ export const refreshFilters = () => async (dispatch) => {
dispatch(refreshFiltersSuccess); dispatch(refreshFiltersSuccess);
dispatch(getFilteringStatus()); dispatch(getFilteringStatus());
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(refreshFiltersFailure()); dispatch(refreshFiltersFailure());
} }
@ -308,7 +310,6 @@ export const getStatsHistory = () => async (dispatch) => {
const normalizedHistory = normalizeHistory(statsHistory); const normalizedHistory = normalizeHistory(statsHistory);
dispatch(getStatsHistorySuccess(normalizedHistory)); dispatch(getStatsHistorySuccess(normalizedHistory));
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(getStatsHistoryFailure()); dispatch(getStatsHistoryFailure());
} }
@ -325,7 +326,6 @@ export const addFilter = url => async (dispatch) => {
dispatch(addFilterSuccess(url)); dispatch(addFilterSuccess(url));
dispatch(getFilteringStatus()); dispatch(getFilteringStatus());
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(addFilterFailure()); dispatch(addFilterFailure());
} }
@ -343,7 +343,6 @@ export const removeFilter = url => async (dispatch) => {
dispatch(removeFilterSuccess(url)); dispatch(removeFilterSuccess(url));
dispatch(getFilteringStatus()); dispatch(getFilteringStatus());
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(removeFilterFailure()); dispatch(removeFilterFailure());
} }
@ -363,7 +362,6 @@ export const downloadQueryLog = () => async (dispatch) => {
data = await apiClient.downloadQueryLog(); data = await apiClient.downloadQueryLog();
dispatch(downloadQueryLogSuccess()); dispatch(downloadQueryLogSuccess());
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(downloadQueryLogFailure()); dispatch(downloadQueryLogFailure());
} }
@ -381,7 +379,6 @@ export const setUpstream = url => async (dispatch) => {
await apiClient.setUpstream(url); await apiClient.setUpstream(url);
dispatch(setUpstreamSuccess()); dispatch(setUpstreamSuccess());
} catch (error) { } catch (error) {
console.error(error);
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(setUpstreamFailure()); dispatch(setUpstreamFailure());
} }

View File

@ -3,9 +3,11 @@ import PropTypes from 'prop-types';
class Toast extends Component { class Toast extends Component {
componentDidMount() { componentDidMount() {
const timeoutTime = this.props.type === 'error' ? 30000 : 5000;
setTimeout(() => { setTimeout(() => {
this.props.removeToast(this.props.id); this.props.removeToast(this.props.id);
}, 30000); }, timeoutTime);
} }
shouldComponentUpdate() { shouldComponentUpdate() {