61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
import cancelFollowRequest from "../../../../../services/following/requests/cancel.js";
|
|
import define from "../../../define.js";
|
|
import { ApiError } from "../../../error.js";
|
|
import { getUser } from "../../../common/getters.js";
|
|
import { Users } from "../../../../../models/index.js";
|
|
import { IdentifiableError } from "../../../../../misc/identifiable-error.js";
|
|
export const meta = {
|
|
tags: [
|
|
"following",
|
|
"account"
|
|
],
|
|
requireCredential: true,
|
|
kind: "write:following",
|
|
errors: {
|
|
noSuchUser: {
|
|
message: "No such user.",
|
|
code: "NO_SUCH_USER",
|
|
id: "4e68c551-fc4c-4e46-bb41-7d4a37bf9dab"
|
|
},
|
|
followRequestNotFound: {
|
|
message: "Follow request not found.",
|
|
code: "FOLLOW_REQUEST_NOT_FOUND",
|
|
id: "089b125b-d338-482a-9a09-e2622ac9f8d4"
|
|
}
|
|
},
|
|
res: {
|
|
type: "object",
|
|
optional: false,
|
|
nullable: false,
|
|
ref: "UserLite"
|
|
}
|
|
};
|
|
export const paramDef = {
|
|
type: "object",
|
|
properties: {
|
|
userId: {
|
|
type: "string",
|
|
format: "misskey:id"
|
|
}
|
|
},
|
|
required: [
|
|
"userId"
|
|
]
|
|
};
|
|
export default define(meta, paramDef, async (ps, user)=>{
|
|
// Fetch followee
|
|
const followee = await getUser(ps.userId).catch((e)=>{
|
|
if (e.id === "15348ddd-432d-49c2-8a5a-8069753becff") throw new ApiError(meta.errors.noSuchUser);
|
|
throw e;
|
|
});
|
|
try {
|
|
await cancelFollowRequest(followee, user);
|
|
} catch (e) {
|
|
if (e instanceof IdentifiableError) {
|
|
if (e.id === "17447091-ce07-46dd-b331-c1fd4f15b1e7") throw new ApiError(meta.errors.followRequestNotFound);
|
|
}
|
|
throw e;
|
|
}
|
|
return await Users.pack(followee.id, user);
|
|
});
|