POST user summit data to the same URL that we GET it from (avoids problems with UA caching, as a POST will invalidate the cache for that URL)

Fix saving tags when the summit is not bookmarked and there are no notes
pull/1/head
Manuel Kasper 2021-05-14 19:16:35 +02:00
rodzic af2ea2422e
commit 215e7eb75c
1 zmienionych plików z 5 dodań i 7 usunięć

Wyświetl plik

@ -133,8 +133,6 @@ router.get("/me/summits/tags", jwtCallback, (req, res) => {
}) })
}); });
router.get("/me/summit/:association/:code", jwtCallback, (req, res) => { router.get("/me/summit/:association/:code", jwtCallback, (req, res) => {
const reqUserId = req.user.userid; const reqUserId = req.user.userid;
if (!reqUserId) { if (!reqUserId) {
@ -173,9 +171,8 @@ router.get("/me/summit/:association/:code", jwtCallback, (req, res) => {
}); });
}); });
router.post("/me/summit", router.post("/me/summit/:association/:code",
jwtCallback, jwtCallback,
body("code").isString(),
body("isBookmarked").isBoolean(), body("isBookmarked").isBoolean(),
body("notes").optional().trim().default(""), body("notes").optional().trim().default(""),
body("tags").isArray(), body("tags").isArray(),
@ -192,8 +189,9 @@ router.post("/me/summit",
return res.status(400).json({errors: errors.array()}); return res.status(400).json({errors: errors.array()});
} }
const code = req.params.association + "/" + req.params.code
const newSummitData = { const newSummitData = {
code: req.body.code, code,
isBookmarked: req.body.isBookmarked, isBookmarked: req.body.isBookmarked,
notes: req.body.notes, notes: req.body.notes,
tags: req.body.tags tags: req.body.tags
@ -201,10 +199,10 @@ router.post("/me/summit",
db.getDb().collection(DB_COLLECTION_USERS).updateOne( db.getDb().collection(DB_COLLECTION_USERS).updateOne(
{userid: reqUserId}, {userid: reqUserId},
{$pull: {userSummits: {code: newSummitData.code}}} {$pull: {userSummits: {code}}}
); );
if (newSummitData.isBookmarked === true || newSummitData.notes !== "") { if (newSummitData.isBookmarked === true || newSummitData.notes !== "" || newSummitData.tags.length > 0) {
db.getDb().collection(DB_COLLECTION_USERS).updateOne( db.getDb().collection(DB_COLLECTION_USERS).updateOne(
{userid: reqUserId}, {userid: reqUserId},
{$push: {userSummits: newSummitData}}, {$push: {userSummits: newSummitData}},