@cobuildlab/8base-chat
Version:
Chat component that uses 8base
48 lines (37 loc) • 1.01 kB
text/typescript
import { createContext } from 'react';
import { IUser } from 'types';
import { ChannelMemberFilter } from '../../shared/graphql/__generated__';
// -- TYPES
export interface IChannel {
channelIdentityId?: string;
}
export interface ITab extends IChannel {
isCollapsed?: boolean;
}
export type SetState<T> = (
newState: T | ((oldState: T) => T),
callback?: () => any,
) => void;
export type SetChannel = SetState<IChannel | null>;
export type SetTabs = SetState<ITab[]>;
export interface IChatContext {
setChannel: SetChannel;
setTabs: SetTabs;
openedChannel: IChannel | null;
user: IUser | null;
tabs: ITab[];
isSidebarVisible: boolean;
setSidebarVisibility?: (isVisible: boolean) => void;
usersFilter: {} | null;
channelMembersFilter?: ChannelMemberFilter;
}
// -- MAIN
export const ChatContext = createContext<IChatContext>({
openedChannel: null,
user: null,
setChannel: () => {},
setTabs: () => {},
isSidebarVisible: true,
tabs: [],
usersFilter: null,
});