Skip to content

Commit

Permalink
feat(writeapi): post bookmarking
Browse files Browse the repository at this point in the history
  • Loading branch information
julianlam committed Oct 8, 2020
1 parent 9942c24 commit 0973fee
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 22 deletions.
39 changes: 38 additions & 1 deletion public/openapi/write.yaml
Expand Up @@ -901,7 +901,7 @@ paths:
delta: 1
responses:
'200':
description: Topic successfully upvoted
description: Post successfully upvoted
content:
application/json:
schema:
Expand Down Expand Up @@ -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:
Expand Down
12 changes: 2 additions & 10 deletions public/src/client/topic/postTools.js
Expand Up @@ -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;
}

Expand Down
18 changes: 18 additions & 0 deletions src/controllers/write/posts.js
Expand Up @@ -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),
Expand Down
13 changes: 2 additions & 11 deletions src/routes/write/posts.js
Expand Up @@ -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;
};
3 changes: 3 additions & 0 deletions src/socket.io/posts/bookmarks.js
Expand Up @@ -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);
};
};

0 comments on commit 0973fee

Please sign in to comment.