fix: solve small pm chat ui issues

unwrap the pill
fix the fetching images in pm not auto download
This commit is contained in:
2026-05-25 17:17:32 +02:00
parent 1259645706
commit 161f57f52e
28 changed files with 697 additions and 82 deletions

View File

@@ -4,6 +4,7 @@ import {
createGroupConversation,
directMessageEventIncludesUser,
directMessageSyncIncludesUser,
createDirectCallStartedMessage,
getDirectConversationId,
isGroupDirectConversation,
updateMessageStatusInConversation,
@@ -88,6 +89,36 @@ describe('DirectMessageService domain flow', () => {
expect(updatedConversation.messages[0].recipientIds).toEqual(recipientIds);
});
it('does not increment unread when an existing message is upserted again', () => {
const conversation = createDirectConversation(alice, bob, 10);
const message = createMessage('message-1', 'SENT');
const withUnreadMessage = upsertDirectMessage(conversation, message, true);
const withDuplicateMessage = upsertDirectMessage(withUnreadMessage, { ...message, status: 'DELIVERED' }, true);
expect(withDuplicateMessage.messages).toHaveLength(1);
expect(withDuplicateMessage.unreadCount).toBe(1);
expect(withDuplicateMessage.messages[0].status).toBe('DELIVERED');
});
it('does not increment unread for call-started system messages', () => {
const conversation = createDirectConversation(alice, bob, 0);
const message = createDirectCallStartedMessage(conversation.id, alice, ['bob'], 123);
const withSystemMessage = upsertDirectMessage(conversation, message, true);
expect(withSystemMessage.unreadCount).toBe(0);
expect(withSystemMessage.messages).toHaveLength(1);
});
it('creates call-started system messages that do not read like normal text', () => {
const message = createDirectCallStartedMessage(getDirectConversationId('alice', 'bob'), alice, ['bob'], 123);
expect(message.id).toBe(`dm-call-started-${getDirectConversationId('alice', 'bob')}-123`);
expect(message.kind).toBe('system');
expect(message.systemEvent).toBe('call-started');
expect(message.content).toBe('Alice started a call');
expect(message.status).toBe('DELIVERED');
});
it('should update status correctly', () => {
expect(advanceDirectMessageStatus('QUEUED', 'SENT')).toBe('SENT');
expect(advanceDirectMessageStatus('SENT', 'DELIVERED')).toBe('DELIVERED');