This commit is contained in:
syuilo 2019-03-11 19:57:50 +09:00
parent 496f42805d
commit e47c354916
No known key found for this signature in database
GPG key ID: BDC4C49D06AB9D69
3 changed files with 28 additions and 35 deletions

View file

@ -6,7 +6,7 @@ import * as mongo from 'mongodb';
import * as request from 'request'; import * as request from 'request';
import { queueLogger } from '../../logger'; import { queueLogger } from '../../logger';
import User, { isRemoteUser, fetchProxyAccount } from '../../../models/user'; import User from '../../../models/user';
import config from '../../../config'; import config from '../../../config';
import UserList from '../../../models/user-list'; import UserList from '../../../models/user-list';
import DriveFile from '../../../models/drive-file'; import DriveFile from '../../../models/drive-file';
@ -14,9 +14,7 @@ import chalk from 'chalk';
import { getOriginalUrl } from '../../../misc/get-drive-file-url'; import { getOriginalUrl } from '../../../misc/get-drive-file-url';
import parseAcct from '../../../misc/acct/parse'; import parseAcct from '../../../misc/acct/parse';
import resolveUser from '../../../remote/resolve-user'; import resolveUser from '../../../remote/resolve-user';
import { renderActivity } from '../../../remote/activitypub/renderer'; import { pushUserToUserList } from '../../../services/user-list/push';
import renderFollow from '../../../remote/activitypub/renderer/follow';
import { deliver } from '../..';
const logger = queueLogger.createSubLogger('import-user-lists'); const logger = queueLogger.createSubLogger('import-user-lists');
@ -130,18 +128,7 @@ export async function importUserLists(job: Bull.Job, done: any): Promise<void> {
target = await resolveUser(username, host); target = await resolveUser(username, host);
} }
await UserList.update({ _id: list._id }, { pushUserToUserList(target, list);
$push: {
userIds: target._id
}
});
// このインスタンス内にこのリモートユーザーをフォローしているユーザーがいなくても投稿を受け取るためにダミーのユーザーがフォローしたということにする
if (isRemoteUser(target)) {
const proxy = await fetchProxyAccount();
const content = renderActivity(renderFollow(proxy, user));
deliver(proxy, content, target.inbox);
}
} }
logger.succ('Imported'); logger.succ('Imported');

View file

@ -1,14 +1,10 @@
import $ from 'cafy'; import $ from 'cafy';
import ID, { transform } from '../../../../../misc/cafy-id'; import ID, { transform } from '../../../../../misc/cafy-id';
import UserList from '../../../../../models/user-list'; import UserList from '../../../../../models/user-list';
import { pack as packUser, isRemoteUser, fetchProxyAccount } from '../../../../../models/user';
import { publishUserListStream } from '../../../../../services/stream';
import { renderActivity } from '../../../../../remote/activitypub/renderer';
import renderFollow from '../../../../../remote/activitypub/renderer/follow';
import { deliver } from '../../../../../queue';
import define from '../../../define'; import define from '../../../define';
import { ApiError } from '../../../error'; import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters'; import { getUser } from '../../../common/getters';
import { pushUserToUserList } from '../../../../../services/user-list/push';
export const meta = { export const meta = {
desc: { desc: {
@ -81,18 +77,5 @@ export default define(meta, async (ps, me) => {
} }
// Push the user // Push the user
await UserList.update({ _id: userList._id }, { pushUserToUserList(user, userList);
$push: {
userIds: user._id
}
});
publishUserListStream(userList._id, 'userAdded', await packUser(user));
// このインスタンス内にこのリモートユーザーをフォローしているユーザーがいなくても投稿を受け取るためにダミーのユーザーがフォローしたということにする
if (isRemoteUser(user)) {
const proxy = await fetchProxyAccount();
const content = renderActivity(renderFollow(proxy, user));
deliver(proxy, content, user.inbox);
}
}); });

View file

@ -0,0 +1,23 @@
import { pack as packUser, IUser, isRemoteUser, fetchProxyAccount } from '../../models/user';
import UserList, { IUserList } from '../../models/user-list';
import { renderActivity } from '../../remote/activitypub/renderer';
import { deliver } from '../../queue';
import renderFollow from '../../remote/activitypub/renderer/follow';
import { publishUserListStream } from '../stream';
export async function pushUserToUserList(target: IUser, list: IUserList) {
await UserList.update({ _id: list._id }, {
$push: {
userIds: target._id
}
});
publishUserListStream(list._id, 'userAdded', await packUser(target));
// このインスタンス内にこのリモートユーザーをフォローしているユーザーがいなくても投稿を受け取るためにダミーのユーザーがフォローしたということにする
if (isRemoteUser(target)) {
const proxy = await fetchProxyAccount();
const content = renderActivity(renderFollow(proxy, target));
deliver(proxy, content, target.inbox);
}
}