[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> {
const dbResolver = new DbResolver();
let local = await dbResolver.getUserFromApId(uri);
if (local) {
return local;
try {
const dbResolver = new DbResolver();
let local = await dbResolver.getUserFromApId(uri);
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;
}
// 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;
catch {
return null;
}
return isActor(object) ? await createPerson(getApId(object)) : null;
},
async getHasUnreadAntenna(userId: User["id"]): Promise<boolean> {