wip
This commit is contained in:
@ -4,10 +4,10 @@ const createDOMPurify = require('dompurify');
|
||||
import Resolver from '../resolver';
|
||||
import DriveFile from '../../../models/drive-file';
|
||||
import Post from '../../../models/post';
|
||||
import uploadFromUrl from '../../../drive/upload-from-url';
|
||||
import createPost from '../../../post/create';
|
||||
import uploadFromUrl from '../../../api/drive/upload-from-url';
|
||||
import createPost from '../../../api/post/create';
|
||||
|
||||
export default async (resolver: Resolver, actor, activity): Promise<void> => {
|
||||
export default async (actor, activity): Promise<void> => {
|
||||
if ('actor' in activity && actor.account.uri !== activity.actor) {
|
||||
throw new Error('invalid actor');
|
||||
}
|
||||
@ -31,6 +31,8 @@ export default async (resolver: Resolver, actor, activity): Promise<void> => {
|
||||
throw new Error(`already registered: ${uri}`);
|
||||
}
|
||||
|
||||
const resolver = new Resolver();
|
||||
|
||||
const object = await resolver.resolve(activity);
|
||||
|
||||
switch (object.type) {
|
||||
|
@ -1,15 +1,9 @@
|
||||
import { MongoError } from 'mongodb';
|
||||
import parseAcct from '../../../acct/parse';
|
||||
import Following, { IFollowing } from '../../../models/following';
|
||||
import User from '../../../models/user';
|
||||
import config from '../../../config';
|
||||
import queue from '../../../queue';
|
||||
import context from '../renderer/context';
|
||||
import renderAccept from '../renderer/accept';
|
||||
import request from '../../request';
|
||||
import Resolver from '../resolver';
|
||||
import follow from '../../../api/following/create';
|
||||
|
||||
export default async (resolver: Resolver, actor, activity, distribute) => {
|
||||
export default async (actor, activity): Promise<void> => {
|
||||
const prefix = config.url + '/@';
|
||||
const id = activity.object.id || activity.object;
|
||||
|
||||
@ -27,52 +21,5 @@ export default async (resolver: Resolver, actor, activity, distribute) => {
|
||||
throw new Error();
|
||||
}
|
||||
|
||||
if (!distribute) {
|
||||
const { _id } = await Following.findOne({
|
||||
followerId: actor._id,
|
||||
followeeId: followee._id
|
||||
});
|
||||
|
||||
return {
|
||||
resolver,
|
||||
object: { $ref: 'following', $id: _id }
|
||||
};
|
||||
}
|
||||
|
||||
const promisedFollowing = Following.insert({
|
||||
createdAt: new Date(),
|
||||
followerId: actor._id,
|
||||
followeeId: followee._id
|
||||
}).then(following => new Promise((resolve, reject) => {
|
||||
queue.create('http', {
|
||||
type: 'follow',
|
||||
following: following._id
|
||||
}).save(error => {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
resolve(following);
|
||||
}
|
||||
});
|
||||
}) as Promise<IFollowing>, async error => {
|
||||
// duplicate key error
|
||||
if (error instanceof MongoError && error.code === 11000) {
|
||||
return Following.findOne({
|
||||
followerId: actor._id,
|
||||
followeeId: followee._id
|
||||
});
|
||||
}
|
||||
|
||||
throw error;
|
||||
});
|
||||
|
||||
const accept = renderAccept(activity);
|
||||
accept['@context'] = context;
|
||||
|
||||
await request(followee, actor.account.inbox, accept);
|
||||
|
||||
return promisedFollowing.then(({ _id }) => ({
|
||||
resolver,
|
||||
object: { $ref: 'following', $id: _id }
|
||||
}));
|
||||
await follow(actor, followee, activity);
|
||||
};
|
||||
|
Reference in New Issue
Block a user