159 lines
4.3 KiB
TypeScript
159 lines
4.3 KiB
TypeScript
export interface ChatMessage {
|
|
timestamp: number;
|
|
message: string;
|
|
sender_name: string;
|
|
sender_unique_id: string;
|
|
sender_database_id: number;
|
|
}
|
|
export declare type ChatEvent = {
|
|
timestamp: number;
|
|
uniqueId: string;
|
|
} & (ChatEventUnreadTrigger | ChatEventMessage | ChatEventMessageSendFailed | ChatEventLocalUserSwitch | ChatEventQueryFailed | ChatEventPartnerInstanceChanged | ChatEventLocalAction | ChatEventPartnerAction | ChatEventModeChanged);
|
|
export interface ChatEventUnreadTrigger {
|
|
type: "unread-trigger";
|
|
}
|
|
export interface ChatEventMessageSendFailed {
|
|
type: "message-failed";
|
|
error: "permission" | "error";
|
|
failedPermission?: string;
|
|
errorMessage?: string;
|
|
}
|
|
export interface ChatEventMessage {
|
|
type: "message";
|
|
message: ChatMessage;
|
|
isOwnMessage: boolean;
|
|
}
|
|
export interface ChatEventLocalUserSwitch {
|
|
type: "local-user-switch";
|
|
mode: "join" | "leave";
|
|
}
|
|
export interface ChatEventQueryFailed {
|
|
type: "query-failed";
|
|
message: string;
|
|
}
|
|
export interface ChatEventPartnerInstanceChanged {
|
|
type: "partner-instance-changed";
|
|
oldClient: string;
|
|
newClient: string;
|
|
}
|
|
export interface ChatEventLocalAction {
|
|
type: "local-action";
|
|
action: "disconnect" | "reconnect";
|
|
}
|
|
export interface ChatEventPartnerAction {
|
|
type: "partner-action";
|
|
action: "disconnect" | "close" | "reconnect";
|
|
}
|
|
export interface ChatEventModeChanged {
|
|
type: "mode-changed";
|
|
newMode: "normal" | "private" | "none";
|
|
}
|
|
export declare type ChatState = "normal" | "loading" | "no-permissions" | "error" | "unloaded";
|
|
export declare type ChatHistoryState = "none" | "loading" | "available" | "error";
|
|
export interface ChatStateNormal {
|
|
state: "normal";
|
|
chatFrameMaxMessageCount: number;
|
|
sendEnabled: boolean;
|
|
unreadTimestamp: number | undefined;
|
|
events: ChatEvent[];
|
|
historyState: ChatHistoryState;
|
|
historyErrorMessage: string;
|
|
historyRetryTimestamp: number;
|
|
showUserSwitchEvents: boolean;
|
|
}
|
|
export interface ChatStateNoPermissions {
|
|
state: "no-permissions";
|
|
failedPermission: string;
|
|
}
|
|
export interface ChatStateError {
|
|
state: "error";
|
|
errorMessage: string;
|
|
}
|
|
export interface ChatStateLoading {
|
|
state: "loading";
|
|
}
|
|
export interface ChatStatePrivate {
|
|
state: "private";
|
|
crossChannelChatSupported: boolean;
|
|
}
|
|
export declare type ChatStateData = ChatStateNormal | ChatStateNoPermissions | ChatStateError | ChatStateLoading | ChatStatePrivate;
|
|
export interface AbstractConversationUiEvents {
|
|
action_select_chat: {
|
|
chatId: "unselected" | string;
|
|
};
|
|
action_clear_unread_flag: {
|
|
chatId: string;
|
|
};
|
|
action_self_typing: {
|
|
chatId: string;
|
|
};
|
|
action_delete_message: {
|
|
chatId: string;
|
|
uniqueId: string;
|
|
};
|
|
action_send_message: {
|
|
text: string;
|
|
chatId: string;
|
|
};
|
|
action_jump_to_present: {
|
|
chatId: string;
|
|
};
|
|
action_focus_chat: {};
|
|
query_selected_chat: {};
|
|
query_conversation_state: {
|
|
chatId: string;
|
|
};
|
|
notify_conversation_state: {
|
|
chatId: string;
|
|
} & ChatStateData;
|
|
query_conversation_history: {
|
|
chatId: string;
|
|
timestamp: number;
|
|
};
|
|
notify_conversation_history: {
|
|
chatId: string;
|
|
state: "success" | "error";
|
|
errorMessage?: string;
|
|
retryTimestamp?: number;
|
|
events?: ChatEvent[];
|
|
hasMoreMessages?: boolean;
|
|
};
|
|
notify_selected_chat: {
|
|
chatId: "unselected" | string;
|
|
};
|
|
notify_panel_show: {};
|
|
notify_chat_event: {
|
|
chatId: string;
|
|
triggerUnread: boolean;
|
|
event: ChatEvent;
|
|
};
|
|
notify_chat_message_delete: {
|
|
chatId: string;
|
|
messageIds: string[];
|
|
};
|
|
notify_unread_timestamp_changed: {
|
|
chatId: string;
|
|
timestamp: number;
|
|
};
|
|
notify_private_state_changed: {
|
|
chatId: string;
|
|
private: boolean;
|
|
};
|
|
notify_send_enabled: {
|
|
chatId: string;
|
|
enabled: boolean;
|
|
};
|
|
notify_partner_typing: {
|
|
chatId: string;
|
|
};
|
|
notify_destroy: {};
|
|
}
|
|
export interface ConversationHistoryResponse {
|
|
status: "success" | "error" | "no-permission" | "private" | "unsupported";
|
|
events?: ChatEvent[];
|
|
moreEvents?: boolean;
|
|
nextAllowedQuery?: number;
|
|
errorMessage?: string;
|
|
failedPermission?: string;
|
|
}
|