細かいミュートの処理の修正 (#13695)
* fix: some replies are removed from global timeline * refactor: 各チャンネルのミュートとブロックの処理をまとめる * fix: リノートをミュートでその人のノートのリノートをミュートしていたを修正 * refactor: isPureRenotePackedを他のところでも使う * docs(changelog): CHANGELOGを更新 * test: withReplies = falseでフォローしてる人によるリプライが流れてくる * test: ノートミュートしているユーザーの通常ノートのリノートが流れてくる/含まれる
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
import type { MiNote } from '@/models/Note.js';
|
||||
import type { Packed } from '@/misc/json-schema.js';
|
||||
|
||||
type Renote =
|
||||
MiNote & {
|
||||
@@ -34,3 +35,33 @@ export function isQuote(note: Renote): note is Quote {
|
||||
note.hasPoll ||
|
||||
note.fileIds.length > 0;
|
||||
}
|
||||
|
||||
type PackedRenote =
|
||||
Packed<'Note'> & {
|
||||
renoteId: NonNullable<Packed<'Note'>['renoteId']>
|
||||
};
|
||||
|
||||
type PackedQuote =
|
||||
PackedRenote & ({
|
||||
text: NonNullable<Packed<'Note'>['text']>
|
||||
} | {
|
||||
cw: NonNullable<Packed<'Note'>['cw']>
|
||||
} | {
|
||||
replyId: NonNullable<Packed<'Note'>['replyId']>
|
||||
} | {
|
||||
poll: NonNullable<Packed<'Note'>['poll']>
|
||||
} | {
|
||||
fileIds: NonNullable<Packed<'Note'>['fileIds']>
|
||||
});
|
||||
|
||||
export function isRenotePacked(note: Packed<'Note'>): note is PackedRenote {
|
||||
return note.renoteId != null;
|
||||
}
|
||||
|
||||
export function isQuotePacked(note: PackedRenote): note is PackedQuote {
|
||||
return note.text != null ||
|
||||
note.cw != null ||
|
||||
note.replyId != null ||
|
||||
note.poll != null ||
|
||||
(note.fileIds != null && note.fileIds.length > 0);
|
||||
}
|
||||
|
Reference in New Issue
Block a user