[mastodon-client] POST /statuses/:id/react/:name, /statuses/:id/unreact/:name

This commit is contained in:
Laura Hausmann 2023-09-29 13:40:12 +02:00
parent 93a4db4418
commit 3dffaf5594
No known key found for this signature in database
GPG Key ID: D044E84C5BE01605

View File

@ -466,15 +466,26 @@ export function apiStatusMastodon(router: Router): void {
router.post<{ Params: { id: string; name: string } }>(
"/v1/statuses/:id/react/:name",
async (ctx) => {
const BASE_URL = `${ctx.protocol}://${ctx.hostname}`;
const accessTokens = ctx.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
const data = await client.reactStatus(
convertId(ctx.params.id, IdType.IceshrimpId),
ctx.params.name,
);
ctx.body = convertStatus(data.data);
const auth = await authenticate(ctx.headers.authorization, null);
const user = auth[0] ?? null;
if (!user) {
ctx.status = 401;
return;
}
const id = convertId(ctx.params.id, IdType.IceshrimpId);
const note = await getNote(id, user).catch(_ => null);
if (note === null) {
ctx.status = 404;
return;
}
ctx.body = await NoteHelpers.reactToNote(note, user, ctx.params.name)
.then(p => NoteConverter.encode(p, user))
.then(p => convertStatus(p));
} catch (e: any) {
console.error(e);
ctx.status = 401;
@ -486,15 +497,26 @@ export function apiStatusMastodon(router: Router): void {
router.post<{ Params: { id: string; name: string } }>(
"/v1/statuses/:id/unreact/:name",
async (ctx) => {
const BASE_URL = `${ctx.protocol}://${ctx.hostname}`;
const accessTokens = ctx.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
const data = await client.unreactStatus(
convertId(ctx.params.id, IdType.IceshrimpId),
ctx.params.name,
);
ctx.body = convertStatus(data.data);
const auth = await authenticate(ctx.headers.authorization, null);
const user = auth[0] ?? null;
if (!user) {
ctx.status = 401;
return;
}
const id = convertId(ctx.params.id, IdType.IceshrimpId);
const note = await getNote(id, user).catch(_ => null);
if (note === null) {
ctx.status = 404;
return;
}
ctx.body = await NoteHelpers.removeReactFromNote(note, user)
.then(p => NoteConverter.encode(p, user))
.then(p => convertStatus(p));
} catch (e: any) {
console.error(e);
ctx.status = 401;