Fixed 267U.pre2
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
import unfollow from "../../../../services/following/delete.js";
|
||||
import { Followings } from "../../../../models/index.js";
|
||||
import DbResolver from "../../db-resolver.js";
|
||||
export default (async (actor, activity)=>{
|
||||
const dbResolver = new DbResolver();
|
||||
const follower = await dbResolver.getUserFromApId(activity.object);
|
||||
if (follower == null) {
|
||||
return "skip: follower not found";
|
||||
}
|
||||
const following = await Followings.findOneBy({
|
||||
followerId: follower.id,
|
||||
followeeId: actor.id
|
||||
});
|
||||
if (following) {
|
||||
await unfollow(follower, actor);
|
||||
return "ok: unfollowed";
|
||||
}
|
||||
return "skip: skip: not followed";
|
||||
});
|
||||
@@ -0,0 +1,13 @@
|
||||
import { Notes } from "../../../../models/index.js";
|
||||
import { getApId } from "../../type.js";
|
||||
import deleteNote from "../../../../services/note/delete.js";
|
||||
export const undoAnnounce = async (actor, activity)=>{
|
||||
const uri = getApId(activity);
|
||||
const note = await Notes.findOneBy({
|
||||
uri,
|
||||
userId: actor.id
|
||||
});
|
||||
if (!note) return "skip: no such Announce";
|
||||
await deleteNote(actor, note);
|
||||
return "ok: deleted";
|
||||
};
|
||||
@@ -0,0 +1,17 @@
|
||||
import unblock from "../../../../services/blocking/delete.js";
|
||||
import DbResolver from "../../db-resolver.js";
|
||||
import { Users } from "../../../../models/index.js";
|
||||
export default (async (actor, activity)=>{
|
||||
const dbResolver = new DbResolver();
|
||||
const blockee = await dbResolver.getUserFromApId(activity.object);
|
||||
if (blockee == null) {
|
||||
return "skip: blockee not found";
|
||||
}
|
||||
if (blockee.host != null) {
|
||||
return "skip: The user you are trying to unblock is not a local user";
|
||||
}
|
||||
await unblock(await Users.findOneByOrFail({
|
||||
id: actor.id
|
||||
}), blockee);
|
||||
return "ok";
|
||||
});
|
||||
@@ -0,0 +1,31 @@
|
||||
import unfollow from "../../../../services/following/delete.js";
|
||||
import cancelRequest from "../../../../services/following/requests/cancel.js";
|
||||
import { FollowRequests, Followings } from "../../../../models/index.js";
|
||||
import DbResolver from "../../db-resolver.js";
|
||||
export default (async (actor, activity)=>{
|
||||
const dbResolver = new DbResolver();
|
||||
const followee = await dbResolver.getUserFromApId(activity.object);
|
||||
if (followee == null) {
|
||||
return "skip: followee not found";
|
||||
}
|
||||
if (followee.host != null) {
|
||||
return "skip: The user you are trying to unfollow is not a local user";
|
||||
}
|
||||
const req = await FollowRequests.findOneBy({
|
||||
followerId: actor.id,
|
||||
followeeId: followee.id
|
||||
});
|
||||
const following = await Followings.findOneBy({
|
||||
followerId: actor.id,
|
||||
followeeId: followee.id
|
||||
});
|
||||
if (req) {
|
||||
await cancelRequest(followee, actor);
|
||||
return "ok: follow request canceled";
|
||||
}
|
||||
if (following) {
|
||||
await unfollow(actor, followee);
|
||||
return "ok: unfollowed";
|
||||
}
|
||||
return "skip: Not requested or followed";
|
||||
});
|
||||
@@ -0,0 +1,27 @@
|
||||
import { isFollow, isBlock, isLike, isAnnounce, getApType, isAccept } from "../../type.js";
|
||||
import unfollow from "./follow.js";
|
||||
import unblock from "./block.js";
|
||||
import undoLike from "./like.js";
|
||||
import undoAccept from "./accept.js";
|
||||
import { undoAnnounce } from "./announce.js";
|
||||
import Resolver from "../../resolver.js";
|
||||
import { apLogger } from "../../logger.js";
|
||||
const logger = apLogger;
|
||||
export default (async (actor, activity)=>{
|
||||
if ("actor" in activity && actor.uri !== activity.actor) {
|
||||
throw new Error("invalid actor");
|
||||
}
|
||||
const uri = activity.id || activity;
|
||||
logger.info(`Undo: ${uri}`);
|
||||
const resolver = new Resolver();
|
||||
const object = await resolver.resolve(activity.object).catch((e)=>{
|
||||
logger.error(`Resolution failed: ${e}`);
|
||||
throw e;
|
||||
});
|
||||
if (isFollow(object)) return await unfollow(actor, object);
|
||||
if (isBlock(object)) return await unblock(actor, object);
|
||||
if (isLike(object)) return await undoLike(actor, object);
|
||||
if (isAnnounce(object)) return await undoAnnounce(actor, object);
|
||||
if (isAccept(object)) return await undoAccept(actor, object);
|
||||
return `skip: unknown object type ${getApType(object)}`;
|
||||
});
|
||||
@@ -0,0 +1,15 @@
|
||||
import { getApId } from "../../type.js";
|
||||
import deleteReaction from "../../../../services/note/reaction/delete.js";
|
||||
import { fetchNote } from "../../models/note.js";
|
||||
/**
|
||||
* Process Undo.Like activity
|
||||
*/ export default (async (actor, activity)=>{
|
||||
const targetUri = getApId(activity.object);
|
||||
const note = await fetchNote(targetUri);
|
||||
if (!note) return `skip: target note not found ${targetUri}`;
|
||||
await deleteReaction(actor, note).catch((e)=>{
|
||||
if (e.id === "60527ec9-b4cb-4a88-a6bd-32d3ad26817d") return;
|
||||
throw e;
|
||||
});
|
||||
return "ok";
|
||||
});
|
||||
Reference in New Issue
Block a user