70 lines
1.8 KiB
JavaScript
70 lines
1.8 KiB
JavaScript
const express = require("express")
|
|
const router = express.Router()
|
|
const { requireAuth } = require("./../../middleware/authmiddleware")
|
|
const User = require("./../../model/user.js")
|
|
const bodyParser = require("body-parser")
|
|
|
|
router.use(bodyParser.json())
|
|
|
|
router.post("/share", requireAuth, async (req, res) => {
|
|
let { sharevalue } = req.body
|
|
if (!sharevalue || typeof sharevalue !== "string") {
|
|
return res.json({ status: "error", error: "Share value not sent!" })
|
|
}
|
|
if (sharevalue.length > 100) {
|
|
return res.json({ status: "error", error: "Share value too long!" })
|
|
}
|
|
const date = new Date().getTime()
|
|
if (date - req.userdocument?.lastfeedsharetime < 3600000) {
|
|
return res.json({
|
|
status: "error",
|
|
error: "You can only share once an hour!",
|
|
})
|
|
}
|
|
|
|
let posterid = req.userdocument.userid
|
|
User.updateOne(
|
|
{ userid: req.userdocument.userid },
|
|
{
|
|
$push: {
|
|
feed: { posterid, content: sharevalue, date, moderated: false },
|
|
},
|
|
$set: {
|
|
lastfeedsharetime: date,
|
|
},
|
|
},
|
|
function (err, doc) {},
|
|
)
|
|
res.json({ status: "success", message: "Done!" }) // the next operation could take some time and we wouldn't want the client to cancel during that!!
|
|
|
|
if (req.userdocument.friends) {
|
|
//console.log(req.userdocument.friends)
|
|
for (let item of req.userdocument.friends) {
|
|
User.updateOne(
|
|
{ userid: item.userid },
|
|
{
|
|
$push: {
|
|
feed: {
|
|
posterid,
|
|
content: sharevalue,
|
|
date,
|
|
moderated: false,
|
|
},
|
|
},
|
|
},
|
|
function (err, doc) {},
|
|
)
|
|
}
|
|
}
|
|
})
|
|
|
|
router.post("/fetch", requireAuth, async (req, res) => {
|
|
let feed = await User.findOne({ userid: req.userdocument.userid })
|
|
.lean()
|
|
.populate({ path: "feed.userdata", select: ["username"] })
|
|
.select("feed")
|
|
return res.json({ status: "success", data: feed.feed })
|
|
})
|
|
|
|
module.exports = router
|