Files
FrozenFriendsYume/packages/backend/built/server/api/endpoints/users/relation.js
T
2026-07-26 18:25:37 +09:00

153 lines
5.0 KiB
JavaScript

import { Users } from "../../../../models/index.js";
import define from "../../define.js";
export const meta = {
tags: [
"users"
],
requireCredential: true,
description: "Show the different kinds of relations between the authenticated user and the specified user(s).",
res: {
optional: false,
nullable: false,
oneOf: [
{
type: "object",
properties: {
id: {
type: "string",
optional: false,
nullable: false,
format: "id"
},
isFollowing: {
type: "boolean",
optional: false,
nullable: false
},
hasPendingFollowRequestFromYou: {
type: "boolean",
optional: false,
nullable: false
},
hasPendingFollowRequestToYou: {
type: "boolean",
optional: false,
nullable: false
},
isFollowed: {
type: "boolean",
optional: false,
nullable: false
},
isBlocking: {
type: "boolean",
optional: false,
nullable: false
},
isBlocked: {
type: "boolean",
optional: false,
nullable: false
},
isMuted: {
type: "boolean",
optional: false,
nullable: false
},
isRenoteMuted: {
type: "boolean",
optional: false,
nullable: false
}
}
},
{
type: "array",
items: {
type: "object",
optional: false,
nullable: false,
properties: {
id: {
type: "string",
optional: false,
nullable: false,
format: "id"
},
isFollowing: {
type: "boolean",
optional: false,
nullable: false
},
hasPendingFollowRequestFromYou: {
type: "boolean",
optional: false,
nullable: false
},
hasPendingFollowRequestToYou: {
type: "boolean",
optional: false,
nullable: false
},
isFollowed: {
type: "boolean",
optional: false,
nullable: false
},
isBlocking: {
type: "boolean",
optional: false,
nullable: false
},
isBlocked: {
type: "boolean",
optional: false,
nullable: false
},
isMuted: {
type: "boolean",
optional: false,
nullable: false
},
isRenoteMuted: {
type: "boolean",
optional: false,
nullable: false
}
}
}
}
]
}
};
export const paramDef = {
type: "object",
properties: {
userId: {
anyOf: [
{
type: "string",
format: "misskey:id"
},
{
type: "array",
items: {
type: "string",
format: "misskey:id"
}
}
]
}
},
required: [
"userId"
]
};
export default define(meta, paramDef, async (ps, me)=>{
const ids = Array.isArray(ps.userId) ? ps.userId : [
ps.userId
];
const relations = await Promise.all(ids.map((id)=>Users.getRelation(me.id, id)));
return Array.isArray(ps.userId) ? relations : relations[0];
});