@sendbird/uikit-react
Version:
Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
159 lines (158 loc) • 8.6 kB
TypeScript
import { Emoji, EmojiContainer, User } from '@sendbird/chat';
import { GroupChannel, GroupChannelListQuery, GroupChannelListOrder } from '@sendbird/chat/groupChannel';
import { AdminMessage, BaseMessage, FileMessage, MessageListParams, MultipleFilesMessage, Reaction, UploadedFileInfo, UserMessage } from '@sendbird/chat/message';
import { HTMLTextDirection, Nullable } from '../types';
import { TemplateType } from '../ui/TemplateMessageItemBody/types';
export declare const SUPPORTED_MIMES: {
IMAGE: string[];
VIDEO: string[];
AUDIO: string[];
DOCUMENT: string[];
APPLICATION: string[];
ARCHIVE: string[];
};
export declare const SUPPORTED_FILE_EXTENSIONS: {
IMAGE: string[];
VIDEO: string[];
AUDIO: string[];
DOCUMENT: string[];
ARCHIVE: string[];
};
export declare const getMimeTypesUIKitAccepts: (acceptableTypes?: string[]) => string;
export interface UIKitMessageTypes {
ADMIN: 'ADMIN';
TEXT: 'TEXT';
FILE: 'FILE';
MULTIPLE_FILES: 'MULTIPLE_FILES';
THUMBNAIL: 'THUMBNAIL';
OG: 'OG';
UNKNOWN: 'UNKNOWN';
}
export declare const UIKitMessageTypes: UIKitMessageTypes;
export interface UIKitFileTypes {
IMAGE: 'IMAGE';
AUDIO: 'AUDIO';
VIDEO: 'VIDEO';
GIF: 'GIF';
VOICE: 'VOICE';
OTHERS: 'OTHERS';
}
export declare const UIKitFileTypes: UIKitFileTypes;
export interface SendingMessageStatus {
NONE: 'none';
SUCCEEDED: 'succeeded';
FAILED: 'failed';
PENDING: 'pending';
}
export type CoreMessageType = AdminMessage | UserMessage | FileMessage | MultipleFilesMessage;
export type SendableMessageType = UserMessage | FileMessage | MultipleFilesMessage;
export declare const isMOVType: (type: string) => boolean;
/**
* @link: https://sendbird.atlassian.net/browse/SBISSUE-16031?focusedCommentId=270601
* We limitedly support .mov file type for ThumbnailMessage only in Safari browser.
* */
export declare const isSupportedVideoFileTypeInSafari: (type: string) => boolean;
export declare const isImage: (type: string) => boolean;
export declare const isVideo: (type: string) => boolean;
export declare const isGif: (type: string) => boolean;
export declare const isSupportedFileView: (type: string) => boolean;
export declare const isAudio: (type: string) => boolean;
export declare const getUIKitFileTypes: () => UIKitFileTypes;
export declare const getUIKitFileType: (type: string) => string;
export declare const isSentMessage: (message: SendableMessageType) => boolean;
export declare const isDeliveredMessage: (channel: GroupChannel, message: SendableMessageType) => boolean;
export declare const isReadMessage: (channel: GroupChannel, message: SendableMessageType) => boolean;
export declare const isFailedMessage: (message: SendableMessageType) => boolean;
export declare const isPendingMessage: (message: SendableMessageType) => boolean;
export declare const isSentStatus: (state: string) => boolean;
export declare const isAdminMessage: (message: CoreMessageType) => message is AdminMessage;
export declare const isUserMessage: (message: CoreMessageType) => message is UserMessage;
export declare const isFileMessage: (message?: CoreMessageType) => message is FileMessage;
export declare const isMultipleFilesMessage: (message?: CoreMessageType) => message is MultipleFilesMessage;
export declare const isParentMessage: (message: CoreMessageType) => boolean;
export declare const isThreadMessage: (message: CoreMessageType) => boolean;
export declare const isFormMessage: (message: CoreMessageType) => boolean;
export declare const isTemplateMessage: (message: CoreMessageType) => boolean;
export declare const isValidTemplateMessageType: (templatePayload: unknown) => boolean;
export declare const MessageTemplateTypes: Record<TemplateType, TemplateType>;
export declare const uiContainerType: {
default: string;
};
export declare const isOGMessage: (message: CoreMessageType) => message is UserMessage;
export declare const isTextMessage: (message: CoreMessageType) => message is UserMessage;
export declare const isThumbnailMessage: (message: CoreMessageType) => message is FileMessage;
export declare const isImageMessage: (message: SendableMessageType) => message is FileMessage;
export declare const isVideoMessage: (message: SendableMessageType) => message is FileMessage;
export declare const isGifMessage: (message: SendableMessageType) => message is FileMessage;
export declare const isAudioMessage: (message: CoreMessageType) => message is FileMessage;
export declare const isImageFileInfo: (fileInfo: UploadedFileInfo) => boolean;
export declare const isAudioMessageMimeType: (type: string) => boolean;
export declare const isVoiceMessageMimeType: (type: string) => boolean;
export declare const isVoiceMessage: (message: Nullable<CoreMessageType>) => boolean;
export declare const isEditedMessage: (message: CoreMessageType) => boolean;
export declare const isEnabledOGMessage: (message: UserMessage) => boolean;
export declare const getUIKitMessageTypes: () => UIKitMessageTypes;
/**
* Do not use this for MultipleFilesMessage. Use isMultipleFilesMessage() instead.
*/
export declare const getUIKitMessageType: (message: CoreMessageType) => string;
/**
* @deprecated use SendingStatus of @sendbird/chat instead
* */
export declare const getSendingMessageStatus: () => SendingMessageStatus;
export declare const getClassName: (classNames: string | Array<string | Array<string>>) => string;
export declare const isReactedBy: (userId: string, reaction: Reaction) => boolean;
interface StringSet {
TOOLTIP__YOU: string;
TOOLTIP__AND_YOU: string;
TOOLTIP__UNKNOWN_USER: string;
}
export declare const getEmojiTooltipString: (reaction: Reaction, userId: string, memberNicknamesMap: Map<string, string>, stringSet: StringSet) => string;
export declare function getSuggestedReplies(message?: BaseMessage): string[];
/** @deprecated
* URL detection in a message text will be handled in utils/tokens/tokenize.ts
*/
export declare const isUrl: (text: string) => boolean;
export declare const truncateString: (fullStr: string, strLen?: number) => string;
export declare const copyToClipboard: (text: string) => boolean;
export declare const getEmojiListAll: (emojiContainer: EmojiContainer) => Array<Emoji>;
export declare const getEmojiMapAll: (emojiContainer: EmojiContainer) => Map<string, Emoji>;
export declare const getEmojiListByCategoryIds: (emojiContainer: EmojiContainer, categoryIds: number[]) => Array<Emoji>;
export declare const getEmojiUrl: (emojiContainer?: EmojiContainer, emojiKey?: string) => string;
export declare const getUserName: (user: User) => string;
export declare const getSenderName: (message: SendableMessageType) => string;
export declare const hasSameMembers: <T>(a: T[], b: T[]) => boolean;
export declare const isFriend: (user: Nullable<User>) => boolean;
export declare const filterMessageListParams: (params: MessageListParams, message: SendableMessageType) => boolean;
export declare const filterChannelListParams: (params: GroupChannelListQuery, channel: GroupChannel, currentUserId: string) => boolean;
export declare const sortChannelList: (channels: GroupChannel[], order: GroupChannelListOrder) => GroupChannel[];
/**
* Upserts given channel to the channel list and then returns the sorted channel list.
*/
export declare const getChannelsWithUpsertedChannel: (_channels: Array<GroupChannel>, channel: GroupChannel, order?: GroupChannelListOrder) => Array<GroupChannel>;
export declare enum StringObjType {
normal = "normal",
mention = "mention",
url = "url"
}
export interface StringObj {
type: StringObjType;
value: string;
userId?: string;
}
/**
* @deprecated
* use modules/message/utils/tokenize instead
*/
export declare const convertWordToStringObj: (word: string, _users: Array<User>, _template?: string) => Array<StringObj>;
export declare const arrayEqual: (array1: Array<unknown>, array2: Array<unknown>) => boolean;
export declare const isSendableMessage: (message?: BaseMessage | null) => message is SendableMessageType;
/**
* If the channel is just created, the channel's createdAt and currentUser's invitedAt are the same.
*/
export declare const isChannelJustCreated: (channel: GroupChannel) => boolean;
export declare const getHTMLTextDirection: (direction: HTMLTextDirection, forceLeftToRightMessageLayout: boolean) => string;
export declare const DEFAULT_GROUP_CHANNEL_NAME = "Group Channel";
export declare const DEFAULT_AI_CHATBOT_CHANNEL_NAME = "AI Chatbot Widget Channel";
export declare const isDefaultChannelName: (channel: GroupChannel) => boolean;
export {};