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
|
delta: 1
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: Topic successfully upvoted
|
description: Post successfully upvoted
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
@@ -930,6 +930,43 @@ paths:
|
|||||||
response:
|
response:
|
||||||
type: object
|
type: object
|
||||||
properties: {}
|
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:
|
components:
|
||||||
schemas:
|
schemas:
|
||||||
Status:
|
Status:
|
||||||
|
|||||||
@@ -336,17 +336,9 @@ define('forum/topic/postTools', [
|
|||||||
}
|
}
|
||||||
|
|
||||||
function bookmarkPost(button, pid) {
|
function bookmarkPost(button, pid) {
|
||||||
var method = button.attr('data-bookmarked') === 'false' ? 'posts.bookmark' : 'posts.unbookmark';
|
var method = button.attr('data-bookmarked') === 'false' ? 'put' : 'del';
|
||||||
|
|
||||||
socket.emit(method, {
|
|
||||||
pid: pid,
|
|
||||||
room_id: 'topic_' + ajaxify.data.tid,
|
|
||||||
}, function (err) {
|
|
||||||
if (err) {
|
|
||||||
app.alertError(err.message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
api[method](`/posts/${pid}/bookmark`, undefined, undefined, err => app.alertError(err.status.message));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -171,6 +171,24 @@ Posts.unvote = async (req, res) => {
|
|||||||
helpers.formatApiResponse(200, 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) {
|
async function isMainAndLastPost(pid) {
|
||||||
const [isMain, topicData] = await Promise.all([
|
const [isMain, topicData] = await Promise.all([
|
||||||
posts.isMain(pid),
|
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.checkRequired.bind(null, ['delta']), middleware.assertPost], 'put', controllers.write.posts.vote);
|
||||||
setupApiRoute(router, '/:pid/vote', middleware, [...middlewares, middleware.assertPost], 'delete', controllers.write.posts.unvote);
|
setupApiRoute(router, '/:pid/vote', middleware, [...middlewares, middleware.assertPost], 'delete', controllers.write.posts.unvote);
|
||||||
|
|
||||||
// app.route('/:pid/bookmark')
|
setupApiRoute(router, '/:pid/bookmark', middleware, [...middlewares, middleware.assertPost], 'put', controllers.write.posts.bookmark);
|
||||||
// .post(apiMiddleware.requireUser, function(req, res) {
|
setupApiRoute(router, '/:pid/bookmark', middleware, [...middlewares, middleware.assertPost], 'delete', controllers.write.posts.unbookmark);
|
||||||
// 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);
|
|
||||||
// });
|
|
||||||
// });
|
|
||||||
|
|
||||||
return router;
|
return router;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,13 +2,16 @@
|
|||||||
|
|
||||||
|
|
||||||
const helpers = require('./helpers');
|
const helpers = require('./helpers');
|
||||||
|
const sockets = require('..');
|
||||||
|
|
||||||
module.exports = function (SocketPosts) {
|
module.exports = function (SocketPosts) {
|
||||||
SocketPosts.bookmark = async function (socket, data) {
|
SocketPosts.bookmark = async function (socket, data) {
|
||||||
|
sockets.warnDeprecated(socket, 'PUT /api/v1/posts/:pid/bookmark');
|
||||||
return await helpers.postCommand(socket, 'bookmark', 'bookmarked', '', data);
|
return await helpers.postCommand(socket, 'bookmark', 'bookmarked', '', data);
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketPosts.unbookmark = async function (socket, data) {
|
SocketPosts.unbookmark = async function (socket, data) {
|
||||||
|
sockets.warnDeprecated(socket, 'DELETE /api/v1/posts/:pid/bookmark');
|
||||||
return await helpers.postCommand(socket, 'unbookmark', 'bookmarked', '', data);
|
return await helpers.postCommand(socket, 'unbookmark', 'bookmarked', '', data);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user