Merge in DNS/adguard-home from ADG-9679 to master Squashed commit of the following: commit d2a759b4636b7ec931bfba625827c8b91c60c7e7 Merge: a5e7eea169726171f0Author: Igor Lobanov <bniwredyc@gmail.com> Date: Mon Apr 14 16:05:01 2025 +0200 Merge remote-tracking branch 'origin/master' into ADG-9679 commit a5e7eea16e6c29d25290ee79b1918df8af59bb51 Author: Igor Lobanov <bniwredyc@gmail.com> Date: Mon Apr 14 13:56:26 2025 +0200 vitest version bump commit 26620d1923d92b3a6eb9b80a364748f2f6f66030 Author: Igor Lobanov <bniwredyc@gmail.com> Date: Thu Apr 10 15:39:11 2025 +0200 formatting commit dbab03d1316241eaff0fc9c99d58a1933e415d2b Author: Igor Lobanov <bniwredyc@gmail.com> Date: Thu Apr 10 15:37:55 2025 +0200 rollback experiments commit 4427d984177786f7d905915cf8080166b45d7b46 Author: Igor Lobanov <bniwredyc@gmail.com> Date: Thu Apr 10 15:33:28 2025 +0200 checking dir structure commit 2cf7eed247d2869ed285dbee0bf32cf1d8df7e86 Author: Igor Lobanov <bniwredyc@gmail.com> Date: Thu Apr 10 15:21:11 2025 +0200 fixed docker image builder commit 8bd06f412fad9dd09df0e076879bd2cbd2f30d1a Author: Igor Lobanov <bniwredyc@gmail.com> Date: Thu Apr 10 15:18:33 2025 +0200 home-js-builder version bump commit 2a83bfeb322a20ec4278e359b18d0466966ec043 Author: Igor Lobanov <bniwredyc@gmail.com> Date: Thu Apr 10 15:17:38 2025 +0200 try to remove installation dependencies for e2e test (build is already available) commit 163e4581e83152f99058b798484468009e8e88b0 Author: Igor Lobanov <bniwredyc@gmail.com> Date: Thu Apr 10 13:52:27 2025 +0200 Revert "changed nslookup to dig in e2e tests" This reverts commit ecb68200ea28e295f504338cc59c711b5540022b. commit 15f7c5e2c77e230da77a0f9de0bd9cce8451da95 Author: Igor Lobanov <bniwredyc@gmail.com> Date: Thu Apr 10 13:45:40 2025 +0200 js-home-builder version bump commit ecb68200ea28e295f504338cc59c711b5540022b Author: Igor Lobanov <bniwredyc@gmail.com> Date: Wed Apr 9 15:07:39 2025 +0200 changed nslookup to dig in e2e tests commit 77c94a60be8839f3e0ad9d02e7dbb2ebd802d3d6 Author: Eugene Miroshkin <e.miroshkin@adguard.com> Date: Wed Apr 9 11:09:15 2025 +0300 revert timeouts commit 9dfebc8bcaf2cd3258b39fcbd0f67ab51c2eb46d Merge: 912f4cb7b1cc6c00e4Author: Eugene Miroshkin <e.miroshkin@adguard.com> Date: Wed Apr 9 11:02:19 2025 +0300 merge master commit 912f4cb7b71f02866244fe447ca0e7fbd2a015bb Author: Eugene Miroshkin <e.miroshkin@adguard.com> Date: Wed Apr 9 10:48:59 2025 +0300 cleanup code commit 9da200ebca5b001f4952f33d819d90c1938920ee Author: Eugene Miroshkin <e.miroshkin@adguard.com> Date: Thu Apr 3 17:39:20 2025 +0300 update tests commit 794e0bd0a92a41c4d3827b716eeab584a25bd3ed Author: Eugene Miroshkin <e.miroshkin@adguard.com> Date: Thu Mar 13 18:15:58 2025 +0300 cleanup commit 9a523b4e255dd24c0f640bc279924ed2c13509a9 Author: Eugene Miroshkin <e.miroshkin@adguard.com> Date: Thu Mar 13 18:04:34 2025 +0300 ADG-9679 add playwright test from python
75 lines
2.5 KiB
TypeScript
75 lines
2.5 KiB
TypeScript
import React, { useState } from 'react';
|
|
|
|
import { Link, useLocation } from 'react-router-dom';
|
|
import { shallowEqual, useSelector } from 'react-redux';
|
|
import { useTranslation } from 'react-i18next';
|
|
import classnames from 'classnames';
|
|
|
|
import Menu from './Menu';
|
|
|
|
import { Logo } from '../ui/svg/logo';
|
|
import './Header.css';
|
|
import { RootState } from '../../initialState';
|
|
|
|
const Header = () => {
|
|
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
|
const { t } = useTranslation();
|
|
|
|
const { protectionEnabled, processing, isCoreRunning, processingProfile, name } = useSelector(
|
|
(state: RootState) => state.dashboard,
|
|
shallowEqual,
|
|
);
|
|
|
|
const { pathname } = useLocation();
|
|
|
|
const toggleMenuOpen = () => {
|
|
setIsMenuOpen((isMenuOpen) => !isMenuOpen);
|
|
};
|
|
|
|
const closeMenu = () => {
|
|
setIsMenuOpen(false);
|
|
};
|
|
|
|
const badgeClass = classnames('badge dns-status', {
|
|
'badge-success': protectionEnabled,
|
|
'badge-danger': !protectionEnabled,
|
|
});
|
|
|
|
return (
|
|
<div className="header">
|
|
<div className="header__container">
|
|
<div className="header__row">
|
|
<div className="header-toggler d-lg-none ml-lg-0 collapsed" onClick={toggleMenuOpen}>
|
|
<span className="header-toggler-icon" />
|
|
</div>
|
|
|
|
<div className="header__column">
|
|
<div className="d-flex align-items-center">
|
|
<Link to="/" className="nav-link pl-0 pr-1">
|
|
<Logo className="header-brand-img" />
|
|
</Link>
|
|
{!processing && isCoreRunning && (
|
|
<span className={badgeClass}>{t(protectionEnabled ? 'on' : 'off')}</span>
|
|
)}
|
|
</div>
|
|
</div>
|
|
|
|
<Menu pathname={pathname} isMenuOpen={isMenuOpen} closeMenu={closeMenu} />
|
|
|
|
<div className="header__column">
|
|
<div className="header__right">
|
|
{!processingProfile && name && (
|
|
<a href="control/logout" className="btn btn-sm btn-outline-secondary" data-testid="sign_out">
|
|
{t('sign_out')}
|
|
</a>
|
|
)}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default Header;
|