diff options
| author | anatawa12 <anatawa12@icloud.com> | 2024-04-17 14:23:41 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-17 14:23:41 +0900 |
| commit | e423b8ce4b28ecbe4e300fc67389e4def3761eb6 (patch) | |
| tree | 43d5e15ead542d1f0dad7dc30e0f86dc7e192535 /packages/backend/src/server/api/stream/channels/home-timeline.ts | |
| parent | enhance(frontend): フォローするかどうかの確認ダイアログを... (diff) | |
| download | sharkey-e423b8ce4b28ecbe4e300fc67389e4def3761eb6.tar.gz sharkey-e423b8ce4b28ecbe4e300fc67389e4def3761eb6.tar.bz2 sharkey-e423b8ce4b28ecbe4e300fc67389e4def3761eb6.zip | |
細かいミュートの処理の修正 (#13695)
* fix: some replies are removed from global timeline
* refactor: 各チャンネルのミュートとブロックの処理をまとめる
* fix: リノートをミュートでその人のノートのリノートをミュートしていたを修正
* refactor: isPureRenotePackedを他のところでも使う
* docs(changelog): CHANGELOGを更新
* test: withReplies = falseでフォローしてる人によるリプライが流れてくる
* test: ノートミュートしているユーザーの通常ノートのリノートが流れてくる/含まれる
Diffstat (limited to 'packages/backend/src/server/api/stream/channels/home-timeline.ts')
| -rw-r--r-- | packages/backend/src/server/api/stream/channels/home-timeline.ts | 18 |
1 files changed, 4 insertions, 14 deletions
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 f45bf8622e..878a3180cb 100644 --- a/packages/backend/src/server/api/stream/channels/home-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/home-timeline.ts @@ -4,12 +4,10 @@ */ import { Injectable } from '@nestjs/common'; -import { checkWordMute } from '@/misc/check-word-mute.js'; -import { isUserRelated } from '@/misc/is-user-related.js'; -import { isInstanceMuted } from '@/misc/is-instance-muted.js'; import type { Packed } from '@/misc/json-schema.js'; import { NoteEntityService } from '@/core/entities/NoteEntityService.js'; import { bindThis } from '@/decorators.js'; +import { isRenotePacked, isQuotePacked } from '@/misc/is-renote.js'; import Channel, { type MiChannelService } from '../channel.js'; class HomeTimelineChannel extends Channel { @@ -51,9 +49,6 @@ class HomeTimelineChannel extends Channel { if (!isMe && !Object.hasOwn(this.following, note.userId)) return; } - // Ignore notes from instances the user has muted - if (isInstanceMuted(note, new Set<string>(this.userProfile!.mutedInstances))) return; - if (note.visibility === 'followers') { if (!isMe && !Object.hasOwn(this.following, note.userId)) return; } else if (note.visibility === 'specified') { @@ -72,7 +67,7 @@ class HomeTimelineChannel extends Channel { } // 純粋なリノート(引用リノートでないリノート)の場合 - if (note.renote && note.text == null && (note.fileIds == null || note.fileIds.length === 0) && note.poll == null) { + if (isRenotePacked(note) && !isQuotePacked(note) && note.renote) { if (!this.withRenotes) return; if (note.renote.reply) { const reply = note.renote.reply; @@ -81,14 +76,9 @@ class HomeTimelineChannel extends Channel { } } - // 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する - if (isUserRelated(note, this.userIdsWhoMeMuting)) return; - // 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する - if (isUserRelated(note, this.userIdsWhoBlockingMe)) return; - - if (note.renote && !note.text && isUserRelated(note, this.userIdsWhoMeMutingRenotes)) return; + if (this.isNoteMutedOrBlocked(note)) return; - if (this.user && note.renoteId && !note.text) { + if (this.user && isRenotePacked(note) && !isQuotePacked(note)) { if (note.renote && Object.keys(note.renote.reactions).length > 0) { const myRenoteReaction = await this.noteEntityService.populateMyReaction(note.renote, this.user.id); note.renote.myReaction = myRenoteReaction; |