diff --git a/src/app/(dashboard)/peers/page.tsx b/src/app/(dashboard)/peers/page.tsx index 5b4d75a..0561786 100644 --- a/src/app/(dashboard)/peers/page.tsx +++ b/src/app/(dashboard)/peers/page.tsx @@ -22,7 +22,7 @@ export default function Peers() { return ( {permission?.dashboard_view === "blocked" ? ( - + ) : ( )} @@ -82,11 +82,11 @@ function PeersView() { ); } -function PeersDefaultView() { +function PeersBlockedView() { return (
-

Add new peer to your network

+

Add new device to your network

To get started, install NetBird and log in using your email account. After that you should be connected. If you have further questions diff --git a/src/components/ui/UserDropdown.tsx b/src/components/ui/UserDropdown.tsx index 4097852..c69d23e 100644 --- a/src/components/ui/UserDropdown.tsx +++ b/src/components/ui/UserDropdown.tsx @@ -36,6 +36,7 @@ export default function UserDropdown() { useHotkeys("shift+mod+l", () => logout(), []); const [dropdownOpen, setDropdownOpen] = useState(false); + const { permission } = useLoggedInUser(); return ( - { - setDropdownOpen(false); - if (loggedInUser) { - router.push(`/team/user?id=${loggedInUser.id}`); - } - }} - > -
- - Profile Settings -
-
+ + {permission.dashboard_view !== "blocked" && ( + { + setDropdownOpen(false); + if (loggedInUser) { + router.push(`/team/user?id=${loggedInUser.id}`); + } + }} + > +
+ + Profile Settings +
+
+ )} +
diff --git a/src/contexts/AnnouncementProvider.tsx b/src/contexts/AnnouncementProvider.tsx index 5d2fc30..d98ecfa 100644 --- a/src/contexts/AnnouncementProvider.tsx +++ b/src/contexts/AnnouncementProvider.tsx @@ -2,6 +2,7 @@ import { AnnouncementVariant } from "@components/ui/AnnouncementBanner"; import { useLocalStorage } from "@hooks/useLocalStorage"; import md5 from "crypto-js/md5"; import React, { useEffect, useState } from "react"; +import { useLoggedInUser } from "@/contexts/UsersProvider"; const initialAnnouncements: Announcement[] = []; @@ -39,8 +40,10 @@ export default function AnnouncementProvider({ children }: Props) { string[] >("netbird-closed-announcements", []); const [announcements, setAnnouncements] = useState(); + const { permission } = useLoggedInUser(); useEffect(() => { + if (permission?.dashboard_view === "blocked") return; const initial = initialAnnouncements.map((announcement) => { const hash = md5(announcement.text).toString(); const isOpen = !closedAnnouncements.some((h) => h === hash); diff --git a/src/layouts/AppLayout.tsx b/src/layouts/AppLayout.tsx index 86137fe..1b08bb1 100644 --- a/src/layouts/AppLayout.tsx +++ b/src/layouts/AppLayout.tsx @@ -11,7 +11,6 @@ import React from "react"; import { Toaster } from "react-hot-toast"; import OIDCProvider from "@/auth/OIDCProvider"; import AnalyticsProvider from "@/contexts/AnalyticsProvider"; -import AnnouncementProvider from "@/contexts/AnnouncementProvider"; import DialogProvider from "@/contexts/DialogProvider"; import ErrorBoundaryProvider from "@/contexts/ErrorBoundary"; import { GlobalThemeProvider } from "@/contexts/GlobalThemeProvider"; @@ -36,11 +35,9 @@ export default function AppLayout({ children }: { children: React.ReactNode }) { - - - {children} - - + + {children} + diff --git a/src/layouts/DashboardLayout.tsx b/src/layouts/DashboardLayout.tsx index f0247a6..fdc0643 100644 --- a/src/layouts/DashboardLayout.tsx +++ b/src/layouts/DashboardLayout.tsx @@ -9,7 +9,9 @@ import { useIsSm, useIsXs } from "@utils/responsive"; import { AnimatePresence, motion } from "framer-motion"; import { XIcon } from "lucide-react"; import React from "react"; -import { useAnnouncement } from "@/contexts/AnnouncementProvider"; +import AnnouncementProvider, { + useAnnouncement, +} from "@/contexts/AnnouncementProvider"; import ApplicationProvider, { useApplicationContext, } from "@/contexts/ApplicationProvider"; @@ -29,7 +31,9 @@ export default function DashboardLayout({ - {children} + + {children} +