diff --git a/packages/backend/src/core/RemoteUserResolveService.ts b/packages/backend/src/core/RemoteUserResolveService.ts index 3d21cb92a9..d239fb637d 100644 --- a/packages/backend/src/core/RemoteUserResolveService.ts +++ b/packages/backend/src/core/RemoteUserResolveService.ts @@ -8,7 +8,7 @@ import chalk from 'chalk'; import { IsNull } from 'typeorm'; import { DI } from '@/di-symbols.js'; import type { UsersRepository } from '@/models/_.js'; -import type { MiLocalUser, MiRemoteUser } from '@/models/User.js'; +import type { MiUser, MiLocalUser, MiRemoteUser } from '@/models/User.js'; import type { Config } from '@/config.js'; import type Logger from '@/logger.js'; import { UtilityService } from '@/core/UtilityService.js'; @@ -59,7 +59,7 @@ export class RemoteUserResolveService { const acct = Acct.toString({ username, host }); // username+host -> acct (handle) // Try fetch from DB - let user = await this.cacheService.findUserByAcct(acct).catch(() => null); // Error is expected if the user doesn't exist yet + let user: MiUser | null | undefined = await this.cacheService.findOptionalUserByAcct(acct); // Opportunistically update remote users if (user != null && isRemoteUser(user)) { diff --git a/packages/backend/src/core/activitypub/ApDbResolverService.ts b/packages/backend/src/core/activitypub/ApDbResolverService.ts index a5259b1c4a..aba526b19b 100644 --- a/packages/backend/src/core/activitypub/ApDbResolverService.ts +++ b/packages/backend/src/core/activitypub/ApDbResolverService.ts @@ -92,10 +92,9 @@ export class ApDbResolverService implements OnApplicationShutdown { key: MiUserPublickey; } | null> { const key = await this.apPersonService.findPublicKeyByKeyId(keyId); - if (key == null) return null; - const user = await this.cacheService.findUserById(key.userId).catch(() => null) as MiRemoteUser | null; + const user = await this.cacheService.findOptionalRemoteUserById(key.userId); if (user == null) return null; if (user.isDeleted) return null; diff --git a/packages/backend/src/core/activitypub/models/ApPersonService.ts b/packages/backend/src/core/activitypub/models/ApPersonService.ts index 7a3f59fbd0..0ee4a75e2a 100644 --- a/packages/backend/src/core/activitypub/models/ApPersonService.ts +++ b/packages/backend/src/core/activitypub/models/ApPersonService.ts @@ -304,14 +304,14 @@ export class ApPersonService implements OnModuleInit { withSuspended: opts?.withSuspended ?? true, }; - let userId; + let userId: string | null | undefined; // Resolve URI -> User ID const parsed = this.utilityService.parseUri(uri); if (parsed.local) { userId = parsed.type === 'users' ? parsed.id : null; } else { - userId = await this.uriPersonCache.fetch(uri).catch(() => null); + userId = await this.uriPersonCache.fetchMaybe(uri); } // No match @@ -319,8 +319,7 @@ export class ApPersonService implements OnModuleInit { return null; } - const user = await this.cacheService.findUserById(userId) - .catch(() => null) as MiLocalUser | MiRemoteUser | null; + const user = await this.cacheService.findOptionalUserById(userId) as MiLocalUser | MiRemoteUser | null; if (user?.isDeleted && !_opts.withDeleted) { return null; diff --git a/packages/backend/src/server/api/endpoints/federation/update-remote-user.ts b/packages/backend/src/server/api/endpoints/federation/update-remote-user.ts index aec1d54fbe..c93ac79036 100644 --- a/packages/backend/src/server/api/endpoints/federation/update-remote-user.ts +++ b/packages/backend/src/server/api/endpoints/federation/update-remote-user.ts @@ -48,7 +48,7 @@ export default class extends Endpoint { // eslint- private readonly cacheService: CacheService, ) { super(meta, paramDef, async (ps) => { - const user = await this.cacheService.findRemoteUserById(ps.userId).catch(() => null); + const user = await this.cacheService.findOptionalRemoteUserById(ps.userId); if (!user) { throw new ApiError(meta.errors.noSuchUser); diff --git a/packages/backend/src/server/api/endpoints/users/show.ts b/packages/backend/src/server/api/endpoints/users/show.ts index 1733c5e460..57ed7a1482 100644 --- a/packages/backend/src/server/api/endpoints/users/show.ts +++ b/packages/backend/src/server/api/endpoints/users/show.ts @@ -138,7 +138,7 @@ export default class extends Endpoint { // eslint- if (ps.username) { user = await this.remoteUserResolveService.resolveUser(ps.username, ps.host ?? null).catch(() => null); } else if (ps.userId != null) { - user = await this.cacheService.findUserById(ps.userId).catch(() => null); + user = await this.cacheService.findOptionalUserById(ps.userId); } if (user == null && ps.host != null) {