unoffical wafrn mirror
wafrn.net
atproto
social-network
activitypub
1import { Blocks, Post, User } from "../../../models/index.js";
2import { activityPubObject } from "../../../interfaces/fediverse/activityPubObject.js";
3import { deletePostCommon } from "../../deletePost.js";
4import { logger } from "../../logger.js";
5import { redisCache } from "../../redis.js";
6import { removeUser } from "../removeUser.js";
7import { signAndAccept } from "../signAndAccept.js";
8
9async function DeleteActivity(
10 body: activityPubObject,
11 remoteUser: User,
12 user: User
13) {
14 // TODO ????
15 const apObject: activityPubObject = body.object.type ? body.object : body;
16 // TODO divide in files
17 try {
18 if (typeof apObject.object === "string") {
19 // we assume its just the url of an user
20 await removeUser(apObject.object);
21 // await signAndAccept({ body: body }, remoteUser, user)
22 return;
23 } else {
24 switch (apObject.type) {
25 case "Tombstone": {
26 const postToDelete = await Post.findOne({
27 where: {
28 remotePostId: apObject.id,
29 },
30 });
31 if (postToDelete) {
32 await deletePostCommon(postToDelete.id);
33 }
34 // await signAndAccept({ body: body }, remoteUser, user)
35 break;
36 }
37 default: {
38 logger.info({ message: `DELETE NOT IMPLEMENTED`, apObject });
39 }
40 }
41 }
42 } catch (error) {
43 logger.trace({
44 message: "error with delete petition",
45 error: error,
46 petition: body,
47 });
48 }
49}
50
51export { DeleteActivity };