diff --git a/packages/backend/src/server/api/mastodon/endpoints/account.ts b/packages/backend/src/server/api/mastodon/endpoints/account.ts index d25f43193a..17ec9a97dd 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/account.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/account.ts @@ -154,14 +154,11 @@ export class ApiAccountMastodon { reply.send(response); }); - fastify.get('/v1/accounts/relationships', async (_request, reply) => { - let ids = _request.query['id[]'] ?? _request.query['id'] ?? []; - if (typeof ids === 'string') { - ids = [ids]; - } + fastify.get('/v1/accounts/relationships', async (_request, reply) => { + if (!_request.query.id) return reply.code(400).send({ error: 'BAD_REQUEST', error_description: 'Missing required property "id"' }); const client = this.clientService.getClient(_request); - const data = await client.getRelationships(ids); + const data = await client.getRelationships(_request.query.id); const response = data.data.map(relationship => convertRelationship(relationship)); reply.send(response); diff --git a/packages/megalodon/src/megalodon.ts b/packages/megalodon/src/megalodon.ts index 4328f41f1c..6032c351c9 100644 --- a/packages/megalodon/src/megalodon.ts +++ b/packages/megalodon/src/megalodon.ts @@ -342,7 +342,7 @@ export interface MegalodonInterface { * @param ids Array of account IDs. * @return Array of Relationship. */ - getRelationships(ids: Array): Promise>> + getRelationships(ids: string | Array): Promise>> /** * Search for matching accounts by username or display name. * diff --git a/packages/megalodon/src/misskey.ts b/packages/megalodon/src/misskey.ts index c9a33e3130..cf6adbb70d 100644 --- a/packages/megalodon/src/misskey.ts +++ b/packages/megalodon/src/misskey.ts @@ -606,11 +606,16 @@ export default class Misskey implements MegalodonInterface { * * @param ids Array of account ID, for example `['1sdfag', 'ds12aa']`. */ - public async getRelationships(ids: Array): Promise>> { - return Promise.all(ids.map(id => this.getRelationship(id))).then(results => ({ - ...results[0], - data: results.map(r => r.data) - })) + public async getRelationships(ids: string | Array): Promise>> { + return this.client + .post('/api/users/relation', { + userId: ids + }) + .then(res => { + return Object.assign(res, { + data: res.data.map(r => MisskeyAPI.Converter.relation(r)) + }) + }) } /**