mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-28 17:46:16 +01:00
feat(writeapi): post bookmarking
This commit is contained in:
@@ -901,7 +901,7 @@ paths:
|
||||
delta: 1
|
||||
responses:
|
||||
'200':
|
||||
description: Topic successfully upvoted
|
||||
description: Post successfully upvoted
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
@@ -930,6 +930,43 @@ paths:
|
||||
response:
|
||||
type: object
|
||||
properties: {}
|
||||
/posts/{pid}/bookmark:
|
||||
put:
|
||||
tags:
|
||||
- posts
|
||||
summary: Bookmark a post
|
||||
description: This operation bookmarks a post.
|
||||
responses:
|
||||
'200':
|
||||
description: Post successfully bookmarked
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
$ref: '#/components/schemas/Status'
|
||||
response:
|
||||
type: object
|
||||
properties: {}
|
||||
delete:
|
||||
tags:
|
||||
- posts
|
||||
summary: Unbookmark a post
|
||||
description: This operation unbookmarks a post.
|
||||
responses:
|
||||
'200':
|
||||
description: Post successfully unbookmarked
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
$ref: '#/components/schemas/Status'
|
||||
response:
|
||||
type: object
|
||||
properties: {}
|
||||
components:
|
||||
schemas:
|
||||
Status:
|
||||
|
||||
@@ -336,17 +336,9 @@ define('forum/topic/postTools', [
|
||||
}
|
||||
|
||||
function bookmarkPost(button, pid) {
|
||||
var method = button.attr('data-bookmarked') === 'false' ? 'posts.bookmark' : 'posts.unbookmark';
|
||||
|
||||
socket.emit(method, {
|
||||
pid: pid,
|
||||
room_id: 'topic_' + ajaxify.data.tid,
|
||||
}, function (err) {
|
||||
if (err) {
|
||||
app.alertError(err.message);
|
||||
}
|
||||
});
|
||||
var method = button.attr('data-bookmarked') === 'false' ? 'put' : 'del';
|
||||
|
||||
api[method](`/posts/${pid}/bookmark`, undefined, undefined, err => app.alertError(err.status.message));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -171,6 +171,24 @@ Posts.unvote = async (req, res) => {
|
||||
helpers.formatApiResponse(200, res);
|
||||
};
|
||||
|
||||
Posts.bookmark = async (req, res) => {
|
||||
const tid = await posts.getPostField(req.params.pid, 'tid');
|
||||
const data = { pid: req.params.pid, room_id: `topic_${tid}` };
|
||||
const socketMock = { uid: req.user.uid };
|
||||
|
||||
await socketPostHelpers.postCommand(socketMock, 'bookmark', 'bookmarked', '', data);
|
||||
helpers.formatApiResponse(200, res);
|
||||
};
|
||||
|
||||
Posts.unbookmark = async (req, res) => {
|
||||
const tid = await posts.getPostField(req.params.pid, 'tid');
|
||||
const data = { pid: req.params.pid, room_id: `topic_${tid}` };
|
||||
const socketMock = { uid: req.user.uid };
|
||||
|
||||
await socketPostHelpers.postCommand(socketMock, 'unbookmark', 'bookmarked', '', data);
|
||||
helpers.formatApiResponse(200, res);
|
||||
};
|
||||
|
||||
async function isMainAndLastPost(pid) {
|
||||
const [isMain, topicData] = await Promise.all([
|
||||
posts.isMain(pid),
|
||||
|
||||
@@ -19,17 +19,8 @@ module.exports = function () {
|
||||
setupApiRoute(router, '/:pid/vote', middleware, [...middlewares, middleware.checkRequired.bind(null, ['delta']), middleware.assertPost], 'put', controllers.write.posts.vote);
|
||||
setupApiRoute(router, '/:pid/vote', middleware, [...middlewares, middleware.assertPost], 'delete', controllers.write.posts.unvote);
|
||||
|
||||
// app.route('/:pid/bookmark')
|
||||
// .post(apiMiddleware.requireUser, function(req, res) {
|
||||
// posts.bookmark(req.params.pid, req.user.uid, function (err) {
|
||||
// errorHandler.handle(err, res);
|
||||
// });
|
||||
// })
|
||||
// .delete(apiMiddleware.requireUser, apiMiddleware.validatePid, function (req, res) {
|
||||
// posts.unbookmark(req.params.pid, req.user.uid, function (err) {
|
||||
// errorHandler.handle(err, res);
|
||||
// });
|
||||
// });
|
||||
setupApiRoute(router, '/:pid/bookmark', middleware, [...middlewares, middleware.assertPost], 'put', controllers.write.posts.bookmark);
|
||||
setupApiRoute(router, '/:pid/bookmark', middleware, [...middlewares, middleware.assertPost], 'delete', controllers.write.posts.unbookmark);
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
@@ -2,13 +2,16 @@
|
||||
|
||||
|
||||
const helpers = require('./helpers');
|
||||
const sockets = require('..');
|
||||
|
||||
module.exports = function (SocketPosts) {
|
||||
SocketPosts.bookmark = async function (socket, data) {
|
||||
sockets.warnDeprecated(socket, 'PUT /api/v1/posts/:pid/bookmark');
|
||||
return await helpers.postCommand(socket, 'bookmark', 'bookmarked', '', data);
|
||||
};
|
||||
|
||||
SocketPosts.unbookmark = async function (socket, data) {
|
||||
sockets.warnDeprecated(socket, 'DELETE /api/v1/posts/:pid/bookmark');
|
||||
return await helpers.postCommand(socket, 'unbookmark', 'bookmarked', '', data);
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user