mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
Merge branch 'unfavourite' into 'main'
Add unfavourite controller Closes soapbox#1819 See merge request soapbox-pub/ditto!609
This commit is contained in:
commit
22eb70d019
3 changed files with 40 additions and 2 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -509,6 +509,43 @@ 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],
|
||||||
|
['k', '7'],
|
||||||
|
],
|
||||||
|
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 +597,7 @@ export {
|
||||||
muteController,
|
muteController,
|
||||||
relationshipsController,
|
relationshipsController,
|
||||||
unblockController,
|
unblockController,
|
||||||
|
unfavouriteController,
|
||||||
unfollowController,
|
unfollowController,
|
||||||
unmuteController,
|
unmuteController,
|
||||||
updateCredentialsController,
|
updateCredentialsController,
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ const reactionController: AppController = async (c) => {
|
||||||
await createEvent({
|
await createEvent({
|
||||||
kind: 7,
|
kind: 7,
|
||||||
content: emoji,
|
content: emoji,
|
||||||
created_at: Math.floor(Date.now() / 1000),
|
|
||||||
tags: [['e', id], ['p', event.pubkey]],
|
tags: [['e', id], ['p', event.pubkey]],
|
||||||
}, c);
|
}, c);
|
||||||
|
|
||||||
|
|
@ -72,7 +71,6 @@ const deleteReactionController: AppController = async (c) => {
|
||||||
await createEvent({
|
await createEvent({
|
||||||
kind: 5,
|
kind: 5,
|
||||||
content: '',
|
content: '',
|
||||||
created_at: Math.floor(Date.now() / 1000),
|
|
||||||
tags,
|
tags,
|
||||||
}, c);
|
}, c);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue