@sendbird/uikit-react-native
Version:
Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
80 lines (79 loc) • 3.38 kB
TypeScript
import React from 'react';
import { SBUConfig } from '@sendbird/uikit-tools';
import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdUser } from '@sendbird/uikit-utils';
import type EmojiManager from '../libs/EmojiManager';
import type ImageCompressionConfig from '../libs/ImageCompressionConfig';
import type MentionManager from '../libs/MentionManager';
import type VoiceMessageConfig from '../libs/VoiceMessageConfig';
import VoiceMessageStatusManager from '../libs/VoiceMessageStatusManager';
import type { FileType } from '../platform/types';
import { type PubSub } from '../utils/pubsub';
export interface ChatRelatedFeaturesInUIKit {
enableAutoPushTokenRegistration: boolean;
enableUseUserIdForNickname: boolean;
enableImageCompression: boolean;
}
interface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {
sdkInstance: SendbirdChatSDK;
emojiManager: EmojiManager;
mentionManager: MentionManager;
voiceMessageStatusManager: VoiceMessageStatusManager;
imageCompressionConfig: ImageCompressionConfig;
voiceMessageConfig: VoiceMessageConfig;
}
export type GroupChannelFragmentOptionsPubSubContextPayload = {
type: 'OVERRIDE_SEARCH_ITEM_STARTING_POINT';
data: {
startingPoint: number;
};
};
export type SendbirdChatContextType = {
sdk: SendbirdChatSDK;
currentUser?: SendbirdUser;
setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;
emojiManager: EmojiManager;
mentionManager: MentionManager;
voiceMessageStatusManager: VoiceMessageStatusManager;
imageCompressionConfig: ImageCompressionConfig;
voiceMessageConfig: VoiceMessageConfig;
updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;
markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;
groupChannelFragmentOptions: {
pubsub: PubSub<GroupChannelFragmentOptionsPubSubContextPayload>;
};
sbOptions: {
uikit: SBUConfig;
uikitWithAppInfo: {
groupChannel: {
channel: {
readonly enableReactions: boolean;
readonly enableReactionsSupergroup: boolean;
readonly enableOgtag: boolean;
};
setting: {
readonly enableMessageSearch: boolean;
};
};
openChannel: {
channel: {
readonly enableOgtag: boolean;
};
};
};
chat: {
imageCompressionEnabled: boolean;
useUserIdForNicknameEnabled: boolean;
autoPushTokenRegistrationEnabled: boolean;
};
appInfo: {
deliveryReceiptEnabled: boolean;
broadcastChannelEnabled: boolean;
superGroupChannelEnabled: boolean;
reactionEnabled: boolean;
uploadSizeLimit: number | undefined;
};
};
};
export declare const SendbirdChatContext: React.Context<SendbirdChatContextType | null>;
export declare const SendbirdChatProvider: ({ children, sdkInstance, emojiManager, mentionManager, voiceMessageStatusManager, imageCompressionConfig, voiceMessageConfig, enableAutoPushTokenRegistration, enableUseUserIdForNickname, enableImageCompression, }: Props) => React.JSX.Element;
export {};