skailan-conversations
Version:
Servicio de conversaciones y mensajería para Skailan
90 lines • 2.67 kB
TypeScript
import { Message } from "../entities/Message";
import { Conversation } from "../entities/Conversation";
export interface MessageDisplayData {
id: string;
content: string;
type: "text" | "image" | "document" | "audio" | "video" | "location" | "contact";
senderType: "user" | "system" | "bot";
senderId: string;
senderName: string;
senderAvatar?: string;
timestamp: Date;
status: "sent" | "delivered" | "read" | "failed" | "pending";
isOutgoing: boolean;
channelType: "telegram" | "whatsapp" | "email" | "web";
metadata?: {
telegramMessageId?: number;
replyToMessageId?: string;
inlineKeyboard?: Array<Array<{
text: string;
callbackData: string;
}>>;
fileUrl?: string;
fileName?: string;
fileSize?: number;
mimeType?: string;
};
}
export interface ConversationDisplayData {
id: string;
title: string;
status: string;
lastMessage?: MessageDisplayData;
unreadCount: number;
participants: Array<{
id: string;
name: string;
avatar?: string;
type: "user" | "bot" | "system";
}>;
channelType: "telegram" | "whatsapp" | "email" | "web";
createdAt: Date;
updatedAt: Date;
}
export declare class MessageDisplayService {
/**
* Convierte un mensaje de la base de datos a formato de visualización
*/
formatMessageForDisplay(message: Message): MessageDisplayData;
/**
* Convierte una conversación a formato de visualización
*/
formatConversationForDisplay(conversation: Conversation, lastMessage?: Message, unreadCount?: number): ConversationDisplayData;
/**
* Determina el tipo de mensaje basado en el contenido
*/
private determineMessageType;
/**
* Obtiene información del remitente
*/
private getSenderInfo;
/**
* Extrae metadata específica del canal
*/
private extractChannelMetadata;
/**
* Determina el tipo de canal basado en el mensaje
*/
private determineChannelType;
/**
* Determina el tipo de canal basado en la conversación
*/
private determineChannelTypeFromConversation;
/**
* Obtiene los participantes de una conversación
*/
private getConversationParticipants;
/**
* Formatea timestamp para visualización
*/
formatTimestamp(timestamp: Date): string;
/**
* Obtiene el estado visual del mensaje
*/
getMessageStatusDisplay(status: string): {
text: string;
icon: string;
color: string;
};
}
//# sourceMappingURL=MessageDisplayService.d.ts.map