mirror of https://github.com/msgbyte/tailchat
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.
36 lines
826 B
TypeScript
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;
|
|
}
|