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