mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 03:19:46 +00:00
Move reaction controllers to pleromaStatusesRoute
This commit is contained in:
parent
55a171fd2c
commit
2f65be7dc4
2 changed files with 17 additions and 16 deletions
|
|
@ -87,7 +87,6 @@ import {
|
||||||
} from '@/controllers/api/pleroma.ts';
|
} from '@/controllers/api/pleroma.ts';
|
||||||
import { preferencesController } from '@/controllers/api/preferences.ts';
|
import { preferencesController } from '@/controllers/api/preferences.ts';
|
||||||
import { getSubscriptionController, pushSubscribeController } from '@/controllers/api/push.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 { relayController } from '@/controllers/nostr/relay.ts';
|
||||||
import {
|
import {
|
||||||
adminReportController,
|
adminReportController,
|
||||||
|
|
@ -150,6 +149,7 @@ import { logiMiddleware } from '@/middleware/logiMiddleware.ts';
|
||||||
import customEmojisRoute from '@/routes/customEmojisRoute.ts';
|
import customEmojisRoute from '@/routes/customEmojisRoute.ts';
|
||||||
import dittoNamesRoute from '@/routes/dittoNamesRoute.ts';
|
import dittoNamesRoute from '@/routes/dittoNamesRoute.ts';
|
||||||
import pleromaAdminPermissionGroupsRoute from '@/routes/pleromaAdminPermissionGroupsRoute.ts';
|
import pleromaAdminPermissionGroupsRoute from '@/routes/pleromaAdminPermissionGroupsRoute.ts';
|
||||||
|
import pleromaStatusesRoute from '@/routes/pleromaStatusesRoute.ts';
|
||||||
import { DittoRelayStore } from '@/storages/DittoRelayStore.ts';
|
import { DittoRelayStore } from '@/storages/DittoRelayStore.ts';
|
||||||
|
|
||||||
export interface AppEnv extends DittoEnv {
|
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.get('/api/v1/push/subscription', userMiddleware(), getSubscriptionController);
|
||||||
app.post('/api/v1/push/subscription', userMiddleware({ verify: true }), pushSubscribeController);
|
app.post('/api/v1/push/subscription', userMiddleware({ verify: true }), pushSubscribeController);
|
||||||
|
|
||||||
app.get('/api/v1/pleroma/statuses/:id{[0-9a-f]{64}}/reactions', reactionsController);
|
app.route('/api/v1/pleroma/statuses', pleromaStatusesRoute);
|
||||||
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.get('/api/v1/pleroma/admin/config', userMiddleware({ role: 'admin' }), configController);
|
app.get('/api/v1/pleroma/admin/config', userMiddleware({ role: 'admin' }), configController);
|
||||||
app.post('/api/v1/pleroma/admin/config', userMiddleware({ role: 'admin' }), updateConfigController);
|
app.post('/api/v1/pleroma/admin/config', userMiddleware({ role: 'admin' }), updateConfigController);
|
||||||
|
|
|
||||||
|
|
@ -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 { DittoEvent } from '@/interfaces/DittoEvent.ts';
|
||||||
import { hydrateEvents } from '@/storages/hydrate.ts';
|
import { hydrateEvents } from '@/storages/hydrate.ts';
|
||||||
import { createEvent } from '@/utils/api.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';
|
import { getCustomEmojis } from '@/utils/custom-emoji.ts';
|
||||||
|
|
||||||
/**
|
const route = new DittoRoute();
|
||||||
|
|
||||||
|
/*
|
||||||
* React to a status.
|
* React to a status.
|
||||||
* https://docs.pleroma.social/backend/development/API/pleroma_api/#put-apiv1pleromastatusesidreactionsemoji
|
* 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 { relay, user, conf, signal } = c.var;
|
||||||
const { type, value } = parseEmojiParam(c.req.param('emoji'));
|
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 });
|
const status = await renderStatus(relay, event, { viewerPubkey: pubkey });
|
||||||
return c.json(status);
|
return c.json(status);
|
||||||
};
|
});
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* Delete reactions to a status.
|
* Delete reactions to a status.
|
||||||
* https://docs.pleroma.social/backend/development/API/pleroma_api/#delete-apiv1pleromastatusesidreactionsemoji
|
* 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 { relay, user } = c.var;
|
||||||
|
|
||||||
const id = c.req.param('id');
|
const id = c.req.param('id');
|
||||||
|
|
@ -89,13 +93,13 @@ const deleteReactionController: AppController = async (c) => {
|
||||||
const status = renderStatus(relay, event, { viewerPubkey: pubkey });
|
const status = renderStatus(relay, event, { viewerPubkey: pubkey });
|
||||||
|
|
||||||
return c.json(status);
|
return c.json(status);
|
||||||
};
|
});
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* Get an object of emoji to account mappings with accounts that reacted to the post.
|
* 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
|
* 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 { relay, user } = c.var;
|
||||||
|
|
||||||
const id = c.req.param('id');
|
const id = c.req.param('id');
|
||||||
|
|
@ -133,7 +137,7 @@ const reactionsController: AppController = async (c) => {
|
||||||
);
|
);
|
||||||
|
|
||||||
return c.json(results);
|
return c.json(results);
|
||||||
};
|
});
|
||||||
|
|
||||||
function parseEmojiParam(input: string): { type: 'native' | 'custom'; value: string } {
|
function parseEmojiParam(input: string): { type: 'native' | 'custom'; value: string } {
|
||||||
if (/^\p{RGI_Emoji}$/v.test(input)) {
|
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' });
|
throw new HTTPException(400, { message: 'Invalid emoji' });
|
||||||
}
|
}
|
||||||
|
|
||||||
export { deleteReactionController, reactionController, reactionsController };
|
export default route;
|
||||||
Loading…
Add table
Reference in a new issue