Skip to content

Commit 06fdbd8

Browse files
authored
Hide profile settings and announcements for blocked dashboard view (#365)
1 parent 973ccef commit 06fdbd8

File tree

5 files changed

+33
-24
lines changed

5 files changed

+33
-24
lines changed

src/app/(dashboard)/peers/page.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export default function Peers() {
2222
return (
2323
<PageContainer>
2424
{permission?.dashboard_view === "blocked" ? (
25-
<PeersDefaultView />
25+
<PeersBlockedView />
2626
) : (
2727
<PeersView />
2828
)}
@@ -82,11 +82,11 @@ function PeersView() {
8282
);
8383
}
8484

85-
function PeersDefaultView() {
85+
function PeersBlockedView() {
8686
return (
8787
<div className={"flex items-center justify-center flex-col"}>
8888
<div className={"p-default py-6 max-w-3xl text-center"}>
89-
<h1>Add new peer to your network</h1>
89+
<h1>Add new device to your network</h1>
9090
<Paragraph className={"inline"}>
9191
To get started, install NetBird and log in using your email account.
9292
After that you should be connected. If you have further questions

src/components/ui/UserDropdown.tsx

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export default function UserDropdown() {
3636
useHotkeys("shift+mod+l", () => logout(), []);
3737

3838
const [dropdownOpen, setDropdownOpen] = useState(false);
39+
const { permission } = useLoggedInUser();
3940

4041
return (
4142
<DropdownMenu
@@ -67,19 +68,23 @@ export default function UserDropdown() {
6768
</DropdownMenuLabel>
6869

6970
<DropdownMenuSeparator />
70-
<DropdownMenuItem
71-
onClick={() => {
72-
setDropdownOpen(false);
73-
if (loggedInUser) {
74-
router.push(`/team/user?id=${loggedInUser.id}`);
75-
}
76-
}}
77-
>
78-
<div className={"flex gap-3 items-center"}>
79-
<User2 size={14} />
80-
Profile Settings
81-
</div>
82-
</DropdownMenuItem>
71+
72+
{permission.dashboard_view !== "blocked" && (
73+
<DropdownMenuItem
74+
onClick={() => {
75+
setDropdownOpen(false);
76+
if (loggedInUser) {
77+
router.push(`/team/user?id=${loggedInUser.id}`);
78+
}
79+
}}
80+
>
81+
<div className={"flex gap-3 items-center"}>
82+
<User2 size={14} />
83+
Profile Settings
84+
</div>
85+
</DropdownMenuItem>
86+
)}
87+
8388
<DropdownMenuItem onClick={logoutSession}>
8489
<div className={"flex gap-3 items-center"}>
8590
<LogOutIcon size={14} />

src/contexts/AnnouncementProvider.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { AnnouncementVariant } from "@components/ui/AnnouncementBanner";
22
import { useLocalStorage } from "@hooks/useLocalStorage";
33
import md5 from "crypto-js/md5";
44
import React, { useEffect, useState } from "react";
5+
import { useLoggedInUser } from "@/contexts/UsersProvider";
56

67
const initialAnnouncements: Announcement[] = [];
78

@@ -39,8 +40,10 @@ export default function AnnouncementProvider({ children }: Props) {
3940
string[]
4041
>("netbird-closed-announcements", []);
4142
const [announcements, setAnnouncements] = useState<AnnouncementInfo[]>();
43+
const { permission } = useLoggedInUser();
4244

4345
useEffect(() => {
46+
if (permission?.dashboard_view === "blocked") return;
4447
const initial = initialAnnouncements.map((announcement) => {
4548
const hash = md5(announcement.text).toString();
4649
const isOpen = !closedAnnouncements.some((h) => h === hash);

src/layouts/AppLayout.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import React from "react";
1111
import { Toaster } from "react-hot-toast";
1212
import OIDCProvider from "@/auth/OIDCProvider";
1313
import AnalyticsProvider from "@/contexts/AnalyticsProvider";
14-
import AnnouncementProvider from "@/contexts/AnnouncementProvider";
1514
import DialogProvider from "@/contexts/DialogProvider";
1615
import ErrorBoundaryProvider from "@/contexts/ErrorBoundary";
1716
import { GlobalThemeProvider } from "@/contexts/GlobalThemeProvider";
@@ -36,11 +35,9 @@ export default function AppLayout({ children }: { children: React.ReactNode }) {
3635
<GlobalThemeProvider>
3736
<ErrorBoundaryProvider>
3837
<OIDCProvider>
39-
<AnnouncementProvider>
40-
<TooltipProvider delayDuration={0}>
41-
{children}
42-
</TooltipProvider>
43-
</AnnouncementProvider>
38+
<TooltipProvider delayDuration={0}>
39+
{children}
40+
</TooltipProvider>
4441
</OIDCProvider>
4542
</ErrorBoundaryProvider>
4643
</GlobalThemeProvider>

src/layouts/DashboardLayout.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ import { useIsSm, useIsXs } from "@utils/responsive";
99
import { AnimatePresence, motion } from "framer-motion";
1010
import { XIcon } from "lucide-react";
1111
import React from "react";
12-
import { useAnnouncement } from "@/contexts/AnnouncementProvider";
12+
import AnnouncementProvider, {
13+
useAnnouncement,
14+
} from "@/contexts/AnnouncementProvider";
1315
import ApplicationProvider, {
1416
useApplicationContext,
1517
} from "@/contexts/ApplicationProvider";
@@ -29,7 +31,9 @@ export default function DashboardLayout({
2931
<UsersProvider>
3032
<GroupsProvider>
3133
<CountryProvider>
32-
<DashboardPageContent>{children}</DashboardPageContent>
34+
<AnnouncementProvider>
35+
<DashboardPageContent>{children}</DashboardPageContent>
36+
</AnnouncementProvider>
3337
</CountryProvider>
3438
</GroupsProvider>
3539
</UsersProvider>

0 commit comments

Comments
 (0)