diff options
Diffstat (limited to 'packages/backend/src/misc')
| -rw-r--r-- | packages/backend/src/misc/is-renote.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/packages/backend/src/misc/is-renote.ts b/packages/backend/src/misc/is-renote.ts index 5d48aba360..48f821806c 100644 --- a/packages/backend/src/misc/is-renote.ts +++ b/packages/backend/src/misc/is-renote.ts @@ -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); +} |