Implement removal of "thumbs up" reaction

This commit is contained in:
danidfra 2025-03-06 17:06:48 -03:00
parent b173cc624d
commit 21247b31ea
2 changed files with 39 additions and 0 deletions

View file

@ -34,6 +34,7 @@ import {
muteController, muteController,
relationshipsController, relationshipsController,
unblockController, unblockController,
unfavouriteController,
unfollowController, unfollowController,
unmuteController, unmuteController,
updateCredentialsController, updateCredentialsController,
@ -357,6 +358,7 @@ app.get('/api/v1/statuses/:id{[0-9a-f]{64}}/reblogged_by', rebloggedByController
app.get('/api/v1/statuses/:id{[0-9a-f]{64}}/context', contextController); app.get('/api/v1/statuses/:id{[0-9a-f]{64}}/context', contextController);
app.get('/api/v1/statuses/:id{[0-9a-f]{64}}', statusController); app.get('/api/v1/statuses/:id{[0-9a-f]{64}}', statusController);
app.post('/api/v1/statuses/:id{[0-9a-f]{64}}/favourite', userMiddleware(), favouriteController); app.post('/api/v1/statuses/:id{[0-9a-f]{64}}/favourite', userMiddleware(), favouriteController);
app.post('/api/v1/statuses/:id{[0-9a-f]{64}}/unfavourite', userMiddleware(), unfavouriteController);
app.post('/api/v1/statuses/:id{[0-9a-f]{64}}/bookmark', userMiddleware(), bookmarkController); app.post('/api/v1/statuses/:id{[0-9a-f]{64}}/bookmark', userMiddleware(), bookmarkController);
app.post('/api/v1/statuses/:id{[0-9a-f]{64}}/unbookmark', userMiddleware(), unbookmarkController); app.post('/api/v1/statuses/:id{[0-9a-f]{64}}/unbookmark', userMiddleware(), unbookmarkController);
app.post('/api/v1/statuses/:id{[0-9a-f]{64}}/pin', userMiddleware(), pinController); app.post('/api/v1/statuses/:id{[0-9a-f]{64}}/pin', userMiddleware(), pinController);

View file

@ -509,6 +509,42 @@ const favouritesController: AppController = async (c) => {
return paginated(c, events1, statuses); return paginated(c, events1, statuses);
}; };
const unfavouriteController: AppController = async (c) => {
const { relay, user, signal } = c.var
const id = c.req.param('id');
const pubkey = await user!.signer.getPublicKey();
const [event] = await relay.query([{ ids: [id], kinds: [1] }], { signal });
if (!event) {
return c.json({ error: 'Record not found.' }, 404);
}
const favouriteEvents = await relay.query([
{ kinds: [7], authors: [pubkey], '#e': [id] },
]);
if (!favouriteEvents.length) {
return c.json({ error: 'Record not found.' }, 404);
}
for (const e of favouriteEvents) {
if (e.content === '+') {
await createEvent({
kind: 5,
tags: [
['e', e.id],
],
content: 'unfavourite',
}, c);
}
}
await hydrateEvents({ ...c.var, events: [event], relay, signal })
const status = await renderStatus(relay, event, { viewerPubkey: pubkey });
return c.json(status);
};
const familiarFollowersController: AppController = async (c) => { const familiarFollowersController: AppController = async (c) => {
const { relay, user, signal } = c.var; const { relay, user, signal } = c.var;
@ -560,6 +596,7 @@ export {
muteController, muteController,
relationshipsController, relationshipsController,
unblockController, unblockController,
unfavouriteController,
unfollowController, unfollowController,
unmuteController, unmuteController,
updateCredentialsController, updateCredentialsController,