diff --git a/src/client.ts b/src/client.ts index ebb091d24..b23563424 100644 --- a/src/client.ts +++ b/src/client.ts @@ -3132,7 +3132,10 @@ export class StreamChat { if (options.hardDelete) { await this.offlineDb.hardDeleteMessage({ id: messageID }); } else { - await this.offlineDb.softDeleteMessage({ id: messageID }); + await this.offlineDb.softDeleteMessage({ + id: messageID, + deleteForMe: options.deleteForMe, + }); } return await this.offlineDb.queueTask( { diff --git a/src/offline-support/offline_support_api.ts b/src/offline-support/offline_support_api.ts index f36ae2fe1..0ad35a8c7 100644 --- a/src/offline-support/offline_support_api.ts +++ b/src/offline-support/offline_support_api.ts @@ -633,14 +633,18 @@ export abstract class AbstractOfflineDB implements OfflineDBApi { event: Event; execute?: boolean; }) => { - const { message, hard_delete = false } = event; + const { message, deleted_for_me, hard_delete = false } = event; if (message) { const deleteMethod = hard_delete ? this.hardDeleteMessage : this.softDeleteMessage; return await this.queriesWithChannelGuard( { event, execute }, async (executeOverride) => - await deleteMethod({ id: message.id, execute: executeOverride }), + await deleteMethod({ + id: message.id, + deleteForMe: deleted_for_me, + execute: executeOverride, + }), ); } diff --git a/src/offline-support/types.ts b/src/offline-support/types.ts index c5a48246b..568ace21f 100644 --- a/src/offline-support/types.ts +++ b/src/offline-support/types.ts @@ -267,6 +267,8 @@ export type DBDropPendingTasksType = { export type DBDeleteMessageType = { /** ID of the message. */ id: string; + /** Whether to delete the message for the user only. */ + deleteForMe?: boolean; /** Whether to immediately execute the operation. */ execute?: boolean; }; diff --git a/test/unit/client.test.js b/test/unit/client.test.js index 4138e094c..35e26adea 100644 --- a/test/unit/client.test.js +++ b/test/unit/client.test.js @@ -993,6 +993,7 @@ describe('message deletion', () => { expect(client.offlineDb.softDeleteMessage).toHaveBeenCalledTimes(1); expect(client.offlineDb.softDeleteMessage).toHaveBeenCalledWith({ id: messageId, + deleteForMe: expectedOptions.deleteForMe, }); expect(client.offlineDb.hardDeleteMessage).not.toHaveBeenCalled(); }