Skip to content

Connect (Messaging)

Connect is the real-time messaging module enabling user-to-user communication. It supports direct messages, group chats, order-related conversations, and system messages.

Module path: src/lib/modules/connect/ Routes: /connect, /connect/[id]

TypeDescription
DIRECTOne-on-one conversation
GROUPMulti-user chat
ONE_TO_ONEAlternative direct chat
ORDEROrder-related communication
SYSTEMSystem-generated messages
StatusDescription
RequestedConnection request pending
AcceptedActive conversation
DeclinedRequest rejected
ExpiredRequest expired
interface ChatConversation {
id: string;
members: string[];
messages: ChatMessage[];
status: ChatStatus;
archived: boolean;
pinned: boolean;
type: ChatType;
// ...
}
interface ChatMessage {
id: string;
text: string;
senderId: string;
reactions: Record<string, string[]>;
mentions: string[];
readBy: string[];
createdAt: Timestamp;
editedAt?: Timestamp;
deletedFor?: string[];
}

File: src/lib/modules/connect/services/chat.service.ts

MethodDescription
createConversation()Start new chat
createMessage()Send message
deleteMessage()Delete for all
deleteMessageForUser()Delete for self only
addReaction()Add emoji reaction
editMessage()Edit sent message
blockUser() / unblockUser()Block/unblock
markAsSpam() / unmarkAsSpam()Spam management
sendDisputeNotificationMessage()System dispute messages

File: src/lib/modules/connect/services/chat-filter.service.ts

  • filterChatsByTab() - Filter by all/spammed/blocked/archive
  • highlightText() - Highlight search matches
  • processLastMessage() - Replace @mentions with usernames
chatManager.chats; // Active conversations
chatManager.chatsAll; // All conversations
chatManager.chatsArchived; // Archived
chatManager.chatsRequested; // Connection requests
chatManager.chatsSpammed; // Spam
chatManager.blockedUsers; // Blocked users
chatManager.countChatsWithUnreadMessages; // Unread count
chatManager.members; // Current chat members
chatManager.setChatId(id);
chatManager.setMessageIdSelected(id);
chatManager.setTypingStatus(status);
  • Emoji reactions on messages
  • @mentions with autocomplete
  • Message editing and deletion
  • Read receipts
  • Archive/Pin conversations
  • Mute/Snooze notifications
  • Spam reporting with metadata
  • User blocking
  • Threaded replies
  • Shared media panel
ComponentPurpose
chats.svelteActive chat list
chat-item-preview.svelteChat preview card
archive-chats.svelteArchived conversations
request-chats.sveltePending requests
blocked-chats.svelteBlocked conversations
spammed-chats.svelteSpam conversations
ComponentPurpose
chat-body.svelteMessage display area
message-input-area.svelteMessage composition
message-item.svelteIndividual message
messages-list.svelteMessage list
message-menu.svelteRight-click actions
mention-link.svelteClickable @mention
ComponentPurpose
chat-search-input.svelteSearch messages
chat-search-results.svelteSearch results
chat-tabs.svelteTab navigation
header.svelteChat header
snooze-popover.svelteSnooze settings
chats/{chatId} # Chat conversation with messages
users/{userId}/
├── blockedUsers/ # Blocked user records
├── spammedChats/ # Spam reports
└── mentions/ # @mention notifications