Move reaction controllers to pleromaStatusesRoute

This commit is contained in:
Alex Gleason 2025-03-15 13:49:42 -05:00
parent 55a171fd2c
commit 2f65be7dc4
No known key found for this signature in database
GPG key ID: 7211D1F99744FBB7
2 changed files with 17 additions and 16 deletions

View file

@ -87,7 +87,6 @@ import {
} from '@/controllers/api/pleroma.ts';
import { preferencesController } from '@/controllers/api/preferences.ts';
import { getSubscriptionController, pushSubscribeController } from '@/controllers/api/push.ts';
import { deleteReactionController, reactionController, reactionsController } from '@/controllers/api/reactions.ts';
import { relayController } from '@/controllers/nostr/relay.ts';
import {
adminReportController,
@ -150,6 +149,7 @@ import { logiMiddleware } from '@/middleware/logiMiddleware.ts';
import customEmojisRoute from '@/routes/customEmojisRoute.ts';
import dittoNamesRoute from '@/routes/dittoNamesRoute.ts';
import pleromaAdminPermissionGroupsRoute from '@/routes/pleromaAdminPermissionGroupsRoute.ts';
import pleromaStatusesRoute from '@/routes/pleromaStatusesRoute.ts';
import { DittoRelayStore } from '@/storages/DittoRelayStore.ts';
export interface AppEnv extends DittoEnv {
@ -435,10 +435,7 @@ app.post('/api/v1/markers', userMiddleware({ verify: true }), updateMarkersContr
app.get('/api/v1/push/subscription', userMiddleware(), getSubscriptionController);
app.post('/api/v1/push/subscription', userMiddleware({ verify: true }), pushSubscribeController);
app.get('/api/v1/pleroma/statuses/:id{[0-9a-f]{64}}/reactions', reactionsController);
app.get('/api/v1/pleroma/statuses/:id{[0-9a-f]{64}}/reactions/:emoji', reactionsController);
app.put('/api/v1/pleroma/statuses/:id{[0-9a-f]{64}}/reactions/:emoji', userMiddleware(), reactionController);
app.delete('/api/v1/pleroma/statuses/:id{[0-9a-f]{64}}/reactions/:emoji', userMiddleware(), deleteReactionController);
app.route('/api/v1/pleroma/statuses', pleromaStatusesRoute);
app.get('/api/v1/pleroma/admin/config', userMiddleware({ role: 'admin' }), configController);
app.post('/api/v1/pleroma/admin/config', userMiddleware({ role: 'admin' }), updateConfigController);

View file

@ -1,4 +1,6 @@
import { AppController } from '@/app.ts';
import { userMiddleware } from '@ditto/mastoapi/middleware';
import { DittoRoute } from '@ditto/mastoapi/router';
import { DittoEvent } from '@/interfaces/DittoEvent.ts';
import { hydrateEvents } from '@/storages/hydrate.ts';
import { createEvent } from '@/utils/api.ts';
@ -8,11 +10,13 @@ import { HTTPException } from '@hono/hono/http-exception';
import { getCustomEmojis } from '@/utils/custom-emoji.ts';
/**
const route = new DittoRoute();
/*
* React to a status.
* https://docs.pleroma.social/backend/development/API/pleroma_api/#put-apiv1pleromastatusesidreactionsemoji
*/
const reactionController: AppController = async (c) => {
route.put('/:id{[0-9a-f]{64}}/reactions/:emoji', userMiddleware(), async (c) => {
const { relay, user, conf, signal } = c.var;
const { type, value } = parseEmojiParam(c.req.param('emoji'));
@ -46,13 +50,13 @@ const reactionController: AppController = async (c) => {
const status = await renderStatus(relay, event, { viewerPubkey: pubkey });
return c.json(status);
};
});
/**
/*
* Delete reactions to a status.
* https://docs.pleroma.social/backend/development/API/pleroma_api/#delete-apiv1pleromastatusesidreactionsemoji
*/
const deleteReactionController: AppController = async (c) => {
route.delete('/:id{[0-9a-f]{64}}/reactions/:emoji', userMiddleware(), async (c) => {
const { relay, user } = c.var;
const id = c.req.param('id');
@ -89,13 +93,13 @@ const deleteReactionController: AppController = async (c) => {
const status = renderStatus(relay, event, { viewerPubkey: pubkey });
return c.json(status);
};
});
/**
/*
* Get an object of emoji to account mappings with accounts that reacted to the post.
* https://docs.pleroma.social/backend/development/API/pleroma_api/#get-apiv1pleromastatusesidreactions
*/
const reactionsController: AppController = async (c) => {
route.get('/:id{[0-9a-f]{64}}/reactions', userMiddleware({ required: false }), async (c) => {
const { relay, user } = c.var;
const id = c.req.param('id');
@ -133,7 +137,7 @@ const reactionsController: AppController = async (c) => {
);
return c.json(results);
};
});
function parseEmojiParam(input: string): { type: 'native' | 'custom'; value: string } {
if (/^\p{RGI_Emoji}$/v.test(input)) {
@ -147,4 +151,4 @@ function parseEmojiParam(input: string): { type: 'native' | 'custom'; value: str
throw new HTTPException(400, { message: 'Invalid emoji' });
}
export { deleteReactionController, reactionController, reactionsController };
export default route;