diff --git a/packages/backend/src/server/api/stream/channel.ts b/packages/backend/src/server/api/stream/channel.ts index 06afc221c8..7a6193ccfc 100644 --- a/packages/backend/src/server/api/stream/channel.ts +++ b/packages/backend/src/server/api/stream/channel.ts @@ -82,7 +82,19 @@ export default abstract class Channel { return false; } - constructor(id: string, connection: Connection) { + protected async hideNote(note: Packed<'Note'>): Promise { + if (note.renote) { + await this.hideNote(note.renote); + } + + if (note.reply) { + await this.hideNote(note.reply); + } + + const meId = this.user?.id ?? null; + await this.noteEntityService.hideNote(note, meId); + } + constructor(id: string, connection: Connection, noteEntityService: NoteEntityService) { this.id = id; this.connection = connection; diff --git a/packages/backend/src/server/api/stream/channels/bubble-timeline.ts b/packages/backend/src/server/api/stream/channels/bubble-timeline.ts index c33245ef1e..5ebbdcbb86 100644 --- a/packages/backend/src/server/api/stream/channels/bubble-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/bubble-timeline.ts @@ -64,6 +64,7 @@ class BubbleTimelineChannel extends Channel { if (this.isNoteMutedOrBlocked(note)) return; const clonedNote = await this.assignMyReaction(note); + await this.hideNote(clonedNote); this.connection.cacheNote(clonedNote); diff --git a/packages/backend/src/server/api/stream/channels/channel.ts b/packages/backend/src/server/api/stream/channels/channel.ts index d5cfd3a0d9..ec0bc7e13a 100644 --- a/packages/backend/src/server/api/stream/channels/channel.ts +++ b/packages/backend/src/server/api/stream/channels/channel.ts @@ -50,6 +50,7 @@ class ChannelChannel extends Channel { if (this.isNoteMutedOrBlocked(note)) return; const clonedNote = await this.assignMyReaction(note); + await this.hideNote(clonedNote); this.connection.cacheNote(clonedNote); diff --git a/packages/backend/src/server/api/stream/channels/global-timeline.ts b/packages/backend/src/server/api/stream/channels/global-timeline.ts index 868592b433..72a8a8b156 100644 --- a/packages/backend/src/server/api/stream/channels/global-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/global-timeline.ts @@ -61,6 +61,7 @@ class GlobalTimelineChannel extends Channel { if (this.isNoteMutedOrBlocked(note)) return; const clonedNote = await this.assignMyReaction(note); + await this.hideNote(clonedNote); this.connection.cacheNote(clonedNote); diff --git a/packages/backend/src/server/api/stream/channels/hashtag.ts b/packages/backend/src/server/api/stream/channels/hashtag.ts index b5d1e034be..7c8df87721 100644 --- a/packages/backend/src/server/api/stream/channels/hashtag.ts +++ b/packages/backend/src/server/api/stream/channels/hashtag.ts @@ -46,6 +46,7 @@ class HashtagChannel extends Channel { if (this.isNoteMutedOrBlocked(note)) return; const clonedNote = await this.assignMyReaction(note); + await this.hideNote(clonedNote); this.connection.cacheNote(clonedNote); diff --git a/packages/backend/src/server/api/stream/channels/home-timeline.ts b/packages/backend/src/server/api/stream/channels/home-timeline.ts index 105f966461..c87a21be82 100644 --- a/packages/backend/src/server/api/stream/channels/home-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/home-timeline.ts @@ -82,6 +82,7 @@ class HomeTimelineChannel extends Channel { if (this.isNoteMutedOrBlocked(note)) return; const clonedNote = await this.assignMyReaction(note); + await this.hideNote(clonedNote); this.connection.cacheNote(clonedNote); diff --git a/packages/backend/src/server/api/stream/channels/hybrid-timeline.ts b/packages/backend/src/server/api/stream/channels/hybrid-timeline.ts index 4b26fcf667..95b762e2b7 100644 --- a/packages/backend/src/server/api/stream/channels/hybrid-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/hybrid-timeline.ts @@ -99,6 +99,7 @@ class HybridTimelineChannel extends Channel { } const clonedNote = await this.assignMyReaction(note); + await this.hideNote(clonedNote); this.connection.cacheNote(clonedNote); diff --git a/packages/backend/src/server/api/stream/channels/local-timeline.ts b/packages/backend/src/server/api/stream/channels/local-timeline.ts index 1e656def9a..b9e0a4c234 100644 --- a/packages/backend/src/server/api/stream/channels/local-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/local-timeline.ts @@ -71,6 +71,7 @@ class LocalTimelineChannel extends Channel { if (this.isNoteMutedOrBlocked(note)) return; const clonedNote = await this.assignMyReaction(note); + await this.hideNote(clonedNote); this.connection.cacheNote(clonedNote); diff --git a/packages/backend/src/server/api/stream/channels/role-timeline.ts b/packages/backend/src/server/api/stream/channels/role-timeline.ts index 5d33108821..14c4d96479 100644 --- a/packages/backend/src/server/api/stream/channels/role-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/role-timeline.ts @@ -49,6 +49,7 @@ class RoleTimelineChannel extends Channel { if (this.isNoteMutedOrBlocked(note)) return; const clonedNote = await this.assignMyReaction(note); + await this.hideNote(clonedNote); this.connection.cacheNote(clonedNote); diff --git a/packages/backend/src/server/api/stream/channels/user-list.ts b/packages/backend/src/server/api/stream/channels/user-list.ts index 8561ce11b3..d09a9b8d9f 100644 --- a/packages/backend/src/server/api/stream/channels/user-list.ts +++ b/packages/backend/src/server/api/stream/channels/user-list.ts @@ -112,6 +112,7 @@ class UserListChannel extends Channel { if (this.isNoteMutedOrBlocked(note)) return; const clonedNote = await this.assignMyReaction(note); + await this.hideNote(clonedNote); this.connection.cacheNote(clonedNote);