Merge in DNS/adguard-home from 1333-protection-pause-1 to master Squashed commit of the following: commit 5ff98385bc5ff66e214d80782eb4dc41e344aa38 Merge: 97f94a540bc3ef89Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Mar 24 19:08:21 2023 +0700 Merge remote-tracking branch 'origin/master' into 1333-protection-pause-1 commit 97f94a5498ac221f88f2f7dfef4b255f4945329e Author: Arseny Lisin <a.lisin@adguard.com> Date: Fri Mar 24 13:03:20 2023 +0200 Fix protection timer bugs commit 1cc61af1996bd803f3fa638cb9e2388470072bf0 Merge: 5a144ea3 235ce458 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Mar 23 22:27:47 2023 +0700 Merge remote-tracking branch 'origin/1333-protection-pause-1' into 1333-protection-pause-1 commit 5a144ea3a48c3d0d5e57dd14232ab7a8e77a8c1e Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Mar 23 22:25:08 2023 +0700 dnsforward: imp code commit 235ce458a62b3152f36e32580ed0226a56580ec6 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Thu Mar 23 17:35:06 2023 +0300 dnsforward: imp locks commit 0ea3a0a176b810a2b3f0b307aa406fe1670c9219 Merge: 52f66810df61741fAuthor: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Mar 23 19:30:41 2023 +0700 Merge remote-tracking branch 'origin/master' into 1333-protection-pause-1 # Conflicts: # CHANGELOG.md # openapi/CHANGELOG.md commit 52f668109673286a50909c042e6352cd803e8eed Merge: 9a7eb7b3306c1983Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Mar 23 11:23:50 2023 +0700 Merge remote-tracking branch 'origin/master' into 1333-protection-pause-1 # Conflicts: # CHANGELOG.md # internal/dnsforward/http.go commit 9a7eb7b3ab2b5f6ad321aa3245d33839c3aa6fbd Author: Arseny Lisin <a.lisin@adguard.com> Date: Wed Mar 22 06:56:55 2023 +0200 Review fix commit 5612d51252ba91842bd6811baec1c91136bb3bf2 Merge: c0a918a5c3edab43Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Tue Mar 21 22:00:39 2023 +0700 Merge remote-tracking branch 'origin/master' into 1333-protection-pause-1 # Conflicts: # client/src/__locales/en.json commit c0a918a518ad9b37041aed159d215516258bc987 Author: Arseny Lisin <a.lisin@adguard.com> Date: Tue Mar 21 12:13:18 2023 +0200 Review fix commit 34faa61cc1e6210a612e7a2f4895a1504df37680 Author: Arseny Lisin <a.lisin@adguard.com> Date: Tue Mar 21 10:43:37 2023 +0200 Fix props to new api commit 158e582373863495f0e0ca177d7b365cc66ad671 Author: Arseny Lisin <a.lisin@adguard.com> Date: Mon Mar 20 18:44:34 2023 +0200 Review fix commit 9e8b8c3778b8e1dfad0d39e44f70886dfd3aeb9a Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Mar 20 22:31:28 2023 +0700 all: docs commit 761a203f53b535ca235cfe62f289bd0e02b90be2 Merge: d0b0723148431f8bAuthor: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Mar 20 22:26:13 2023 +0700 Merge remote-tracking branch 'origin/master' into 1333-protection-pause-1 commit d0b07231b6f29b534930f1fcfc82b4934c295ff8 Merge: ea448760a2053526Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Mar 13 13:00:52 2023 +0700 Merge remote-tracking branch 'origin/master' into 1333-protection-pause-1 # Conflicts: # CHANGELOG.md # client/src/components/App/index.css # internal/dnsforward/config.go commit ea4487608a9c81d25f155ff63fee7c9dcf21f448 Merge: dfd0f33fa556ce8fAuthor: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Tue Feb 21 11:54:27 2023 +0700 Merge remote-tracking branch 'origin/master' into 1333-protection-pause-1 # Conflicts: # CHANGELOG.md commit dfd0f33fb474d497cbc9237ee466276728eea397 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Tue Feb 21 11:51:40 2023 +0700 all: docs commit d36df96fba8c6d923faef85c198b6bd0743b7ee8 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Feb 20 12:41:49 2023 +0700 all: safesearch commit 60f2ceec563221337f34bb60baa96aa2b2429c40 Merge: 7c5144276f6ced33Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Feb 20 12:30:42 2023 +0700 Merge remote-tracking branch 'origin/master' into 1333-protection-pause-1 # Conflicts: # CHANGELOG.md commit 7c514427e77c5b09d8e148c78220a71046e68cd1 Merge: 0fa4ff994d295a38Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Feb 16 11:55:21 2023 +0700 Merge remote-tracking branch 'origin/master' into 1333-protection-pause-1 # Conflicts: # CHANGELOG.md ... and 26 more commits
219 lines
5.9 KiB
JavaScript
219 lines
5.9 KiB
JavaScript
import React, { useEffect } from 'react';
|
|
import { HashRouter, Route } from 'react-router-dom';
|
|
import LoadingBar from 'react-redux-loading-bar';
|
|
import { hot } from 'react-hot-loader/root';
|
|
|
|
import 'react-table/react-table.css';
|
|
import '../ui/Tabler.css';
|
|
import '../ui/ReactTable.css';
|
|
import './index.css';
|
|
|
|
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
|
|
|
|
import propTypes from 'prop-types';
|
|
import Toasts from '../Toasts';
|
|
import Footer from '../ui/Footer';
|
|
import Status from '../ui/Status';
|
|
import UpdateTopline from '../ui/UpdateTopline';
|
|
import UpdateOverlay from '../ui/UpdateOverlay';
|
|
import EncryptionTopline from '../ui/EncryptionTopline';
|
|
import Icons from '../ui/Icons';
|
|
import i18n from '../../i18n';
|
|
import Loading from '../ui/Loading';
|
|
import {
|
|
FILTERS_URLS,
|
|
MENU_URLS,
|
|
SETTINGS_URLS,
|
|
THEMES,
|
|
} from '../../helpers/constants';
|
|
import { getLogsUrlParams, setHtmlLangAttr, setUITheme } from '../../helpers/helpers';
|
|
import Header from '../Header';
|
|
import { changeLanguage, getDnsStatus } from '../../actions';
|
|
|
|
import Dashboard from '../../containers/Dashboard';
|
|
import SetupGuide from '../../containers/SetupGuide';
|
|
import Settings from '../../containers/Settings';
|
|
import Dns from '../../containers/Dns';
|
|
import Encryption from '../../containers/Encryption';
|
|
import Dhcp from '../Settings/Dhcp';
|
|
import Clients from '../../containers/Clients';
|
|
import DnsBlocklist from '../../containers/DnsBlocklist';
|
|
import DnsAllowlist from '../../containers/DnsAllowlist';
|
|
import DnsRewrites from '../../containers/DnsRewrites';
|
|
import CustomRules from '../../containers/CustomRules';
|
|
import Services from '../Filters/Services';
|
|
import Logs from '../Logs';
|
|
import ProtectionTimer from '../ProtectionTimer';
|
|
|
|
const ROUTES = [
|
|
{
|
|
path: MENU_URLS.root,
|
|
component: Dashboard,
|
|
exact: true,
|
|
},
|
|
{
|
|
path: [`${MENU_URLS.logs}${getLogsUrlParams(':search?', ':response_status?')}`, MENU_URLS.logs],
|
|
component: Logs,
|
|
},
|
|
{
|
|
path: MENU_URLS.guide,
|
|
component: SetupGuide,
|
|
},
|
|
{
|
|
path: SETTINGS_URLS.settings,
|
|
component: Settings,
|
|
},
|
|
{
|
|
path: SETTINGS_URLS.dns,
|
|
component: Dns,
|
|
},
|
|
{
|
|
path: SETTINGS_URLS.encryption,
|
|
component: Encryption,
|
|
},
|
|
{
|
|
path: SETTINGS_URLS.dhcp,
|
|
component: Dhcp,
|
|
},
|
|
{
|
|
path: SETTINGS_URLS.clients,
|
|
component: Clients,
|
|
},
|
|
{
|
|
path: FILTERS_URLS.dns_blocklists,
|
|
component: DnsBlocklist,
|
|
},
|
|
{
|
|
path: FILTERS_URLS.dns_allowlists,
|
|
component: DnsAllowlist,
|
|
},
|
|
{
|
|
path: FILTERS_URLS.dns_rewrites,
|
|
component: DnsRewrites,
|
|
},
|
|
{
|
|
path: FILTERS_URLS.custom_rules,
|
|
component: CustomRules,
|
|
},
|
|
{
|
|
path: FILTERS_URLS.blocked_services,
|
|
component: Services,
|
|
},
|
|
];
|
|
|
|
const renderRoute = ({ path, component, exact }, idx) => <Route
|
|
key={idx}
|
|
exact={exact}
|
|
path={path}
|
|
component={component}
|
|
/>;
|
|
|
|
const App = () => {
|
|
const dispatch = useDispatch();
|
|
const {
|
|
language,
|
|
isCoreRunning,
|
|
isUpdateAvailable,
|
|
processing,
|
|
theme,
|
|
} = useSelector((state) => state.dashboard, shallowEqual);
|
|
|
|
const { processing: processingEncryption } = useSelector((
|
|
state,
|
|
) => state.encryption, shallowEqual);
|
|
|
|
const updateAvailable = isCoreRunning && isUpdateAvailable;
|
|
|
|
useEffect(() => {
|
|
dispatch(getDnsStatus());
|
|
}, []);
|
|
|
|
const setLanguage = () => {
|
|
if (!processing) {
|
|
if (language) {
|
|
i18n.changeLanguage(language);
|
|
setHtmlLangAttr(language);
|
|
}
|
|
}
|
|
|
|
i18n.on('languageChanged', (lang) => {
|
|
dispatch(changeLanguage(lang));
|
|
});
|
|
};
|
|
|
|
useEffect(() => {
|
|
setLanguage();
|
|
}, [language]);
|
|
|
|
const handleAutoTheme = (e, accountTheme) => {
|
|
if (accountTheme !== THEMES.auto) {
|
|
return;
|
|
}
|
|
|
|
if (e.matches) {
|
|
setUITheme(THEMES.dark);
|
|
} else {
|
|
setUITheme(THEMES.light);
|
|
}
|
|
};
|
|
|
|
useEffect(() => {
|
|
if (theme !== THEMES.auto) {
|
|
setUITheme(theme);
|
|
|
|
return;
|
|
}
|
|
|
|
const colorSchemeMedia = window.matchMedia('(prefers-color-scheme: dark)');
|
|
const prefersDark = colorSchemeMedia.matches;
|
|
setUITheme(prefersDark ? THEMES.dark : THEMES.light);
|
|
|
|
if (colorSchemeMedia.addEventListener !== undefined) {
|
|
colorSchemeMedia.addEventListener('change', (e) => {
|
|
handleAutoTheme(e, theme);
|
|
});
|
|
} else {
|
|
// Deprecated addListener for older versions of Safari.
|
|
colorSchemeMedia.addListener((e) => {
|
|
handleAutoTheme(e, theme);
|
|
});
|
|
}
|
|
}, [theme]);
|
|
|
|
const reloadPage = () => {
|
|
window.location.reload();
|
|
};
|
|
|
|
return <HashRouter hashType="noslash">
|
|
{updateAvailable && <>
|
|
<UpdateTopline />
|
|
<UpdateOverlay />
|
|
</>}
|
|
{!processingEncryption && <EncryptionTopline />}
|
|
<LoadingBar className="loading-bar" updateTime={1000} />
|
|
<Header />
|
|
<ProtectionTimer />
|
|
<div className="container container--wrap pb-5">
|
|
{processing && <Loading />}
|
|
{!isCoreRunning && <div className="row row-cards">
|
|
<div className="col-lg-12">
|
|
<Status reloadPage={reloadPage} message="dns_start" />
|
|
<Loading />
|
|
</div>
|
|
</div>}
|
|
{!processing && isCoreRunning && ROUTES.map(renderRoute)}
|
|
</div>
|
|
<Footer />
|
|
<Toasts />
|
|
<Icons />
|
|
</HashRouter>;
|
|
};
|
|
|
|
renderRoute.propTypes = {
|
|
path: propTypes.oneOfType([propTypes.string, propTypes.arrayOf(propTypes.string)]).isRequired,
|
|
component: propTypes.element.isRequired,
|
|
exact: propTypes.bool,
|
|
};
|
|
|
|
export default hot(App);
|