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