MCPcopy
hub / github.com/linkwarden/linkwarden / Navbar

Function Navbar

apps/web/components/Navbar.tsx:36–200  ·  view source on GitHub ↗
({
  settings,
  admin,
}: {
  settings?: boolean;
  admin?: boolean;
})

Source from the content-addressed store, hash-verified

34 Number(process.env.NEXT_PUBLIC_TRIAL_PERIOD_DAYS) || 14;
35
36export default function Navbar({
37 settings,
38 admin,
39}: {
40 settings?: boolean;
41 admin?: boolean;
42}) {
43 const { t } = useTranslation();
44 const router = useRouter();
45 const { data: user } = useUser();
46
47 const [sidebar, setSidebar] = useState(false);
48
49 const { width } = useWindowDimensions();
50
51 useEffect(() => {
52 if (sidebar) setSidebar(false);
53 }, [width, router]);
54
55 useEffect(() => {
56 document.body.style.overflow = "auto";
57 }, [sidebar]);
58
59 const toggleSidebar = () => {
60 setSidebar(false);
61 document.body.style.overflow = "auto";
62 };
63
64 const [newLinkModal, setNewLinkModal] = useState(false);
65 const [newCollectionModal, setNewCollectionModal] = useState(false);
66 const [uploadFileModal, setUploadFileModal] = useState(false);
67
68 const [daysLeft, setDaysLeft] = useState<number>(0);
69 const [isTrialing, setIsTrialing] = useState<boolean>(false);
70
71 useEffect(() => {
72 if (user?.createdAt) {
73 const trialEndTime =
74 new Date(user.createdAt).getTime() +
75 (1 + Number(TRIAL_PERIOD_DAYS)) * 86400000; // Add 1 to account for the current day
76
77 setDaysLeft(Math.floor((trialEndTime - Date.now()) / 86400000));
78 }
79 }, [user]);
80
81 useEffect(() => {
82 const isTrialing =
83 user?.id &&
84 !user?.subscription?.active &&
85 !user.parentSubscription?.active;
86
87 setIsTrialing(Boolean(isTrialing));
88 }, [user, daysLeft]);
89
90 return (
91 <>
92 {STRIPE_ENABLED && isTrialing && (
93 <Link

Callers

nothing calls this directly

Calls 2

useUserFunction · 0.90
useWindowDimensionsFunction · 0.85

Tested by

no test coverage detected