Skip to content

Commit 6048498

Browse files
committed
feat: message deletes
1 parent 0b5ed66 commit 6048498

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

src/channel.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1752,6 +1752,8 @@ export class Channel {
17521752
if (event.hard_delete) channelState.removeMessage(event.message);
17531753
else channelState.addMessageSorted(event.message, false, false);
17541754

1755+
this.getClient().offlineDb?.handleDeleteMessage({ event });
1756+
17551757
channelState.removeQuotedMessageReferences(event.message);
17561758

17571759
if (event.message.pinned) {

src/offline_support_api.ts

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ export abstract class AbstractOfflineDB implements OfflineDBApi {
237237
if (channel && channel.data && channel.initialized && !channel.disconnected) {
238238
const channelQuery = await this.upsertChannelData({
239239
channel: channel.data as unknown as ChannelResponse,
240-
flush,
240+
flush: false,
241241
});
242242
if (channelQuery) {
243243
const createdQueries = await createQueries(false);
@@ -280,9 +280,9 @@ export abstract class AbstractOfflineDB implements OfflineDBApi {
280280

281281
const finalQueries = await this.queriesWithChannelGuard(
282282
{ event, flush },
283-
async (flushOverride) => {
283+
async () => {
284284
let queries = await this.upsertMessages({
285-
flush: flushOverride,
285+
flush: false,
286286
messages: [message],
287287
});
288288
if (cid && client.user && client.user.id !== user?.id) {
@@ -293,7 +293,7 @@ export abstract class AbstractOfflineDB implements OfflineDBApi {
293293
const unreadCount = channel.countUnread();
294294
const upsertReadsQueries = await this.upsertReads({
295295
cid,
296-
flush: flushOverride,
296+
flush: false,
297297
reads: [
298298
{
299299
last_read: ownReads.last_read.toString() as string,
@@ -317,6 +317,27 @@ export abstract class AbstractOfflineDB implements OfflineDBApi {
317317
return finalQueries;
318318
};
319319

320+
public handleDeleteMessage = async ({
321+
event,
322+
flush = true,
323+
}: {
324+
event: Event;
325+
flush?: boolean;
326+
}) => {
327+
const { message, hard_delete = false } = event;
328+
329+
if (message) {
330+
const deleteMethod = hard_delete ? this.hardDeleteMessage : this.softDeleteMessage;
331+
return await this.queriesWithChannelGuard(
332+
{ event, flush },
333+
async (flushOverride) =>
334+
await deleteMethod({ id: message.id, flush: flushOverride }),
335+
);
336+
}
337+
338+
return [];
339+
};
340+
320341
public queueTask = async ({ task }: { task: PendingTask }) => {
321342
let response;
322343
try {
@@ -534,10 +555,8 @@ export class OfflineDBSyncManager {
534555
};
535556

536557
private handleEventToSyncDB = async (event: Event, flush?: boolean) => {
537-
const client = this.client;
538-
539558
const { type } = event;
540-
console.log('SYNCING REACTION EVENT1: ', event.type);
559+
console.log('SYNCING EVENT: ', event.type);
541560

542561
if (type.startsWith('reaction') && event.message && event.reaction) {
543562
const { message, reaction } = event;
@@ -575,6 +594,10 @@ export class OfflineDBSyncManager {
575594
}
576595
}
577596

597+
if (type === 'message.deleted') {
598+
return await this.offlineDb.handleDeleteMessage({ event, flush });
599+
}
600+
578601
return [];
579602
};
580603

0 commit comments

Comments
 (0)