isChannelRelatedの条件に誤りがあった
This commit is contained in:
parent
efee424096
commit
491541fed1
|
@ -14,12 +14,7 @@ import { Packed } from '@/misc/json-schema.js';
|
|||
* @param channelIds 確認対象のチャンネルID一覧
|
||||
*/
|
||||
export function isChannelRelated(note: MiNote | Packed<'Note'>, channelIds: Set<string>): boolean {
|
||||
if (!note.channelId) {
|
||||
// チャンネル投稿じゃなければ無条件でOK
|
||||
return true;
|
||||
}
|
||||
|
||||
if (channelIds.has(note.channelId)) {
|
||||
if (note.channelId && channelIds.has(note.channelId)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -27,7 +22,7 @@ export function isChannelRelated(note: MiNote | Packed<'Note'>, channelIds: Set<
|
|||
return true;
|
||||
}
|
||||
|
||||
// NOTE: リプライはchannelIdのチェックだけでOKなはずなので見てない
|
||||
// NOTE: リプライはchannelIdのチェックだけでOKなはずなので見てない(チャンネルのノートにチャンネル外からのリプライまたはその逆はないはずなので)
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -53,18 +53,29 @@ class HybridTimelineChannel extends Channel {
|
|||
|
||||
if (this.withFiles && (note.fileIds == null || note.fileIds.length === 0)) return;
|
||||
|
||||
// チャンネルの投稿ではなく、自分自身の投稿 または
|
||||
// チャンネルの投稿ではなく、その投稿のユーザーをフォローしている または
|
||||
// チャンネルの投稿ではなく、全体公開のローカルの投稿 または
|
||||
// フォローしているチャンネルの投稿 または
|
||||
// ミュートしていないチャンネルの投稿(リノート・引用リノートもチェック対象)の場合だけ
|
||||
if (!(
|
||||
(note.channelId == null && isMe) ||
|
||||
(note.channelId == null && Object.hasOwn(this.following, note.userId)) ||
|
||||
(note.channelId == null && (note.user.host == null && note.visibility === 'public')) ||
|
||||
(note.channelId != null && this.followingChannels.has(note.channelId)) ||
|
||||
(note.channelId != null && isChannelRelated(note, this.mutingChannels))
|
||||
)) return;
|
||||
if (!note.channelId) {
|
||||
// 以下の条件に該当するノートのみ後続処理に通す(ので、以下のif文は該当しないノートをすべて弾くようにする)
|
||||
// - 自分自身の投稿
|
||||
// - その投稿のユーザーをフォローしている
|
||||
// - 全体公開のローカルの投稿
|
||||
if (!(
|
||||
isMe ||
|
||||
Object.hasOwn(this.following, note.userId) ||
|
||||
(note.user.host == null && note.visibility === 'public')
|
||||
)) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
// 以下の条件に該当するノートのみ後続処理に通す(ので、以下のif文は該当しないノートをすべて弾くようにする)
|
||||
// - ミュートしていないチャンネルの投稿(リノート・引用リノートもチェック対象)
|
||||
// - フォローしているチャンネルの投稿
|
||||
if (isChannelRelated(note, this.mutingChannels)) {
|
||||
return;
|
||||
}
|
||||
if (!this.followingChannels.has(note.channelId)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (note.visibility === 'followers') {
|
||||
if (!isMe && !Object.hasOwn(this.following, note.userId)) return;
|
||||
|
|
Loading…
Reference in New Issue