var express = require('express') var router = express.Router() let Notes = require('@models/Note'); let ShareNote = require('@models/ShareNote'); let userId = null let socket = null // middleware that is specific to this router router.use(function setUserId (req, res, next) { if(req.headers.userId){ userId = req.headers.userId } if(req.headers.socket){ // socket = req. } next() }) // // Note actions // router.post('/get', function (req, res) { // req.io.emit('welcome_homie', 'Welcome, dont poop from excitement') Notes.get(userId, req.body.noteId, req.body.password) .then( data => { //Join room when user opens note // req.io.join('note_room') res.send(data) }) }) router.post('/delete', function (req, res) { Notes.delete(userId, req.body.noteId) .then( data => res.send(data) ) }) router.post('/create', function (req, res) { Notes.create(userId, req.body.title, req.body.text) .then( id => res.send({id}) ) }) router.post('/update', function (req, res) { Notes.update(req.io, userId, req.body.noteId, req.body.text, req.body.title, req.body.color, req.body.pinned, req.body.archived, req.body.password, req.body.hint) .then( id => res.send({id}) ) }) router.post('/search', function (req, res) { Notes.search(userId, req.body.searchQuery, req.body.searchTags, req.body.fastFilters) .then( notesAndTags => { res.send(notesAndTags) }) }) router.post('/difftext', function (req, res) { Notes.getDiffText(userId, req.body.noteId, req.body.text, req.body.updated) .then( fullDiffText => { //Response should be full diff text res.send(fullDiffText) }) }) // // Update single note attributes // router.post('/setpinned', function (req, res) { Notes.setPinned(userId, req.body.noteId, req.body.pinned) .then( results => { res.send(results) }) }) router.post('/setarchived', function (req, res) { Notes.setArchived(userId, req.body.noteId, req.body.archived) .then( results => { res.send(results) }) }) // // Share Note Actions // router.post('/getshareusers', function (req, res) { ShareNote.getUsers(userId, req.body.rawTextId) .then(results => res.send(results)) }) router.post('/shareadduser', function (req, res) { ShareNote.addUser(userId, req.body.noteId, req.body.rawTextId, req.body.username) .then( ({success, shareUserId}) => { //Emit update count event to user shared with - so they see the note in real time req.io.to(shareUserId).emit('update_counts') res.send(success) }) }) router.post('/shareremoveuser', function (req, res) { ShareNote.removeUser(userId, req.body.noteId) .then(results => res.send(results)) }) // // Testing Action // //Reindex all notes. Not a very good function, not public router.get('/reindex5yu43prchuj903mrc', function (req, res) { Notes.migrateNoteTextToNewTable().then(status => { return res.send(status) }) }) module.exports = router