added advertising

This commit is contained in:
SlimusMinus
2026-09-23 23:38:54 +03:00
parent 3661985a6a
commit 4e20315998
33 changed files with 3351 additions and 18 deletions

View File

@@ -9,7 +9,10 @@ import { useTheme } from "../context/ThemeContext";
import { useUnread } from "../context/UnreadContext";
import { useLanguageToggle } from "../hooks/useLanguageToggle";
import { useTranslation } from 'react-i18next';
import { useAuthContext } from "../context/AuthContext";
import { useIsDesktop } from "../hooks/useIsDesktop";
import SupportModal from "./SupportModal";
import UploadAdModal from "./UploadAdModal";
import ProfileAvatar from "./profile/ProfileAvatar";
import NahodkaLogo from "./MainNahodkaLogo";
@@ -28,11 +31,16 @@ export default function Sidebar({
profileData,
}) {
const navigate = useNavigate();
const { isAdmin } = useAuthContext();
// Админ-пункты (реклама) показываем только в десктоп-раскладке:
// на мобильном их не должно быть вообще (ни в drawer-меню).
const isDesktop = useIsDesktop();
const { theme, toggle: toggleTheme } = useTheme();
const { totalUnread } = useUnread();
const { t } = useTranslation();
const { language, toggleLanguage } = useLanguageToggle();
const [supportOpen, setSupportOpen] = useState(false);
const [uploadAdOpen, setUploadAdOpen] = useState(false);
const HelpIcon = NavIcons.help;
const handleNavItem = (itemKey) => {
@@ -100,6 +108,31 @@ export default function Sidebar({
</button>
);
})}
{isAdmin && isDesktop && (
<>
<div className="f-sb-divider" />
<button
type="button"
className="f-sb-item"
onClick={() => {
setUploadAdOpen(true);
onClose();
}}
>
{NavIcons.megaphone()} {t('admin.uploadAd')}
</button>
<button
type="button"
className="f-sb-item"
onClick={() => {
navigate("/admin/ads");
onClose();
}}
>
{NavIcons.grid()} {t('adminPanel.campaignsNav')}
</button>
</>
)}
</nav>
<div className="f-sb-bottom">
{NAV_BOTTOM.map(({ icon, key: itemKey, labelKey }) => {
@@ -164,6 +197,7 @@ export default function Sidebar({
</div>
</div>
{supportOpen && <SupportModal onClose={() => setSupportOpen(false)} />}
{uploadAdOpen && <UploadAdModal onClose={() => setUploadAdOpen(false)} />}
</>
);
}