jiuyiUniapp/jiuyi2/TUIKit/interface.ts

327 lines
7.0 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* 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';