diff --git a/routes/wishlist/index.js b/routes/wishlist/index.js index 481c6dc..99833c3 100644 --- a/routes/wishlist/index.js +++ b/routes/wishlist/index.js @@ -184,19 +184,26 @@ module.exports = (db) => { return res.redirect(`/wishlist/${req.params.user}`) } const doc = await db.get(req.user._id) - const wishlist = doc.wishlist - if (req.params.direction === 'up') wishlist.reverse() - let moveFromIndex - wishlist.forEach(wish => { - if (wish.id === req.params.itemId) moveFromIndex = wishlist.indexOf(wish) - }) - const moveToIndex = wishlist.findIndex(wish => (wishlist.indexOf(wish) > moveFromIndex && wish.addedBy === req.user._id)) - if (moveToIndex < 0 || moveToIndex > wishlist.length) { - req.flash('error', 'Invalid move') - return res.redirect(`/wishlist/${req.params.user}`) + let wishlist = doc.wishlist + if (req.params.direction === 'top') { + const item = wishlist.find(item => item.id === req.params.itemId) + wishlist = wishlist.filter(item => item.id !== req.params.itemId) + wishlist.unshift(item) + } else { + if (req.params.direction === 'up') wishlist.reverse() + let moveFromIndex + wishlist.forEach(wish => { + if (wish.id === req.params.itemId) moveFromIndex = wishlist.indexOf(wish) + }) + const moveToIndex = wishlist.findIndex(wish => (wishlist.indexOf(wish) > moveFromIndex && wish.addedBy === req.user._id)) + if (moveToIndex < 0 || moveToIndex > wishlist.length) { + req.flash('error', 'Invalid move') + return res.redirect(`/wishlist/${req.params.user}`) + } + [wishlist[moveFromIndex], wishlist[moveToIndex]] = [wishlist[moveToIndex], wishlist[moveFromIndex]] + if (req.params.direction === 'up') wishlist.reverse() } - [wishlist[moveFromIndex], wishlist[moveToIndex]] = [wishlist[moveToIndex], wishlist[moveFromIndex]] - if (req.params.direction === 'up') wishlist.reverse() + doc.wishlist = wishlist await db.put(doc) req.flash('success', 'Successfully moved item!') diff --git a/views/wishlist.pug b/views/wishlist.pug index b68e212..cbadfb6 100644 --- a/views/wishlist.pug +++ b/views/wishlist.pug @@ -24,6 +24,7 @@ block content th Edit Item th Added By if req.params.user === req.user._id + th Move Top th Move Up th Move Down else @@ -64,6 +65,17 @@ block content i.far.fa-edit td.ugc(data-label='Added By')= item.addedBy if req.params.user === req.user._id + td(data-label='Move Item Top') + form.topForm.inline(method='POST', action=`${_CC.config.base}wishlist/${req.params.user}/move/top/${item.id}`) + .field.inline + .control.inline + button.button.is-text( + type='submit', + style='text-decoration: none;', + disabled=index === firstCanSee + ) + span.icon + i.fas.fa-angle-double-up td(data-label='Move Item Up') form.upForm.inline(method='POST', action=`${_CC.config.base}wishlist/${req.params.user}/move/up/${item.id}`) .field.inline