327 lines
7.0 KiB
TypeScript
327 lines
7.0 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||
import { IConversationModel, IGroupModel, IMessageModel, Friend, FriendApplication } from '@tencentcloud/chat-uikit-engine';
|
||
|
||
export interface ITUIComponents {
|
||
TUIChat?: any;
|
||
TUIConversation?: any;
|
||
TUIContact?: any;
|
||
TUISearch?: any;
|
||
TUIGroup?: any;
|
||
TUIProfile?: any;
|
||
TUICallKit?: any;
|
||
TUICallKitMini?: any;
|
||
[propName: string]: any;
|
||
}
|
||
|
||
export interface ITUIPlugins {
|
||
TUICallKit?: any;
|
||
TUINotification?: any;
|
||
[propName: string]: any;
|
||
}
|
||
|
||
export interface IEmojiGroup {
|
||
type: string;
|
||
emojiGroupID: number;
|
||
url: string;
|
||
list: string[];
|
||
}
|
||
|
||
export type IEmojiGroupList = IEmojiGroup[];
|
||
|
||
export interface ISendMessagePayload {
|
||
text?: string;
|
||
file?: any;
|
||
atUserList?: string[];
|
||
}
|
||
|
||
export interface ISendMessageParams {
|
||
to?: string;
|
||
conversationType?: string;
|
||
payload?: ISendMessagePayload;
|
||
cloudCustomData?: any;
|
||
}
|
||
|
||
export interface ITransferListItem {
|
||
isDisabled?: boolean;
|
||
avatar?: string;
|
||
nick?: string;
|
||
userID?: string;
|
||
[propName: string]: any;
|
||
}
|
||
|
||
export interface ICustomMessagePayload {
|
||
businessID?: string;
|
||
// Evaluation-related custom message fields
|
||
score?: number;
|
||
comment?: string;
|
||
// Order & Hyperlink Class Custom Message Common Fields
|
||
link?: string;
|
||
// Order-related custom message fields
|
||
imageUrl?: string;
|
||
title?: string;
|
||
description?: string;
|
||
price?: string;
|
||
// Hyperlink custom message related fields
|
||
text?: string;
|
||
}
|
||
|
||
export interface IGroupApplication {
|
||
applicant: string;
|
||
applicantNick: string;
|
||
groupID: string;
|
||
groupName: string;
|
||
applicationType: 0 | 2; // 0 - group application, 2 - group invite
|
||
userID: string;
|
||
note: string;
|
||
[propName: string]: any;
|
||
}
|
||
|
||
export interface IGroupApplicationUserProfile {
|
||
userID: string;
|
||
avatar: string;
|
||
nick: string;
|
||
actionStatus?: string;
|
||
[propName: string]: any;
|
||
}
|
||
|
||
export type IGroupApplicationListItem = IGroupApplication;
|
||
|
||
export interface IFriendType {
|
||
userID?: string;
|
||
remark?: string;
|
||
groupList?: any[];
|
||
source?: string;
|
||
wording?: string;
|
||
profile?: IFriendProfile;
|
||
friendCustomFriend?: Array<Record<string, any>>;
|
||
}
|
||
|
||
export interface IFriendProfile {
|
||
userID?: string;
|
||
avatar?: string;
|
||
nick?: string;
|
||
[propName: string]: unknown;
|
||
}
|
||
|
||
export interface IGroupMember {
|
||
userID?: string;
|
||
avatar?: string;
|
||
nick?: string;
|
||
role?: string;
|
||
joinTime?: number;
|
||
nameCard?: string;
|
||
muteUntil?: string;
|
||
memberCustomField?: Array<Record<string, any>>;
|
||
}
|
||
|
||
export interface IGroupSelfInfo {
|
||
role?: string;
|
||
messageRemindType?: string;
|
||
joinTime?: number;
|
||
nameCard?: string;
|
||
userID?: string;
|
||
memberCustomField?: Array<Record<string, any>>;
|
||
}
|
||
|
||
export interface IUserProfile {
|
||
userID: string;
|
||
nick: string;
|
||
gender: string;
|
||
birthday: number;
|
||
location: string;
|
||
selfSignature: string;
|
||
allowType: string;
|
||
language: number;
|
||
avatar: string;
|
||
messageSettings: number;
|
||
adminForbidType: string;
|
||
level: number;
|
||
role: number;
|
||
lastUpdatedTime: number;
|
||
profileCustomField: Array<Record<string, any>>;
|
||
}
|
||
|
||
export interface IContactListItem {
|
||
title: string;
|
||
list: any[];
|
||
key: string;
|
||
unreadCount?: number;
|
||
}
|
||
|
||
export interface IContactList {
|
||
friendApplicationList: IContactListItem;
|
||
blackList: IContactListItem;
|
||
groupList: IContactListItem;
|
||
friendList: IContactListItem;
|
||
[key: string]: IContactListItem;
|
||
}
|
||
|
||
export interface IContactSearchResult {
|
||
user: {
|
||
label: string;
|
||
list: any[];
|
||
};
|
||
group: {
|
||
label: string;
|
||
list: any[];
|
||
};
|
||
}
|
||
|
||
export interface IBlackListUserItem {
|
||
userID: string;
|
||
nick?: string;
|
||
avatar?: string;
|
||
}
|
||
|
||
export type IContactInfoType = Friend | FriendApplication | IGroupModel | IBlackListUserItem;
|
||
|
||
export interface IContactInfoMoreItem {
|
||
key: string;
|
||
label: string;
|
||
data: any;
|
||
labelPosition?: string; // label position:"left"/"top"
|
||
editable?: boolean; // indicates whether it can be edited
|
||
editType?: string; // edit type: "input"/"switch"/"textarea"
|
||
editing?: boolean; // Current editing status: true: "Editing" / false:"Not editing"
|
||
editSubmitHandler?: () => void; // edit submit callback
|
||
}
|
||
|
||
export interface IContactInfoButton {
|
||
key: string;
|
||
label: string; // button label
|
||
type: string; // button type: "cancel"/"submit"
|
||
onClick: () => void; // button click callback
|
||
}
|
||
|
||
export interface ISearchCloudMessageResult {
|
||
totalCount: number;
|
||
searchResultList: ISearchResultListItem[];
|
||
cursor: string;
|
||
}
|
||
|
||
export interface ISearchResultListItem {
|
||
conversation: IConversationModel;
|
||
messageCount: number;
|
||
messageList: IMessageModel[];
|
||
type?: string;
|
||
}
|
||
|
||
export interface IImageMessageContent {
|
||
showName?: string;
|
||
url?: string;
|
||
width?: number;
|
||
height?: number;
|
||
}
|
||
|
||
export interface IVideoMessageContent {
|
||
showName: string; // video message sender name
|
||
url: string; // video url
|
||
snapshotUrl: string; // video snapshot url
|
||
snapshotWidth: number; // video snapshot width
|
||
snapshotHeight: number; // video snapshot height
|
||
}
|
||
|
||
export interface ITextMessageContent {
|
||
text: string;
|
||
}
|
||
|
||
export interface IMergeMessageContent {
|
||
abstractList: string[];
|
||
compatibleText: string;
|
||
downloadKey: string;
|
||
layersOverLimit: boolean;
|
||
messageList: Array<{
|
||
avatar: string;
|
||
ID: string;
|
||
cloudCustomData: string;
|
||
from: string;
|
||
messageBody: Array<{
|
||
type: string;
|
||
payload: Record<string, any>;
|
||
}>;
|
||
messageReceiver: string;
|
||
messageRandom: number;
|
||
messageSender: string;
|
||
messageSequence: number;
|
||
messageTime: number;
|
||
nick: string;
|
||
receiverUserID: string;
|
||
time: number;
|
||
}>;
|
||
pbDownloadKey: string;
|
||
showName: string;
|
||
title: string;
|
||
version: number;
|
||
}
|
||
|
||
export interface IFileMessageContent {
|
||
name: string;
|
||
url: string;
|
||
size: number;
|
||
}
|
||
|
||
export interface IAudioMessageContent {
|
||
showName: string;
|
||
url: string;
|
||
second: number;
|
||
}
|
||
|
||
export interface ICustomMessageContent {
|
||
showName: string;
|
||
custom: string;
|
||
businessID: string;
|
||
}
|
||
|
||
export interface IAudioContext {
|
||
src: string | undefined;
|
||
startTime: number;
|
||
duration: number;
|
||
play: () => void;
|
||
pause: () => void;
|
||
stop: () => void;
|
||
destroy: () => void;
|
||
onPlay: (callback: (...args: any[]) => void) => void;
|
||
onPause: (callback: (...args: any[]) => void) => void;
|
||
onStop: (callback: (...args: any[]) => void) => void;
|
||
onEnded: (callback: (...args: any[]) => void) => void;
|
||
onError: (callback: (...args: any[]) => void) => void;
|
||
}
|
||
|
||
export interface ITipTapEditorContent {
|
||
type: 'text' | 'image' | 'video' | 'file';
|
||
payload: {
|
||
text?: string;
|
||
file?: File;
|
||
atUserList?: string[];
|
||
};
|
||
}
|
||
|
||
export interface IUserStatus {
|
||
statusType: number;
|
||
customStatus: string;
|
||
}
|
||
export interface IUserStatusMap {
|
||
[userID: string]: IUserStatus;
|
||
}
|
||
|
||
export interface ITranslateInfo {
|
||
conversationID: string;
|
||
messageID: string;
|
||
visible: boolean;
|
||
}
|
||
|
||
export interface IConvertInfo {
|
||
conversationID: string;
|
||
messageID: string;
|
||
visible: boolean;
|
||
}
|
||
|
||
export interface IChatResponese<T> {
|
||
code: string;
|
||
data: T;
|
||
}
|
||
|
||
export type ToolbarDisplayType = 'emojiPicker' | 'tools' | 'none';
|
||
|
||
export type InputDisplayType = 'editor' | 'audio';
|