diff options
Diffstat (limited to 'src/remote/activitypub/renderer/person.ts')
| -rw-r--r-- | src/remote/activitypub/renderer/person.ts | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/src/remote/activitypub/renderer/person.ts b/src/remote/activitypub/renderer/person.ts index 77e60cd61a..4c6b518eb6 100644 --- a/src/remote/activitypub/renderer/person.ts +++ b/src/remote/activitypub/renderer/person.ts @@ -1,21 +1,22 @@ import renderImage from './image'; import renderKey from './key'; import config from '../../../config'; -import { ILocalUser } from '../../../models/user'; +import { ILocalUser } from '../../../models/entities/user'; import { toHtml } from '../../../mfm/toHtml'; import { parse } from '../../../mfm/parse'; -import DriveFile from '../../../models/drive-file'; import { getEmojis } from './note'; import renderEmoji from './emoji'; import { IIdentifier } from '../models/identifier'; import renderHashtag from './hashtag'; +import { DriveFiles, UserServiceLinkings, UserKeypairs } from '../../../models'; -export default async (user: ILocalUser) => { - const id = `${config.url}/users/${user._id}`; +export async function renderPerson(user: ILocalUser) { + const id = `${config.url}/users/${user.id}`; - const [avatar, banner] = await Promise.all([ - DriveFile.findOne({ _id: user.avatarId }), - DriveFile.findOne({ _id: user.bannerId }) + const [avatar, banner, links] = await Promise.all([ + DriveFiles.findOne(user.avatarId), + DriveFiles.findOne(user.bannerId), + UserServiceLinkings.findOne({ userId: user.id }) ]); const attachment: { @@ -26,41 +27,41 @@ export default async (user: ILocalUser) => { identifier?: IIdentifier }[] = []; - if (user.twitter) { + if (links.twitter) { attachment.push({ type: 'PropertyValue', name: 'Twitter', - value: `<a href="https://twitter.com/intent/user?user_id=${user.twitter.userId}" rel="me nofollow noopener" target="_blank"><span>@${user.twitter.screenName}</span></a>`, + value: `<a href="https://twitter.com/intent/user?user_id=${links.twitterUserId}" rel="me nofollow noopener" target="_blank"><span>@${links.twitterScreenName}</span></a>`, identifier: { type: 'PropertyValue', name: 'misskey:authentication:twitter', - value: `${user.twitter.userId}@${user.twitter.screenName}` + value: `${links.twitterUserId}@${links.twitterScreenName}` } }); } - if (user.github) { + if (links.github) { attachment.push({ type: 'PropertyValue', name: 'GitHub', - value: `<a href="https://github.com/${user.github.login}" rel="me nofollow noopener" target="_blank"><span>@${user.github.login}</span></a>`, + value: `<a href="https://github.com/${links.githubLogin}" rel="me nofollow noopener" target="_blank"><span>@${links.githubLogin}</span></a>`, identifier: { type: 'PropertyValue', name: 'misskey:authentication:github', - value: `${user.github.id}@${user.github.login}` + value: `${links.githubId}@${links.githubLogin}` } }); } - if (user.discord) { + if (links.discord) { attachment.push({ type: 'PropertyValue', name: 'Discord', - value: `<a href="https://discordapp.com/users/${user.discord.id}" rel="me nofollow noopener" target="_blank"><span>${user.discord.username}#${user.discord.discriminator}</span></a>`, + value: `<a href="https://discordapp.com/users/${links.discordId}" rel="me nofollow noopener" target="_blank"><span>${links.discordUsername}#${links.discordDiscriminator}</span></a>`, identifier: { type: 'PropertyValue', name: 'misskey:authentication:discord', - value: `${user.discord.id}@${user.discord.username}#${user.discord.discriminator}` + value: `${links.discordId}@${links.discordUsername}#${links.discordDiscriminator}` } }); } @@ -75,6 +76,10 @@ export default async (user: ILocalUser) => { ...hashtagTags, ]; + const keypair = await UserKeypairs.findOne({ + userId: user.id + }); + return { type: user.isBot ? 'Service' : 'Person', id, @@ -93,8 +98,8 @@ export default async (user: ILocalUser) => { image: user.bannerId && renderImage(banner), tag, manuallyApprovesFollowers: user.isLocked, - publicKey: renderKey(user), + publicKey: renderKey(user, keypair), isCat: user.isCat, attachment: attachment.length ? attachment : undefined }; -}; +} |