Improve handling of deleted actors

This commit is contained in:
Shadowfacts 2020-04-15 14:15:37 -04:00
parent 77ee132983
commit 4d48f64f2c
Signed by untrusted user: shadowfacts
GPG Key ID: 94A5AB95422746E5
1 changed files with 17 additions and 2 deletions

View File

@ -13,6 +13,7 @@ import { URL } from "url";
import { getConnection } from "typeorm"; import { getConnection } from "typeorm";
import Actor from "../entity/Actor"; import Actor from "../entity/Actor";
import Article from "../entity/Article"; import Article from "../entity/Article";
import Note from "../entity/Note";
const domain = process.env.DOMAIN; const domain = process.env.DOMAIN;
@ -42,7 +43,20 @@ export async function getActor(url: string, forceUpdate: boolean = false): Promi
} }
} }
const remote = await fetchActor(url); const remote = await fetchActor(url);
if (remote) cacheActor(remote); if (remote) {
cacheActor(remote);
} else {
getConnection().createQueryBuilder()
.delete()
.from(Actor, "actor")
.where("actor.id = :id", { id: url })
.execute();
getConnection().createQueryBuilder()
.delete()
.from(Note, "note")
.where("note.\"actorId\" = :actor", { actor: url })
.execute();
}
return remote; return remote;
} }
@ -88,7 +102,8 @@ async function fetchActor(url?: string): Promise<ActorObject | null> {
json: true json: true
}, (err, res) => { }, (err, res) => {
if (err) reject(err); if (err) reject(err);
else resolve(res.body && res.body instanceof Object ? res.body as ActorObject : null); else if (!res.body || res.body.error || Object.keys(res.body).length === 0) resolve(null);
else resolve(res.body as ActorObject);
}); });
}); });
} }