From 5ba3f9869618f61d5356817e2f92c0b77968ddc9 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sun, 1 Jan 2017 13:31:33 -0800 Subject: [PATCH] Finally testing, things should be working a bit better now --- client/homebrew/homebrew.jsx | 39 +++-------- client/homebrew/navbar/staticSave.navitem.jsx | 2 +- client/homebrew/pages/homePage/homePage.jsx | 16 +---- package.json | 2 +- server.js | 4 +- server/brew.data.js | 7 +- server/interface.routes.js | 18 +++-- shared/homebrewery/brew.actions.js | 66 +++++++++++-------- 8 files changed, 70 insertions(+), 84 deletions(-) diff --git a/client/homebrew/homebrew.jsx b/client/homebrew/homebrew.jsx index 2bbfc30..d2f3032 100644 --- a/client/homebrew/homebrew.jsx +++ b/client/homebrew/homebrew.jsx @@ -18,11 +18,11 @@ const Homebrew = React.createClass({ getDefaultProps: function() { return { url : '', - welcomeText : '', - changelog : '', version : '0.0.0', - account : undefined, - brew : {} + user : undefined, + + brew : {}, + brews : [] }; }, componentWillMount: function() { @@ -38,23 +38,8 @@ const Homebrew = React.createClass({ Router = CreateRouter({ - '/edit/:id' : (args) => { - if(!this.props.brew.editId){ - return - } - - return - }, - - '/share/:id' : (args) => { - if(!this.props.brew.shareId){ - return - } - - return - }, + '/edit/:id' : , + '/share/:id' : , /* '/user/:username' : (args) => { return { return ; }, - '/new' : (args) => { - return - }, - '/changelog' : (args) => { - return - }, - '*' : , + '/new' : , + '/changelog' : , + '*' : , }); }, render : function(){ diff --git a/client/homebrew/navbar/staticSave.navitem.jsx b/client/homebrew/navbar/staticSave.navitem.jsx index 17c2e1d..8a129ce 100644 --- a/client/homebrew/navbar/staticSave.navitem.jsx +++ b/client/homebrew/navbar/staticSave.navitem.jsx @@ -13,7 +13,7 @@ const StaticSave = React.createClass({ }; }, handleClick : function(){ - Actions.saveNew(); + Actions.create(); }, render : function(){ if(this.props.status === 'saving'){ diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx index 3597fe3..9f4dac3 100644 --- a/client/homebrew/pages/homePage/homePage.jsx +++ b/client/homebrew/pages/homePage/homePage.jsx @@ -14,23 +14,9 @@ const BrewInterface = require('homebrewery/brewInterface/brewInterface.jsx'); const Actions = require('homebrewery/brew.actions.js'); -//const Store = require('homebrewery/brew.store.js'); - +// const HomePage = React.createClass({ - getDefaultProps: function() { - return { - welcomeText : '', - }; - }, - componentWillMount: function() { - Actions.init({ - brew : { - text : this.props.welcomeText - } - }); - }, - handleSave : function(){ Actions.saveNew(); }, diff --git a/package.json b/package.json index 666f8d0..6d6b9e2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "homebrewery", "description": "Create authentic looking D&D homebrews using only markdown", - "version": "2.7.1", + "version": "3.0.0", "scripts": { "dev": "node scripts/dev.js", "quick": "node scripts/quick.js", diff --git a/server.js b/server.js index 1bd1f9d..77623d9 100644 --- a/server.js +++ b/server.js @@ -17,8 +17,8 @@ const config = require('nconf') require('mongoose') .connect(process.env.MONGODB_URI || process.env.MONGOLAB_URI || 'mongodb://localhost/naturalcrit') .connection.on('error', () => { - console.log('Error : Could not connect to a Mongo Database.'); - console.log(' If you are running locally, make sure mongodb.exe is running.'); + console.error('Error : Could not connect to a Mongo Database.'); + console.error(' If you are running locally, make sure mongodb.exe is running.'); }); diff --git a/server/brew.data.js b/server/brew.data.js index 2027214..37c074b 100644 --- a/server/brew.data.js +++ b/server/brew.data.js @@ -88,10 +88,9 @@ const BrewData = { return newBrew.save(); }, update : (newBrew) => { - return Brew.findOneAndUpdate({ editId : newBrew.editId }, { - ...newBrew, - updatedAt : Date.now() - }, {new : true, upsert : true}).exec(); //TODO: TEST THIS that this returns a reocrd + return Brew.findOneAndUpdate({ editId : newBrew.editId }, + _.merge(newBrew, { updatedAt : Date.now() }), + {new : true, upsert : true}).exec(); //TODO: TEST THIS that this returns a reocrd }, remove : (editId) => { return Brew.find({ editId }).remove().exec(); diff --git a/server/interface.routes.js b/server/interface.routes.js index 0e3ea2b..e60dab9 100644 --- a/server/interface.routes.js +++ b/server/interface.routes.js @@ -12,20 +12,22 @@ const docs = { const vitreumRender = require('vitreum/steps/render'); -const templateFn = require('./client/template.js'); +const templateFn = require('../client/template.js'); //TODO: Catch errors here? const renderPage = (req, res, next) => { return vitreumRender('homebrew', templateFn, { url : req.originalUrl, - version : require('./package.json').version, + version : require('../package.json').version, //TODO: add in login path? user : req.account && req.account.username, brews : req.brews, brew : req.brew }) - .then(res.send) - .catch(next) + .then((page) => { + return res.send(page) + }) + .catch(next); }; @@ -66,10 +68,16 @@ router.get('/search', (req, res, next) => { //Changelog Page router.get('/changelog', (req, res, next) => { - req.brew = { text : docs.changelog }; + req.brew = { + text : docs.changelog, + title : 'Changelog' + }; return next(); }, renderPage); +//New Page +router.get('/new', renderPage); + //Home Page router.get('/', (req, res, next) => { req.brew = { text : docs.welcomeBrew }; diff --git a/shared/homebrewery/brew.actions.js b/shared/homebrewery/brew.actions.js index 6c8d32b..9fdb159 100644 --- a/shared/homebrewery/brew.actions.js +++ b/shared/homebrewery/brew.actions.js @@ -1,3 +1,4 @@ +const _ = require('lodash'); const dispatch = require('pico-flux').dispatch; const request = require('superagent'); @@ -6,6 +7,42 @@ const Store = require('./brew.store.js'); let pendingTimer; const PENDING_TIMEOUT = 3000; +const APIActions = { + save : () => { + clearTimeout(pendingTimer); + const brew = Store.getBrew(); + dispatch('SET_STATUS', 'saving'); + request + .put('/api/brew/' + brew.editId) + .send(brew) + .end((err, res) => { + if(err) return dispatch('SET_STATUS', 'error', err); + dispatch('SET_BREW', res.body); + dispatch('SET_STATUS', 'ready'); + }); + }, + create : () => { + dispatch('SET_STATUS', 'saving'); + request.post('/api/brew') + .send(Store.getBrew()) + .end((err, res)=>{ + if(err) return dispatch('SET_STATUS', 'error', err); + localStorage.setItem('homebrewery-new', null); + const brew = res.body; + window.location = '/edit/' + brew.editId; + }); + }, + delete : (editId) => { + dispatch('SET_STATUS', 'deleting'); + request.delete('/api/brew/' + editId) + .send() + .end((err, res)=>{ + if(err) return dispatch('SET_STATUS', 'error', err); + window.location = '/'; + }); + } +} + const Actions = { init : (initState) => { Store.init(initState); @@ -21,33 +58,10 @@ const Actions = { }, pendingSave : () => { clearTimeout(pendingTimer); - pendingTimer = setTimeout(Actions.save, PENDING_TIMEOUT); + pendingTimer = setTimeout(APIActions.save, PENDING_TIMEOUT); dispatch('SET_STATUS', 'pending'); }, - save : () => { - clearTimeout(pendingTimer); - const brew = Store.getBrew(); - dispatch('SET_STATUS', 'saving'); - request - .put('/api/update/' + brew.editId) - .send(brew) - .end((err, res) => { - if(err) return dispatch('SET_STATUS', 'error', err); - dispatch('SET_BREW', res.body); - dispatch('SET_STATUS', 'ready'); - }); - }, - saveNew : () => { - dispatch('SET_STATUS', 'saving'); - request.post('/api') - .send(Store.getBrew()) - .end((err, res)=>{ - if(err) return dispatch('SET_STATUS', 'error', err); - localStorage.setItem('homebrewery-new', null); - const brew = res.body; - window.location = '/edit/' + brew.editId; - }); - }, + localPrint : ()=>{ localStorage.setItem('print', Store.getBrewText()); window.open('/print?dialog=true&local=print','_blank'); @@ -57,4 +71,4 @@ const Actions = { } }; -module.exports = Actions; \ No newline at end of file +module.exports = _.merge(Actions, APIActions); \ No newline at end of file