Fix: リモートユーザーの修復処理が自動的に実行されない for v10 (#4763)
* Fix: ユーザーresyncが自動実行されない * ここにあっても意味がない * lastFetchedAt事前更新はWebFingerする前のみ * lint fix
This commit is contained in:
parent
7d31bd97ff
commit
98b8a94f2b
3 changed files with 14 additions and 20 deletions
|
@ -294,13 +294,6 @@ export async function updatePerson(uri: string, resolver?: Resolver, hint?: obje
|
|||
}
|
||||
//#endregion
|
||||
|
||||
// 繋がらないインスタンスに何回も試行するのを防ぐ, 後続の同様処理の連続試行を防ぐ ため 試行前にも更新する
|
||||
await User.update({ _id: exist._id }, {
|
||||
$set: {
|
||||
lastFetchedAt: new Date(),
|
||||
},
|
||||
});
|
||||
|
||||
if (resolver == null) resolver = new Resolver();
|
||||
|
||||
const object = hint || await resolver.resolve(uri) as any;
|
||||
|
|
|
@ -9,7 +9,7 @@ import chalk from 'chalk';
|
|||
|
||||
const logger = remoteLogger.createSubLogger('resolve-user');
|
||||
|
||||
export default async (username: string, _host: string, option?: any, resync?: boolean): Promise<IUser> => {
|
||||
export default async (username: string, _host: string, option?: any, resync = false): Promise<IUser> => {
|
||||
const usernameLower = username.toLowerCase();
|
||||
|
||||
if (_host == null) {
|
||||
|
@ -28,7 +28,7 @@ export default async (username: string, _host: string, option?: any, resync?: bo
|
|||
return await User.findOne({ usernameLower, host: null });
|
||||
}
|
||||
|
||||
const user = await User.findOne({ usernameLower, host }, option);
|
||||
const user = await User.findOne({ usernameLower, host }, option) as IRemoteUser;
|
||||
|
||||
const acctLower = `${usernameLower}@${hostAscii}`;
|
||||
|
||||
|
@ -39,14 +39,22 @@ export default async (username: string, _host: string, option?: any, resync?: bo
|
|||
return await createPerson(self.href);
|
||||
}
|
||||
|
||||
if (resync) {
|
||||
// resyncオプション OR ユーザー情報が古い場合は、WebFilgerからやりなおして返す
|
||||
if (resync || user.lastFetchedAt == null || Date.now() - user.lastFetchedAt.getTime() > 1000 * 60 * 60 * 24) {
|
||||
// 繋がらないインスタンスに何回も試行するのを防ぐ, 後続の同様処理の連続試行を防ぐ ため 試行前にも更新する
|
||||
await User.update({ _id: user._id }, {
|
||||
$set: {
|
||||
lastFetchedAt: new Date(),
|
||||
},
|
||||
});
|
||||
|
||||
logger.info(`try resync: ${acctLower}`);
|
||||
const self = await resolveSelf(acctLower);
|
||||
|
||||
if ((user as IRemoteUser).uri !== self.href) {
|
||||
if (user.uri !== self.href) {
|
||||
// if uri mismatch, Fix (user@host <=> AP's Person id(IRemoteUser.uri)) mapping.
|
||||
logger.info(`uri missmatch: ${acctLower}`);
|
||||
logger.info(`recovery missmatch uri for (username=${username}, host=${host}) from ${(user as IRemoteUser).uri} to ${self.href}`);
|
||||
logger.info(`recovery missmatch uri for (username=${username}, host=${host}) from ${user.uri} to ${self.href}`);
|
||||
|
||||
// validate uri
|
||||
const uri = new URL(self.href);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import $ from 'cafy';
|
||||
import ID, { transform, transformMany } from '../../../../misc/cafy-id';
|
||||
import User, { pack, isRemoteUser } from '../../../../models/user';
|
||||
import User, { pack } from '../../../../models/user';
|
||||
import resolveRemoteUser from '../../../../remote/resolve-user';
|
||||
import define from '../../define';
|
||||
import { apiLogger } from '../../logger';
|
||||
|
@ -96,13 +96,6 @@ export default define(meta, async (ps, me) => {
|
|||
throw new ApiError(meta.errors.noSuchUser);
|
||||
}
|
||||
|
||||
// ユーザー情報更新
|
||||
if (isRemoteUser(user)) {
|
||||
if (user.lastFetchedAt == null || Date.now() - user.lastFetchedAt.getTime() > 1000 * 60 * 60 * 24) {
|
||||
resolveRemoteUser(ps.username, ps.host, { }, true);
|
||||
}
|
||||
}
|
||||
|
||||
return await pack(user, me, {
|
||||
detail: true
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue