diff options
Diffstat (limited to 'src/remote/activitypub/renderer')
22 files changed, 147 insertions, 150 deletions
diff --git a/src/remote/activitypub/renderer/accept.ts b/src/remote/activitypub/renderer/accept.ts index fdbdff3f12..21b4629074 100644 --- a/src/remote/activitypub/renderer/accept.ts +++ b/src/remote/activitypub/renderer/accept.ts @@ -1,8 +1,8 @@ import config from '../../../config'; -import { ILocalUser } from '../../../models/user'; +import { ILocalUser } from '../../../models/entities/user'; export default (object: any, user: ILocalUser) => ({ type: 'Accept', - actor: `${config.url}/users/${user._id}`, + actor: `${config.url}/users/${user.id}`, object }); diff --git a/src/remote/activitypub/renderer/add.ts b/src/remote/activitypub/renderer/add.ts index 4d6fe392aa..46f937f61d 100644 --- a/src/remote/activitypub/renderer/add.ts +++ b/src/remote/activitypub/renderer/add.ts @@ -1,9 +1,9 @@ import config from '../../../config'; -import { ILocalUser } from '../../../models/user'; +import { ILocalUser } from '../../../models/entities/user'; export default (user: ILocalUser, target: any, object: any) => ({ type: 'Add', - actor: `${config.url}/users/${user._id}`, + actor: `${config.url}/users/${user.id}`, target, object }); diff --git a/src/remote/activitypub/renderer/announce.ts b/src/remote/activitypub/renderer/announce.ts index f6f2f9bdcd..11e7be449b 100644 --- a/src/remote/activitypub/renderer/announce.ts +++ b/src/remote/activitypub/renderer/announce.ts @@ -1,7 +1,7 @@ import config from '../../../config'; -import { INote } from '../../../models/note'; +import { Note } from '../../../models/entities/note'; -export default (object: any, note: INote) => { +export default (object: any, note: Note) => { const attributedTo = `${config.url}/users/${note.userId}`; let to: string[] = []; @@ -18,7 +18,7 @@ export default (object: any, note: INote) => { } return { - id: `${config.url}/notes/${note._id}/activity`, + id: `${config.url}/notes/${note.id}/activity`, actor: `${config.url}/users/${note.userId}`, type: 'Announce', published: note.createdAt.toISOString(), diff --git a/src/remote/activitypub/renderer/block.ts b/src/remote/activitypub/renderer/block.ts index 694f3a1418..946c45a813 100644 --- a/src/remote/activitypub/renderer/block.ts +++ b/src/remote/activitypub/renderer/block.ts @@ -1,8 +1,8 @@ import config from '../../../config'; -import { ILocalUser, IRemoteUser } from '../../../models/user'; +import { ILocalUser, IRemoteUser } from '../../../models/entities/user'; export default (blocker?: ILocalUser, blockee?: IRemoteUser) => ({ type: 'Block', - actor: `${config.url}/users/${blocker._id}`, + actor: `${config.url}/users/${blocker.id}`, object: blockee.uri }); diff --git a/src/remote/activitypub/renderer/create.ts b/src/remote/activitypub/renderer/create.ts index 1ee1418fce..e1fc0515c8 100644 --- a/src/remote/activitypub/renderer/create.ts +++ b/src/remote/activitypub/renderer/create.ts @@ -1,9 +1,9 @@ import config from '../../../config'; -import { INote } from '../../../models/note'; +import { Note } from '../../../models/entities/note'; -export default (object: any, note: INote) => { +export default (object: any, note: Note) => { const activity = { - id: `${config.url}/notes/${note._id}/activity`, + id: `${config.url}/notes/${note.id}/activity`, actor: `${config.url}/users/${note.userId}`, type: 'Create', published: note.createdAt.toISOString(), diff --git a/src/remote/activitypub/renderer/delete.ts b/src/remote/activitypub/renderer/delete.ts index e090e1c886..a98c97e6e9 100644 --- a/src/remote/activitypub/renderer/delete.ts +++ b/src/remote/activitypub/renderer/delete.ts @@ -1,8 +1,8 @@ import config from '../../../config'; -import { ILocalUser } from '../../../models/user'; +import { ILocalUser } from '../../../models/entities/user'; export default (object: any, user: ILocalUser) => ({ type: 'Delete', - actor: `${config.url}/users/${user._id}`, + actor: `${config.url}/users/${user.id}`, object }); diff --git a/src/remote/activitypub/renderer/document.ts b/src/remote/activitypub/renderer/document.ts index 17721e9417..4f6ea8c4ee 100644 --- a/src/remote/activitypub/renderer/document.ts +++ b/src/remote/activitypub/renderer/document.ts @@ -1,8 +1,8 @@ -import { IDriveFile } from '../../../models/drive-file'; -import getDriveFileUrl from '../../../misc/get-drive-file-url'; +import { DriveFile } from '../../../models/entities/drive-file'; +import { DriveFiles } from '../../../models'; -export default (file: IDriveFile) => ({ +export default (file: DriveFile) => ({ type: 'Document', - mediaType: file.contentType, - url: getDriveFileUrl(file) + mediaType: file.type, + url: DriveFiles.getPublicUrl(file) }); diff --git a/src/remote/activitypub/renderer/emoji.ts b/src/remote/activitypub/renderer/emoji.ts index 1a05b4e89e..947a96df37 100644 --- a/src/remote/activitypub/renderer/emoji.ts +++ b/src/remote/activitypub/renderer/emoji.ts @@ -1,7 +1,7 @@ -import { IEmoji } from '../../../models/emoji'; import config from '../../../config'; +import { Emoji } from '../../../models/entities/emoji'; -export default (emoji: IEmoji) => ({ +export default (emoji: Emoji) => ({ id: `${config.url}/emojis/${emoji.name}`, type: 'Emoji', name: `:${emoji.name}:`, diff --git a/src/remote/activitypub/renderer/follow-user.ts b/src/remote/activitypub/renderer/follow-user.ts index 9a488d392b..9446be3c86 100644 --- a/src/remote/activitypub/renderer/follow-user.ts +++ b/src/remote/activitypub/renderer/follow-user.ts @@ -1,16 +1,12 @@ import config from '../../../config'; -import * as mongo from 'mongodb'; -import User, { isLocalUser } from '../../../models/user'; +import { Users } from '../../../models'; +import { User } from '../../../models/entities/user'; /** * Convert (local|remote)(Follower|Followee)ID to URL * @param id Follower|Followee ID */ -export default async function renderFollowUser(id: mongo.ObjectID): Promise<any> { - - const user = await User.findOne({ - _id: id - }); - - return isLocalUser(user) ? `${config.url}/users/${user._id}` : user.uri; +export default async function renderFollowUser(id: User['id']): Promise<any> { + const user = await Users.findOne(id); + return Users.isLocalUser(user) ? `${config.url}/users/${user.id}` : user.uri; } diff --git a/src/remote/activitypub/renderer/follow.ts b/src/remote/activitypub/renderer/follow.ts index 98d4cdd020..400b15ec7b 100644 --- a/src/remote/activitypub/renderer/follow.ts +++ b/src/remote/activitypub/renderer/follow.ts @@ -1,11 +1,12 @@ import config from '../../../config'; -import { IUser, isLocalUser } from '../../../models/user'; +import { User } from '../../../models/entities/user'; +import { Users } from '../../../models'; -export default (follower: IUser, followee: IUser, requestId?: string) => { +export default (follower: User, followee: User, requestId?: string) => { const follow = { type: 'Follow', - actor: isLocalUser(follower) ? `${config.url}/users/${follower._id}` : follower.uri, - object: isLocalUser(followee) ? `${config.url}/users/${followee._id}` : followee.uri + actor: Users.isLocalUser(follower) ? `${config.url}/users/${follower.id}` : follower.uri, + object: Users.isLocalUser(followee) ? `${config.url}/users/${followee.id}` : followee.uri } as any; if (requestId) follow.id = requestId; diff --git a/src/remote/activitypub/renderer/image.ts b/src/remote/activitypub/renderer/image.ts index ec637b9521..ce98f98c62 100644 --- a/src/remote/activitypub/renderer/image.ts +++ b/src/remote/activitypub/renderer/image.ts @@ -1,8 +1,8 @@ -import { IDriveFile } from '../../../models/drive-file'; -import getDriveFileUrl from '../../../misc/get-drive-file-url'; +import { DriveFile } from '../../../models/entities/drive-file'; +import { DriveFiles } from '../../../models'; -export default (file: IDriveFile) => ({ +export default (file: DriveFile) => ({ type: 'Image', - url: getDriveFileUrl(file), - sensitive: file.metadata.isSensitive + url: DriveFiles.getPublicUrl(file), + sensitive: file.isSensitive }); diff --git a/src/remote/activitypub/renderer/key.ts b/src/remote/activitypub/renderer/key.ts index 0d5e52557c..fb5975a6c4 100644 --- a/src/remote/activitypub/renderer/key.ts +++ b/src/remote/activitypub/renderer/key.ts @@ -1,10 +1,11 @@ +import { createPublicKey } from 'crypto'; import config from '../../../config'; -import { extractPublic } from '../../../crypto_key'; -import { ILocalUser } from '../../../models/user'; +import { ILocalUser } from '../../../models/entities/user'; +import { UserKeypair } from '../../../models/entities/user-keypair'; -export default (user: ILocalUser) => ({ - id: `${config.url}/users/${user._id}/publickey`, +export default (user: ILocalUser, key: UserKeypair) => ({ + id: `${config.url}/users/${user.id}/publickey`, type: 'Key', - owner: `${config.url}/users/${user._id}`, - publicKeyPem: extractPublic(user.keypair) + owner: `${config.url}/users/${user.id}`, + publicKeyPem: createPublicKey(key.keyPem) }); diff --git a/src/remote/activitypub/renderer/like.ts b/src/remote/activitypub/renderer/like.ts index 523cb4f1ad..01f10ec0a9 100644 --- a/src/remote/activitypub/renderer/like.ts +++ b/src/remote/activitypub/renderer/like.ts @@ -1,10 +1,10 @@ import config from '../../../config'; -import { ILocalUser } from '../../../models/user'; -import { INote } from '../../../models/note'; +import { ILocalUser } from '../../../models/entities/user'; +import { Note } from '../../../models/entities/note'; -export default (user: ILocalUser, note: INote, reaction: string) => ({ +export default (user: ILocalUser, note: Note, reaction: string) => ({ type: 'Like', - actor: `${config.url}/users/${user._id}`, - object: note.uri ? note.uri : `${config.url}/notes/${note._id}`, + actor: `${config.url}/users/${user.id}`, + object: note.uri ? note.uri : `${config.url}/notes/${note.id}`, _misskey_reaction: reaction }); diff --git a/src/remote/activitypub/renderer/mention.ts b/src/remote/activitypub/renderer/mention.ts index 8d12e6d8bf..889be5d85d 100644 --- a/src/remote/activitypub/renderer/mention.ts +++ b/src/remote/activitypub/renderer/mention.ts @@ -1,8 +1,9 @@ -import { IUser, isRemoteUser } from '../../../models/user'; import config from '../../../config'; +import { User, ILocalUser } from '../../../models/entities/user'; +import { Users } from '../../../models'; -export default (mention: IUser) => ({ +export default (mention: User) => ({ type: 'Mention', - href: isRemoteUser(mention) ? mention.uri : `${config.url}/@${mention.username}`, - name: isRemoteUser(mention) ? `@${mention.username}@${mention.host}` : `@${mention.username}`, + href: Users.isRemoteUser(mention) ? mention.uri : `${config.url}/@${(mention as ILocalUser).username}`, + name: Users.isRemoteUser(mention) ? `@${mention.username}@${mention.host}` : `@${(mention as ILocalUser).username}`, }); diff --git a/src/remote/activitypub/renderer/note.ts b/src/remote/activitypub/renderer/note.ts index 8b349526e1..5b36366b28 100644 --- a/src/remote/activitypub/renderer/note.ts +++ b/src/remote/activitypub/renderer/note.ts @@ -3,29 +3,27 @@ import renderHashtag from './hashtag'; import renderMention from './mention'; import renderEmoji from './emoji'; import config from '../../../config'; -import DriveFile, { IDriveFile } from '../../../models/drive-file'; -import Note, { INote } from '../../../models/note'; -import User from '../../../models/user'; import toHtml from '../misc/get-note-html'; -import Emoji, { IEmoji } from '../../../models/emoji'; +import { Note, IMentionedRemoteUsers } from '../../../models/entities/note'; +import { DriveFile } from '../../../models/entities/drive-file'; +import { DriveFiles, Notes, Users, Emojis, Polls } from '../../../models'; +import { In } from 'typeorm'; +import { Emoji } from '../../../models/entities/emoji'; +import { Poll } from '../../../models/entities/poll'; -export default async function renderNote(note: INote, dive = true): Promise<any> { - const promisedFiles: Promise<IDriveFile[]> = note.fileIds - ? DriveFile.find({ _id: { $in: note.fileIds } }) +export default async function renderNote(note: Note, dive = true): Promise<any> { + const promisedFiles: Promise<DriveFile[]> = note.fileIds.length > 1 + ? DriveFiles.find({ id: In(note.fileIds) }) : Promise.resolve([]); let inReplyTo; - let inReplyToNote: INote; + let inReplyToNote: Note; if (note.replyId) { - inReplyToNote = await Note.findOne({ - _id: note.replyId, - }); + inReplyToNote = await Notes.findOne(note.replyId); if (inReplyToNote !== null) { - const inReplyToUser = await User.findOne({ - _id: inReplyToNote.userId, - }); + const inReplyToUser = await Users.findOne(inReplyToNote.userId); if (inReplyToUser !== null) { if (inReplyToNote.uri) { @@ -34,7 +32,7 @@ export default async function renderNote(note: INote, dive = true): Promise<any> if (dive) { inReplyTo = await renderNote(inReplyToNote, false); } else { - inReplyTo = `${config.url}/notes/${inReplyToNote._id}`; + inReplyTo = `${config.url}/notes/${inReplyToNote.id}`; } } } @@ -46,24 +44,20 @@ export default async function renderNote(note: INote, dive = true): Promise<any> let quote; if (note.renoteId) { - const renote = await Note.findOne({ - _id: note.renoteId, - }); + const renote = await Notes.findOne(note.renoteId); if (renote) { - quote = renote.uri ? renote.uri : `${config.url}/notes/${renote._id}`; + quote = renote.uri ? renote.uri : `${config.url}/notes/${renote.id}`; } } - const user = await User.findOne({ - _id: note.userId + const user = await Users.findOne({ + id: note.userId }); - const attributedTo = `${config.url}/users/${user._id}`; + const attributedTo = `${config.url}/users/${user.id}`; - const mentions = note.mentionedRemoteUsers && note.mentionedRemoteUsers.length > 0 - ? note.mentionedRemoteUsers.map(x => x.uri) - : []; + const mentions = (JSON.parse(note.mentionedRemoteUsers) as IMentionedRemoteUsers).map(x => x.uri); let to: string[] = []; let cc: string[] = []; @@ -81,10 +75,8 @@ export default async function renderNote(note: INote, dive = true): Promise<any> to = mentions; } - const mentionedUsers = note.mentions ? await User.find({ - _id: { - $in: note.mentions - } + const mentionedUsers = note.mentions.length > 0 ? await Users.find({ + id: In(note.mentions) }) : []; const hashtagTags = (note.tags || []).map(tag => renderHashtag(tag)); @@ -93,23 +85,28 @@ export default async function renderNote(note: INote, dive = true): Promise<any> const files = await promisedFiles; let text = note.text; + let poll: Poll; + + if (note.hasPoll) { + poll = await Polls.findOne({ noteId: note.id }); + } let question: string; - if (note.poll != null) { + if (poll) { if (text == null) text = ''; - const url = `${config.url}/notes/${note._id}`; + const url = `${config.url}/notes/${note.id}`; // TODO: i18n text += `\n[リモートで結果を表示](${url})`; - question = `${config.url}/questions/${note._id}`; + question = `${config.url}/questions/${note.id}`; } let apText = text; if (apText == null) apText = ''; // Provides choices as text for AP - if (note.poll != null) { - const cs = note.poll.choices.map(c => `${c.id}: ${c.text}`); + if (poll) { + const cs = poll.choices.map((c, i) => `${i}: ${c}`); apText += '\n----------------------------------------\n'; apText += cs.join('\n'); apText += '\n----------------------------------------\n'; @@ -135,31 +132,25 @@ export default async function renderNote(note: INote, dive = true): Promise<any> ...apemojis, ]; - const { - choices = [], - expiresAt = null, - multiple = false - } = note.poll || {}; - - const asPoll = note.poll ? { + const asPoll = poll ? { type: 'Question', content: toHtml(Object.assign({}, note, { text: text })), _misskey_fallback_content: content, - [expiresAt && expiresAt < new Date() ? 'closed' : 'endTime']: expiresAt, - [multiple ? 'anyOf' : 'oneOf']: choices.map(({ text, votes }) => ({ + [poll.expiresAt && poll.expiresAt < new Date() ? 'closed' : 'endTime']: poll.expiresAt, + [poll.multiple ? 'anyOf' : 'oneOf']: poll.choices.map((text, i) => ({ type: 'Note', name: text, replies: { type: 'Collection', - totalItems: votes + totalItems: poll.votes[i] } })) } : {}; return { - id: `${config.url}/notes/${note._id}`, + id: `${config.url}/notes/${note.id}`, type: 'Note', attributedTo, summary, @@ -172,17 +163,17 @@ export default async function renderNote(note: INote, dive = true): Promise<any> cc, inReplyTo, attachment: files.map(renderDocument), - sensitive: files.some(file => file.metadata.isSensitive), + sensitive: files.some(file => file.isSensitive), tag, ...asPoll }; } -export async function getEmojis(names: string[]): Promise<IEmoji[]> { - if (names == null || names.length < 1) return []; +export async function getEmojis(names: string[]): Promise<Emoji[]> { + if (names == null || names.length === 0) return []; const emojis = await Promise.all( - names.map(name => Emoji.findOne({ + names.map(name => Emojis.findOne({ name, host: null })) 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 }; -}; +} diff --git a/src/remote/activitypub/renderer/question.ts b/src/remote/activitypub/renderer/question.ts index cf0bf387c8..6ade10d1bf 100644 --- a/src/remote/activitypub/renderer/question.ts +++ b/src/remote/activitypub/renderer/question.ts @@ -1,19 +1,20 @@ import config from '../../../config'; -import { ILocalUser } from '../../../models/user'; -import { INote } from '../../../models/note'; +import { ILocalUser } from '../../../models/entities/user'; +import { Note } from '../../../models/entities/note'; +import { Poll } from '../../../models/entities/poll'; -export default async function renderQuestion(user: ILocalUser, note: INote) { +export default async function renderQuestion(user: ILocalUser, note: Note, poll: Poll) { const question = { type: 'Question', - id: `${config.url}/questions/${note._id}`, - actor: `${config.url}/users/${user._id}`, + id: `${config.url}/questions/${note.id}`, + actor: `${config.url}/users/${user.id}`, content: note.text || '', - [note.poll.multiple ? 'anyOf' : 'oneOf']: note.poll.choices.map(c => ({ - name: c.text, - _misskey_votes: c.votes, + [poll.multiple ? 'anyOf' : 'oneOf']: poll.choices.map((text, i) => ({ + name: text, + _misskey_votes: poll.votes[i], replies: { type: 'Collection', - totalItems: c.votes + totalItems: poll.votes[i] } })) }; diff --git a/src/remote/activitypub/renderer/reject.ts b/src/remote/activitypub/renderer/reject.ts index 6d7d23708a..c4e0ba0d0a 100644 --- a/src/remote/activitypub/renderer/reject.ts +++ b/src/remote/activitypub/renderer/reject.ts @@ -1,8 +1,8 @@ import config from '../../../config'; -import { ILocalUser } from '../../../models/user'; +import { ILocalUser } from '../../../models/entities/user'; export default (object: any, user: ILocalUser) => ({ type: 'Reject', - actor: `${config.url}/users/${user._id}`, + actor: `${config.url}/users/${user.id}`, object }); diff --git a/src/remote/activitypub/renderer/remove.ts b/src/remote/activitypub/renderer/remove.ts index ed840be751..1b9a6b8c05 100644 --- a/src/remote/activitypub/renderer/remove.ts +++ b/src/remote/activitypub/renderer/remove.ts @@ -1,9 +1,9 @@ import config from '../../../config'; -import { ILocalUser } from '../../../models/user'; +import { ILocalUser } from '../../../models/entities/user'; export default (user: ILocalUser, target: any, object: any) => ({ type: 'Remove', - actor: `${config.url}/users/${user._id}`, + actor: `${config.url}/users/${user.id}`, target, object }); diff --git a/src/remote/activitypub/renderer/undo.ts b/src/remote/activitypub/renderer/undo.ts index dbcf5732be..2ff6b61b90 100644 --- a/src/remote/activitypub/renderer/undo.ts +++ b/src/remote/activitypub/renderer/undo.ts @@ -1,8 +1,8 @@ import config from '../../../config'; -import { ILocalUser, IUser } from '../../../models/user'; +import { ILocalUser, User } from '../../../models/entities/user'; -export default (object: any, user: ILocalUser | IUser) => ({ +export default (object: any, user: ILocalUser | User) => ({ type: 'Undo', - actor: `${config.url}/users/${user._id}`, + actor: `${config.url}/users/${user.id}`, object }); diff --git a/src/remote/activitypub/renderer/update.ts b/src/remote/activitypub/renderer/update.ts index cf9acc9acb..c1d5ba29b2 100644 --- a/src/remote/activitypub/renderer/update.ts +++ b/src/remote/activitypub/renderer/update.ts @@ -1,10 +1,10 @@ import config from '../../../config'; -import { ILocalUser } from '../../../models/user'; +import { ILocalUser } from '../../../models/entities/user'; export default (object: any, user: ILocalUser) => { const activity = { - id: `${config.url}/users/${user._id}#updates/${new Date().getTime()}`, - actor: `${config.url}/users/${user._id}`, + id: `${config.url}/users/${user.id}#updates/${new Date().getTime()}`, + actor: `${config.url}/users/${user.id}`, type: 'Update', to: [ 'https://www.w3.org/ns/activitystreams#Public' ], object diff --git a/src/remote/activitypub/renderer/vote.ts b/src/remote/activitypub/renderer/vote.ts index 014b76765b..8929c03460 100644 --- a/src/remote/activitypub/renderer/vote.ts +++ b/src/remote/activitypub/renderer/vote.ts @@ -1,22 +1,23 @@ import config from '../../../config'; -import { INote } from '../../../models/note'; -import { IRemoteUser, ILocalUser } from '../../../models/user'; -import { IPollVote } from '../../../models/poll-vote'; +import { Note } from '../../../models/entities/note'; +import { IRemoteUser, ILocalUser } from '../../../models/entities/user'; +import { PollVote } from '../../../models/entities/poll-vote'; +import { Poll } from '../../../models/entities/poll'; -export default async function renderVote(user: ILocalUser, vote: IPollVote, pollNote: INote, pollOwner: IRemoteUser): Promise<any> { +export default async function renderVote(user: ILocalUser, vote: PollVote, note: Note, poll: Poll, pollOwner: IRemoteUser): Promise<any> { return { - id: `${config.url}/users/${user._id}#votes/${vote._id}/activity`, - actor: `${config.url}/users/${user._id}`, + id: `${config.url}/users/${user.id}#votes/${vote.id}/activity`, + actor: `${config.url}/users/${user.id}`, type: 'Create', to: [pollOwner.uri], published: new Date().toISOString(), object: { - id: `${config.url}/users/${user._id}#votes/${vote._id}`, + id: `${config.url}/users/${user.id}#votes/${vote.id}`, type: 'Note', - attributedTo: `${config.url}/users/${user._id}`, + attributedTo: `${config.url}/users/${user.id}`, to: [pollOwner.uri], - inReplyTo: pollNote.uri, - name: pollNote.poll.choices.find(x => x.id === vote.choice).text + inReplyTo: note.uri, + name: poll.choices[vote.choice] } }; } |