From 83140de98b547c6443366b8323e6d9781b43099f Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Tue, 2 Jun 2026 19:07:56 +0200 Subject: [PATCH] feat(messenger): offlineDelivered flag on thread chat --- src/api/friends/MessengerThreadChat.test.ts | 29 +++++++++++++++++++++ src/api/friends/MessengerThreadChat.ts | 5 ++++ 2 files changed, 34 insertions(+) create mode 100644 src/api/friends/MessengerThreadChat.test.ts diff --git a/src/api/friends/MessengerThreadChat.test.ts b/src/api/friends/MessengerThreadChat.test.ts new file mode 100644 index 0000000..53320c4 --- /dev/null +++ b/src/api/friends/MessengerThreadChat.test.ts @@ -0,0 +1,29 @@ +import { describe, expect, it } from 'vitest'; +import { MessengerThreadChat } from './MessengerThreadChat'; + +describe('MessengerThreadChat.offlineDelivered', () => +{ + it('is true for a CHAT message with extraData "offline"', () => + { + const chat = new MessengerThreadChat(5, 'hello', 60, 'offline', MessengerThreadChat.CHAT); + expect(chat.offlineDelivered).toBe(true); + }); + + it('is false for a normal CHAT message with no extraData', () => + { + const chat = new MessengerThreadChat(5, 'hello', 0, null, MessengerThreadChat.CHAT); + expect(chat.offlineDelivered).toBe(false); + }); + + it('is false when extraData is some other value (e.g. group chat data)', () => + { + const chat = new MessengerThreadChat(5, 'hi', 0, 'Bob/figurestr/5', MessengerThreadChat.CHAT); + expect(chat.offlineDelivered).toBe(false); + }); + + it('is false for a non-CHAT type even if extraData is "offline"', () => + { + const chat = new MessengerThreadChat(5, 'hi', 0, 'offline', MessengerThreadChat.ROOM_INVITE); + expect(chat.offlineDelivered).toBe(false); + }); +}); diff --git a/src/api/friends/MessengerThreadChat.ts b/src/api/friends/MessengerThreadChat.ts index 5e37167..c58b366 100644 --- a/src/api/friends/MessengerThreadChat.ts +++ b/src/api/friends/MessengerThreadChat.ts @@ -74,6 +74,11 @@ export class MessengerThreadChat return this._extraData; } + public get offlineDelivered(): boolean + { + return (this._type === MessengerThreadChat.CHAT) && (this._extraData === 'offline'); + } + public get date(): Date { return this._date;