From 5fcd0e48a8e23b43ea8f7819b0119e326a924f79 Mon Sep 17 00:00:00 2001 From: iCrawl Date: Fri, 24 Mar 2023 06:24:47 +0100 Subject: [PATCH] fix(website): nav / member provider --- .../[package]/[version]/providers.tsx | 5 ++++- apps/website/src/contexts/member.tsx | 22 +++++++++++-------- apps/website/src/contexts/nav.tsx | 14 +++++++++--- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/apps/website/src/app/docs/packages/[package]/[version]/providers.tsx b/apps/website/src/app/docs/packages/[package]/[version]/providers.tsx index a3e4ca970..27ee38f28 100644 --- a/apps/website/src/app/docs/packages/[package]/[version]/providers.tsx +++ b/apps/website/src/app/docs/packages/[package]/[version]/providers.tsx @@ -2,12 +2,15 @@ import type { PropsWithChildren } from 'react'; import { CmdKProvider } from '~/contexts/cmdK'; +import { MemberProvider } from '~/contexts/member'; import { NavProvider } from '~/contexts/nav'; export function Providers({ children }: PropsWithChildren) { return ( - {children} + + {children} + ); } diff --git a/apps/website/src/contexts/member.tsx b/apps/website/src/contexts/member.tsx index 0f0c84d58..0c0db2923 100644 --- a/apps/website/src/contexts/member.tsx +++ b/apps/website/src/contexts/member.tsx @@ -1,17 +1,21 @@ 'use client'; import type { ApiItemJSON } from '@discordjs/api-extractor-utils'; -import { createContext, useContext, type ReactNode } from 'react'; +import type { ApiItem } from '@microsoft/api-extractor-model'; +import { createContext, useContext, useMemo, useState } from 'react'; +import type { PropsWithChildren, Dispatch, SetStateAction } from 'react'; -export const MemberContext = createContext(undefined); +export const MemberContext = createContext<{ + member: ApiItem | ApiItemJSON | null | undefined; + setMember: Dispatch>; +}>({ member: undefined, setMember: (_) => {} }); -export const MemberProvider = ({ - member, - children, -}: { - children?: ReactNode | undefined; - member: ApiItemJSON | null | undefined; -}) => {children}; +export const MemberProvider = ({ children }: PropsWithChildren) => { + const [member, setMember] = useState(undefined); + const value = useMemo(() => ({ member, setMember }), [member]); + + return {children}; +}; export function useMember() { return useContext(MemberContext); diff --git a/apps/website/src/contexts/nav.tsx b/apps/website/src/contexts/nav.tsx index f7a1d102f..031417b73 100644 --- a/apps/website/src/contexts/nav.tsx +++ b/apps/website/src/contexts/nav.tsx @@ -1,6 +1,14 @@ 'use client'; -import { type PropsWithChildren, type Dispatch, type SetStateAction, createContext, useContext, useState } from 'react'; +import { + type PropsWithChildren, + type Dispatch, + type SetStateAction, + createContext, + useContext, + useState, + useMemo, +} from 'react'; export const NavContext = createContext<{ opened: boolean; setOpened: Dispatch> }>({ opened: false, @@ -9,9 +17,9 @@ export const NavContext = createContext<{ opened: boolean; setOpened: Dispatch { const [opened, setOpened] = useState(false); + const value = useMemo(() => ({ opened, setOpened }), [opened]); - // eslint-disable-next-line react/jsx-no-constructed-context-values - return {children}; + return {children}; }; export function useNav() {