Implement Mention object
This commit is contained in:
@@ -7,6 +7,7 @@ import { IRemoteUser } from '../../models/user';
|
||||
import uploadFromUrl from '../../drive/upload-from-url';
|
||||
import createPost from '../../post/create';
|
||||
import distributePost from '../../post/distribute';
|
||||
import resolvePerson from './resolve-person';
|
||||
import Resolver from './resolver';
|
||||
const createDOMPurify = require('dompurify');
|
||||
|
||||
@@ -53,6 +54,15 @@ class Creator {
|
||||
.map(({ object }) => object.$id);
|
||||
|
||||
const { window } = new JSDOM(note.content);
|
||||
const mentions = [];
|
||||
|
||||
for (const { href, type } of note.tags) {
|
||||
switch (type) {
|
||||
case 'Mention':
|
||||
mentions.push(resolvePerson(resolver, href));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const inserted = await createPost({
|
||||
channelId: undefined,
|
||||
@@ -69,7 +79,7 @@ class Creator {
|
||||
viaMobile: false,
|
||||
geo: undefined,
|
||||
uri: note.id
|
||||
}, null, null, []);
|
||||
}, null, null, await Promise.all(mentions));
|
||||
|
||||
const promises = [];
|
||||
|
||||
|
@@ -4,14 +4,13 @@ import User, { validateUsername, isValidName, isValidDescription } from '../../m
|
||||
import { createHttp } from '../../queue';
|
||||
import webFinger from '../webfinger';
|
||||
import create from './create';
|
||||
import Resolver from './resolver';
|
||||
|
||||
async function isCollection(collection) {
|
||||
return ['Collection', 'OrderedCollection'].includes(collection.type);
|
||||
}
|
||||
|
||||
export default async (value, verifier?: string) => {
|
||||
const { resolver, object } = await new Resolver().resolveOne(value);
|
||||
export default async (parentResolver, value, verifier?: string) => {
|
||||
const { resolver, object } = parentResolver.resolveOne(value);
|
||||
|
||||
if (
|
||||
object === null ||
|
||||
|
@@ -1,6 +1,7 @@
|
||||
import { toUnicode, toASCII } from 'punycode';
|
||||
import User from '../models/user';
|
||||
import resolvePerson from './activitypub/resolve-person';
|
||||
import Resolver from './activitypub/resolver';
|
||||
import webFinger from './webfinger';
|
||||
|
||||
export default async (username, host, option) => {
|
||||
@@ -19,7 +20,7 @@ export default async (username, host, option) => {
|
||||
throw new Error();
|
||||
}
|
||||
|
||||
user = await resolvePerson(self.href, acctLower);
|
||||
user = await resolvePerson(new Resolver(), self.href, acctLower);
|
||||
}
|
||||
|
||||
return user;
|
||||
|
Reference in New Issue
Block a user