From caf40e40fbd444c050d8d3cc60f4dd2898950900 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Mon, 31 May 2021 13:04:13 +0900 Subject: Supports Array ActivityStreams type (#7536) * Supports Array type * Fix * Fix Service to Note * Update type.ts Co-authored-by: syuilo --- src/remote/activitypub/models/note.ts | 6 +++--- src/remote/activitypub/models/person.ts | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/remote/activitypub/models') diff --git a/src/remote/activitypub/models/note.ts b/src/remote/activitypub/models/note.ts index 09e066708f..3b7452c3cb 100644 --- a/src/remote/activitypub/models/note.ts +++ b/src/remote/activitypub/models/note.ts @@ -17,7 +17,7 @@ import { deliverQuestionUpdate } from '../../../services/note/polls/update'; import { extractDbHost, toPuny } from '@/misc/convert-host'; import { Emojis, Polls, MessagingMessages } from '../../../models'; import { Note } from '../../../models/entities/note'; -import { IObject, getOneApId, getApId, getOneApHrefNullable, validPost, IPost, isEmoji } from '../type'; +import { IObject, getOneApId, getApId, getOneApHrefNullable, validPost, IPost, isEmoji, getApType } from '../type'; import { Emoji } from '../../../models/entities/emoji'; import { genId } from '@/misc/gen-id'; import { fetchMeta } from '@/misc/fetch-meta'; @@ -36,8 +36,8 @@ export function validateNote(object: any, uri: string) { return new Error('invalid Note: object is null'); } - if (!validPost.includes(object.type)) { - return new Error(`invalid Note: invalid object type ${object.type}`); + if (!validPost.includes(getApType(object))) { + return new Error(`invalid Note: invalid object type ${getApType(object)}`); } if (object.id && extractDbHost(object.id) !== expectHost) { diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts index 5b032d9d9c..1062fe2995 100644 --- a/src/remote/activitypub/models/person.ts +++ b/src/remote/activitypub/models/person.ts @@ -4,7 +4,7 @@ import * as promiseLimit from 'promise-limit'; import config from '@/config'; import Resolver from '../resolver'; import { resolveImage } from './image'; -import { isCollectionOrOrderedCollection, isCollection, IPerson, getApId, getOneApHrefNullable, IObject, isPropertyValue, IApPropertyValue } from '../type'; +import { isCollectionOrOrderedCollection, isCollection, IPerson, getApId, getOneApHrefNullable, IObject, isPropertyValue, IApPropertyValue, getApType } from '../type'; import { fromHtml } from '../../../mfm/from-html'; import { htmlToMfm } from '../misc/html-to-mfm'; import { resolveNote, extractEmojis } from './note'; @@ -137,7 +137,7 @@ export async function createPerson(uri: string, resolver?: Resolver): Promise normalizeForSearch(tag)).splice(0, 32); - const isBot = object.type === 'Service'; + const isBot = getApType(object) === 'Service'; const bday = person['vcard:bday']?.match(/^\d{4}-\d{2}-\d{2}/); @@ -337,7 +337,7 @@ export async function updatePerson(uri: string, resolver?: Resolver | null, hint emojis: emojiNames, name: person.name, tags, - isBot: object.type === 'Service', + isBot: getApType(object) === 'Service', isCat: (person as any).isCat === true, isLocked: !!person.manuallyApprovesFollowers, isExplorable: !!person.discoverable, @@ -476,7 +476,7 @@ export async function updateFeatured(userId: User['id']) { // Resolve and regist Notes const limit = promiseLimit(2); const featuredNotes = await Promise.all(items - .filter(item => item.type === 'Note') + .filter(item => getApType(item) === 'Note') // TODO: Noteでなくてもいいかも .slice(0, 5) .map(item => limit(() => resolveNote(item, resolver)))); -- cgit v1.2.3-freya