You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/shared/contexts/GroupInfoContext.tsx

36 lines
826 B
TypeScript

import React, { useContext } from 'react';
import type { GroupInfo } from '..';
/**
* 群组信息上下文
*/
interface GroupInfoContextProps {
groupInfo: GroupInfo | null;
}
const GroupInfoContext = React.createContext<GroupInfoContextProps>({
groupInfo: null,
});
GroupInfoContext.displayName = 'GroupInfoContext';
export const GroupInfoContextProvider: React.FC<{
groupInfo: GroupInfo;
}> = React.memo((props) => {
return (
<GroupInfoContext.Provider
value={{
groupInfo: props.groupInfo,
}}
>
{props.children}
</GroupInfoContext.Provider>
);
});
GroupInfoContextProvider.displayName = 'GroupInfoContextProvider';
export function useGroupInfoContext(): GroupInfoContextProps['groupInfo'] {
const context = useContext(GroupInfoContext);
return context.groupInfo;
}