[backend] Catch errors in UserRepository.userFromURI

This fixes sporadic errors during rendering of follower/following lists.
This commit is contained in:
Laura Hausmann 2024-06-10 18:31:50 +02:00
parent d8a75cdd08
commit 1c6ec9ad08
No known key found for this signature in database
GPG key ID: D044E84C5BE01605

View file

@ -241,24 +241,29 @@ export const UserRepository = db.getRepository(User).extend({
}, },
async userFromURI(uri: string): Promise<User | null> { async userFromURI(uri: string): Promise<User | null> {
const dbResolver = new DbResolver(); try {
let local = await dbResolver.getUserFromApId(uri); const dbResolver = new DbResolver();
if (local) { let local = await dbResolver.getUserFromApId(uri);
return local; if (local) {
return local;
}
// fetching Object once from remote
const resolver = new Resolver();
const object = (await resolver.resolve(uri)) as any;
// /@user If a URI other than the id is specified,
// the URI is determined here
if (uri !== object.id) {
local = await dbResolver.getUserFromApId(object.id);
if (local != null) return local;
}
return isActor(object) ? await createPerson(getApId(object)) : null;
} }
catch {
// fetching Object once from remote return null;
const resolver = new Resolver();
const object = (await resolver.resolve(uri)) as any;
// /@user If a URI other than the id is specified,
// the URI is determined here
if (uri !== object.id) {
local = await dbResolver.getUserFromApId(object.id);
if (local != null) return local;
} }
return isActor(object) ? await createPerson(getApId(object)) : null;
}, },
async getHasUnreadAntenna(userId: User["id"]): Promise<boolean> { async getHasUnreadAntenna(userId: User["id"]): Promise<boolean> {