diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts index 6f62da5ca7..e1fb91fc17 100644 --- a/src/remote/activitypub/models/person.ts +++ b/src/remote/activitypub/models/person.ts @@ -18,6 +18,7 @@ import Instance from '../../../models/instance'; import getDriveFileUrl from '../../../misc/get-drive-file-url'; import { IEmoji } from '../../../models/emoji'; import { ITag } from './tag'; +import Following from '../../../models/following'; const log = debug('misskey:activitypub'); @@ -164,7 +165,7 @@ export async function createPerson(uri: string, resolver?: Resolver): Promise<IU publicKeyPem: person.publicKey.publicKeyPem }, inbox: person.inbox, - sharedInbox: person.sharedInbox, + sharedInbox: person.sharedInbox || person.endpoints ? person.endpoints.sharedInbox : undefined, featured: person.featured, endpoints: person.endpoints, uri: person.id, @@ -340,7 +341,7 @@ export async function updatePerson(uri: string, resolver?: Resolver, hint?: obje $set: { lastFetchedAt: new Date(), inbox: person.inbox, - sharedInbox: person.sharedInbox, + sharedInbox: person.sharedInbox || person.endpoints ? person.endpoints.sharedInbox : undefined, featured: person.featured, avatarId: avatar ? avatar._id : null, bannerId: banner ? banner._id : null, @@ -368,6 +369,15 @@ export async function updatePerson(uri: string, resolver?: Resolver, hint?: obje } }); + // 該当ユーザーが既にフォロワーになっていた場合はFollowingもアップデートする + await Following.update({ + followerId: exist._id + }, { + $set: { + '_follower.sharedInbox': person.sharedInbox || person.endpoints ? person.endpoints.sharedInbox : undefined + } + }); + await updateFeatured(exist._id).catch(err => console.log(err)); } diff --git a/src/remote/activitypub/renderer/person.ts b/src/remote/activitypub/renderer/person.ts index d8e10708b5..aaf78444d4 100644 --- a/src/remote/activitypub/renderer/person.ts +++ b/src/remote/activitypub/renderer/person.ts @@ -63,6 +63,7 @@ export default async (user: ILocalUser) => { following: `${id}/following`, featured: `${id}/collections/featured`, sharedInbox: `${config.url}/inbox`, + endpoints: { sharedInbox: `${config.url}/inbox` }, url: `${config.url}/@${user.username}`, preferredUsername: user.username, name: user.name, diff --git a/src/remote/activitypub/type.ts b/src/remote/activitypub/type.ts index 530aaa13db..9ffe73a670 100644 --- a/src/remote/activitypub/type.ts +++ b/src/remote/activitypub/type.ts @@ -56,7 +56,7 @@ export interface IPerson extends IObject { following: any; featured?: any; outbox: any; - endpoints: string[]; + endpoints: any; } export const isCollection = (object: IObject): object is ICollection =>