Close #1597 Squashed commit of the following: commit 1eb89586dd71260e561420fe669abc8b56a506a1 Author: ArtemBaskal <a.baskal@adguard.com> Date: Wed May 20 14:54:10 2020 +0300 Fix translation in install options commit 1ebdc9ebfe12a609f978e47db6505c7095b10f7e Author: ArtemBaskal <a.baskal@adguard.com> Date: Wed May 20 13:11:34 2020 +0300 Remove commented code commit 2a8302c65a2a3cf7b6b1596115d1153dac32a794 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue May 19 19:02:49 2020 +0300 Update i18n packages, add development browserlist, downgrade eslint to match peerDepencancies version commit 3fcf73fb14cd9da508522d1a300b66af24da95e5 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue May 19 17:30:37 2020 +0300 Remove all unused dependencies commit e761810e3e54e188ada41245bdce7414cd0f03e8 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue May 19 16:35:24 2020 +0300 Remove unused dependencies commit d89d27da6befcaabcdc12bf5e7e94cbb24140010 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue May 19 16:14:09 2020 +0300 Update regular dependencies commit d2dfd01233d059870d5173ffd748cf61a477936f Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue May 19 15:34:10 2020 +0300 Update all dev dependancies commit 02b6fb480e9d310039fbe9b7aae062a41128f070 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue May 19 14:14:44 2020 +0300 Update all postcss packages commit 5e1fa5f99ad75f77e5e429b28ee1ca0b5e65a9a0 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue May 19 12:45:02 2020 +0300 Prevent git from converting linebreaks in .js files commit 0b9b3b0dccd47cfa50c9531fb61729e6b5a04523 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue May 19 12:43:01 2020 +0300 Prevent git from converting linebreaks in .js files commit 18b7495e9ef7130b1ac4dbba84c54127d16c6350 Author: ArtemBaskal <a.baskal@adguard.com> Date: Tue May 19 12:24:47 2020 +0300 Remove linebreak-style eslint rule commit df893dec53adebb1d662fe805fab508fd4ed5e06 Author: ArtemBaskal <a.baskal@adguard.com> Date: Mon May 18 20:55:47 2020 +0300 Add prop types commit 36178ecfc5c7fa11a6ee08d7705ca8560941af40 Author: ArtemBaskal <a.baskal@adguard.com> Date: Mon May 18 18:52:07 2020 +0300 Update eslint and babel, fix eslint warnings commit f045b4a2e6b9b78f7e88e3b5d1419c29966a8230 Author: ArtemBaskal <a.baskal@adguard.com> Date: Mon May 18 16:45:49 2020 +0300 Update css loading webpack rules commit 247fa1ed548ef0706a03fdada8309c1454d191f8 Author: ArtemBaskal <a.baskal@adguard.com> Date: Sat May 16 16:13:49 2020 +0300 Suppress linebreak-style eslint error for Windows commit d6499aac507100d6918c849c06d739d80f2229f0 Author: ArtemBaskal <a.baskal@adguard.com> Date: Sat May 16 14:55:07 2020 +0300 Suppress eslint exit code commit ae2d6c614ea23a90d515168f8752e959298894ef Author: ArtemBaskal <a.baskal@adguard.com> Date: Sat May 16 14:05:18 2020 +0300 Edit css file warnings commit 60675050f2a5baebc679fc05da7e033e5c740d90 Author: ArtemBaskal <a.baskal@adguard.com> Date: Sat May 16 13:10:26 2020 +0300 Remove uglifyjs plugin commit a27806434dd8672e71a26c7a2e810d77e5e229fa Author: ArtemBaskal <a.baskal@adguard.com> Date: Sat May 16 01:29:17 2020 +0300 Fix DefinePlugin value commit 8f2966ca59195c2f70bca5072d20515d536f42a6 Author: ArtemBaskal <a.baskal@adguard.com> Date: Sat May 16 01:05:03 2020 +0300 Update webpack
149 lines
5.7 KiB
JavaScript
149 lines
5.7 KiB
JavaScript
import { createAction } from 'redux-actions';
|
|
|
|
import apiClient from '../api/Api';
|
|
import { normalizeLogs, getParamsForClientsSearch, addClientInfo } from '../helpers/helpers';
|
|
import { TABLE_DEFAULT_PAGE_SIZE } from '../helpers/constants';
|
|
import { addErrorToast, addSuccessToast } from './toasts';
|
|
|
|
const getLogsWithParams = async (config) => {
|
|
const { older_than, filter, ...values } = config;
|
|
const rawLogs = await apiClient.getQueryLog({ ...filter, older_than });
|
|
const { data, oldest } = rawLogs;
|
|
const logs = normalizeLogs(data);
|
|
const clientsParams = getParamsForClientsSearch(logs, 'client');
|
|
const clients = await apiClient.findClients(clientsParams);
|
|
const logsWithClientInfo = addClientInfo(logs, clients, 'client');
|
|
|
|
return {
|
|
logs: logsWithClientInfo, oldest, older_than, filter, ...values,
|
|
};
|
|
};
|
|
|
|
export const getAdditionalLogsRequest = createAction('GET_ADDITIONAL_LOGS_REQUEST');
|
|
export const getAdditionalLogsFailure = createAction('GET_ADDITIONAL_LOGS_FAILURE');
|
|
export const getAdditionalLogsSuccess = createAction('GET_ADDITIONAL_LOGS_SUCCESS');
|
|
|
|
const checkFilteredLogs = async (data, filter, dispatch, total) => {
|
|
const { logs, oldest } = data;
|
|
const totalData = total || { logs };
|
|
|
|
const needToGetAdditionalLogs = (logs.length < TABLE_DEFAULT_PAGE_SIZE
|
|
|| totalData.logs.length < TABLE_DEFAULT_PAGE_SIZE)
|
|
&& oldest !== '';
|
|
|
|
if (needToGetAdditionalLogs) {
|
|
dispatch(getAdditionalLogsRequest());
|
|
|
|
try {
|
|
const additionalLogs = await getLogsWithParams({ older_than: oldest, filter });
|
|
if (additionalLogs.oldest.length > 0) {
|
|
return await checkFilteredLogs(additionalLogs, filter, dispatch, {
|
|
logs: [...totalData.logs, ...additionalLogs.logs],
|
|
oldest: additionalLogs.oldest,
|
|
});
|
|
}
|
|
dispatch(getAdditionalLogsSuccess());
|
|
return totalData;
|
|
} catch (error) {
|
|
dispatch(addErrorToast({ error }));
|
|
dispatch(getAdditionalLogsFailure(error));
|
|
}
|
|
}
|
|
|
|
dispatch(getAdditionalLogsSuccess());
|
|
return totalData;
|
|
};
|
|
|
|
export const setLogsPagination = createAction('LOGS_PAGINATION');
|
|
export const setLogsPage = createAction('SET_LOG_PAGE');
|
|
|
|
export const getLogsRequest = createAction('GET_LOGS_REQUEST');
|
|
export const getLogsFailure = createAction('GET_LOGS_FAILURE');
|
|
export const getLogsSuccess = createAction('GET_LOGS_SUCCESS');
|
|
|
|
export const getLogs = (config) => async (dispatch, getState) => {
|
|
dispatch(getLogsRequest());
|
|
try {
|
|
const { isFiltered, filter, page } = getState().queryLogs;
|
|
const data = await getLogsWithParams({ ...config, filter });
|
|
|
|
if (isFiltered) {
|
|
const additionalData = await checkFilteredLogs(data, filter, dispatch);
|
|
const updatedData = additionalData.logs ? { ...data, ...additionalData } : data;
|
|
dispatch(getLogsSuccess(updatedData));
|
|
dispatch(setLogsPagination({ page, pageSize: TABLE_DEFAULT_PAGE_SIZE }));
|
|
} else {
|
|
dispatch(getLogsSuccess(data));
|
|
}
|
|
} catch (error) {
|
|
dispatch(addErrorToast({ error }));
|
|
dispatch(getLogsFailure(error));
|
|
}
|
|
};
|
|
|
|
export const setLogsFilterRequest = createAction('SET_LOGS_FILTER_REQUEST');
|
|
export const setLogsFilterFailure = createAction('SET_LOGS_FILTER_FAILURE');
|
|
export const setLogsFilterSuccess = createAction('SET_LOGS_FILTER_SUCCESS');
|
|
|
|
export const setLogsFilter = (filter) => async (dispatch) => {
|
|
dispatch(setLogsFilterRequest());
|
|
try {
|
|
const data = await getLogsWithParams({ older_than: '', filter });
|
|
const additionalData = await checkFilteredLogs(data, filter, dispatch);
|
|
const updatedData = additionalData.logs ? { ...data, ...additionalData } : data;
|
|
|
|
dispatch(setLogsFilterSuccess({ ...updatedData, filter }));
|
|
dispatch(setLogsPage(0));
|
|
} catch (error) {
|
|
dispatch(addErrorToast({ error }));
|
|
dispatch(setLogsFilterFailure(error));
|
|
}
|
|
};
|
|
|
|
export const clearLogsRequest = createAction('CLEAR_LOGS_REQUEST');
|
|
export const clearLogsFailure = createAction('CLEAR_LOGS_FAILURE');
|
|
export const clearLogsSuccess = createAction('CLEAR_LOGS_SUCCESS');
|
|
|
|
export const clearLogs = () => async (dispatch) => {
|
|
dispatch(clearLogsRequest());
|
|
try {
|
|
await apiClient.clearQueryLog();
|
|
dispatch(clearLogsSuccess());
|
|
dispatch(addSuccessToast('query_log_cleared'));
|
|
} catch (error) {
|
|
dispatch(addErrorToast({ error }));
|
|
dispatch(clearLogsFailure(error));
|
|
}
|
|
};
|
|
|
|
export const getLogsConfigRequest = createAction('GET_LOGS_CONFIG_REQUEST');
|
|
export const getLogsConfigFailure = createAction('GET_LOGS_CONFIG_FAILURE');
|
|
export const getLogsConfigSuccess = createAction('GET_LOGS_CONFIG_SUCCESS');
|
|
|
|
export const getLogsConfig = () => async (dispatch) => {
|
|
dispatch(getLogsConfigRequest());
|
|
try {
|
|
const data = await apiClient.getQueryLogInfo();
|
|
dispatch(getLogsConfigSuccess(data));
|
|
} catch (error) {
|
|
dispatch(addErrorToast({ error }));
|
|
dispatch(getLogsConfigFailure());
|
|
}
|
|
};
|
|
|
|
export const setLogsConfigRequest = createAction('SET_LOGS_CONFIG_REQUEST');
|
|
export const setLogsConfigFailure = createAction('SET_LOGS_CONFIG_FAILURE');
|
|
export const setLogsConfigSuccess = createAction('SET_LOGS_CONFIG_SUCCESS');
|
|
|
|
export const setLogsConfig = (config) => async (dispatch) => {
|
|
dispatch(setLogsConfigRequest());
|
|
try {
|
|
await apiClient.setQueryLogConfig(config);
|
|
dispatch(addSuccessToast('config_successfully_saved'));
|
|
dispatch(setLogsConfigSuccess(config));
|
|
} catch (error) {
|
|
dispatch(addErrorToast({ error }));
|
|
dispatch(setLogsConfigFailure());
|
|
}
|
|
};
|