diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts index aeffbeaf2918c2c087aa201782f437c4d04107c9..a40677dfc3b73f31e50f3ddbb8e08312d8998f79 100644 --- a/src/remote/activitypub/models/person.ts +++ b/src/remote/activitypub/models/person.ts @@ -271,11 +271,6 @@ export async function updatePerson(uri: string, resolver?: Resolver | null, hint } //#endregion - // 繋ãŒã‚‰ãªã„インスタンスã«ä½•å›žã‚‚試行ã™ã‚‹ã®ã‚’防ã, 後続ã®åŒæ§˜å‡¦ç†ã®é€£ç¶šè©¦è¡Œã‚’防ã ãŸã‚ 試行å‰ã«ã‚‚æ›´æ–°ã™ã‚‹ - await Users.update(exist.id, { - lastFetchedAt: new Date(), - }); - if (resolver == null) resolver = new Resolver(); const object = hint || await resolver.resolve(uri) as any; @@ -349,13 +344,13 @@ export async function updatePerson(uri: string, resolver?: Resolver | null, hint url: person.url, fields, description: person.summary ? fromHtml(person.summary) : null, - twitterUserId: services.twitter.userId, - twitterScreenName: services.twitter.screenName, - githubId: services.github.id, - githubLogin: services.github.login, - discordId: services.discord.id, - discordUsername: services.discord.username, - discordDiscriminator: services.discord.discriminator, + twitterUserId: services.twitter ? services.twitter.userId : null, + twitterScreenName: services.twitter ? services.twitter.screenName : null, + githubId: services.github ? services.github.id : null, + githubLogin: services.github ? services.github.login : null, + discordId: services.discord ? services.discord.id : null, + discordUsername: services.discord ? services.discord.username : null, + discordDiscriminator: services.discord ? services.discord.discriminator : null, }); // ãƒãƒƒã‚·ãƒ¥ã‚¿ã‚°æ›´æ–° diff --git a/src/remote/resolve-user.ts b/src/remote/resolve-user.ts index a4bfca84223812ce536a82d86e39466197d9fea1..0e2b88f05b164a6852a56dfeb6e59a816afd04b9 100644 --- a/src/remote/resolve-user.ts +++ b/src/remote/resolve-user.ts @@ -37,7 +37,7 @@ export async function resolveUser(username: string, host: string | null, option? }); } - const user = await Users.findOne({ usernameLower, host }, option); + const user = await Users.findOne({ usernameLower, host }, option) as IRemoteUser; const acctLower = `${usernameLower}@${host}`; @@ -48,14 +48,20 @@ export async function resolveUser(username: string, host: string | null, option? 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 Users.update(user.id, { + 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); diff --git a/src/server/api/endpoints/users/show.ts b/src/server/api/endpoints/users/show.ts index 46dc7341e6dd7391885091ec3812fcd617cafa76..a401166c5564ca1fd1907dddb503371d93262666 100644 --- a/src/server/api/endpoints/users/show.ts +++ b/src/server/api/endpoints/users/show.ts @@ -95,13 +95,6 @@ export default define(meta, async (ps, me) => { throw new ApiError(meta.errors.noSuchUser); } - // ãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ±æ›´æ–° - if (Users.isRemoteUser(user)) { - if (user.lastFetchedAt == null || Date.now() - user.lastFetchedAt.getTime() > 1000 * 60 * 60 * 24) { - resolveUser(user.username, user.host, { }, true); - } - } - return await Users.pack(user, me, { detail: true });