diff --git a/client/homebrew/pages/basePages/editPage/editPage.jsx b/client/homebrew/pages/basePages/editPage/editPage.jsx new file mode 100644 index 000000000..9229ad6ea --- /dev/null +++ b/client/homebrew/pages/basePages/editPage/editPage.jsx @@ -0,0 +1,37 @@ +require('./editPage.less'); +const React = require('react'); + +const Nav = require('naturalcrit/nav/nav.jsx'); +const Navbar = require('../../../navbar/navbar.jsx'); +const NewBrewItem = require('../../../navbar/newbrew.navitem.jsx'); +const HelpNavItem = require('../../../navbar/help.navitem.jsx'); +const PrintNavItem = require('../../../navbar/print.navitem.jsx'); +const ErrorNavItem = require('../../../navbar/error-navitem.jsx'); +const AccountNavItem = require('../../../navbar/account.navitem.jsx'); +const RecentNavItem = require('../../../navbar/recent.navitem.jsx').both; +const VaultNavItem = require('../../../navbar/vault.navitem.jsx'); + +const BaseEditPage = (props)=>{ + return ( +
+ + + {props.brew.title} + + + {props.navButtons} + + + + + + + + + + {props.children} +
+ ); +}; + +module.exports = BaseEditPage; diff --git a/client/homebrew/pages/basePages/editPage/editPage.less b/client/homebrew/pages/basePages/editPage/editPage.less new file mode 100644 index 000000000..e69de29bb diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index d1f0ed21c..c439d1789 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -13,14 +13,9 @@ const { Meta } = require('vitreum/headtags'); const Nav = require('naturalcrit/nav/nav.jsx'); const Navbar = require('../../navbar/navbar.jsx'); -const NewBrew = require('../../navbar/newbrew.navitem.jsx'); -const HelpNavItem = require('../../navbar/help.navitem.jsx'); -const PrintNavItem = require('../../navbar/print.navitem.jsx'); const ErrorNavItem = require('../../navbar/error-navitem.jsx'); -const Account = require('../../navbar/account.navitem.jsx'); -const RecentNavItem = require('../../navbar/recent.navitem.jsx').both; -const VaultNavItem = require('../../navbar/vault.navitem.jsx'); +const BaseEditPage = require('../basePages/editPage/editPage.jsx'); const SplitPane = require('client/components/splitPane/splitPane.jsx'); const Editor = require('../../editor/editor.jsx'); const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx'); @@ -441,11 +436,7 @@ const EditPage = createClass({ renderNavbar : function(){ const shareLink = this.processShareId(); - return - - {this.state.brew.title} - - + return <> {this.renderGoogleDriveIcon()} {this.state.error ? @@ -455,8 +446,6 @@ const EditPage = createClass({ {this.renderAutoSaveButton()} } - - share @@ -471,20 +460,19 @@ const EditPage = createClass({ post to reddit - - - - - - ; + ; }, render : function(){ - return
+ return - {this.renderNavbar()} - {this.props.brew.lock && }
@@ -522,7 +510,7 @@ const EditPage = createClass({ />
-
; + ; } }); diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx index eac0216fd..be2244503 100644 --- a/client/homebrew/pages/homePage/homePage.jsx +++ b/client/homebrew/pages/homePage/homePage.jsx @@ -6,15 +6,10 @@ import request from '../../utils/request-middleware.js'; const { Meta } = require('vitreum/headtags'); const Nav = require('naturalcrit/nav/nav.jsx'); -const Navbar = require('../../navbar/navbar.jsx'); -const NewBrewItem = require('../../navbar/newbrew.navitem.jsx'); -const HelpNavItem = require('../../navbar/help.navitem.jsx'); -const VaultNavItem = require('../../navbar/vault.navitem.jsx'); -const RecentNavItem = require('../../navbar/recent.navitem.jsx').both; -const AccountNavItem = require('../../navbar/account.navitem.jsx'); const ErrorNavItem = require('../../navbar/error-navitem.jsx'); const { fetchThemeBundle } = require('../../../../shared/helpers.js'); +const BaseEditPage = require('../basePages/editPage/editPage.jsx'); const SplitPane = require('client/components/splitPane/splitPane.jsx'); const Editor = require('../../editor/editor.jsx'); const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx'); @@ -25,13 +20,13 @@ const HomePage = createClass({ displayName : 'HomePage', getDefaultProps : function() { return { - brew : DEFAULT_BREW, - ver : '0.0.0' + brew : DEFAULT_BREW }; }, getInitialState : function() { return { brew : this.props.brew, + isSaving : false, welcomeText : this.props.brew.text, error : undefined, currentEditorViewPageNum : 1, @@ -47,7 +42,11 @@ const HomePage = createClass({ fetchThemeBundle(this, this.props.brew.renderer, this.props.brew.theme); }, - handleSave : function(){ + save : function(){ + this.setState({ + isSaving : true + }); + request.post('/api') .send(this.state.brew) .end((err, res)=>{ @@ -57,6 +56,9 @@ const HomePage = createClass({ } const brew = res.body; window.location = `/edit/${brew.editId}`; + }) + .catch((err)=>{ + this.setState({ isSaving: false, error: err }); }); }, handleSplitMove : function(){ @@ -80,26 +82,38 @@ const HomePage = createClass({ brew : { ...prevState.brew, text: text }, })); }, + + renderSaveButton : function(){ + if(this.state.isSaving){ + return + save... + ; + } else { + return + save + ; + } + }, + renderNavbar : function(){ - return + return <> {this.state.error ? : null } - - - - - - ; + ; }, render : function(){ - return
+ return - {this.renderNavbar()}
-
+
Save current
Create your own -
; +
} }); diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index ab7c22541..4b4040c10 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -7,13 +7,9 @@ import request from '../../utils/request-middleware.js'; import Markdown from 'naturalcrit/markdown.js'; const Nav = require('naturalcrit/nav/nav.jsx'); -const PrintNavItem = require('../../navbar/print.navitem.jsx'); -const Navbar = require('../../navbar/navbar.jsx'); -const AccountNavItem = require('../../navbar/account.navitem.jsx'); const ErrorNavItem = require('../../navbar/error-navitem.jsx'); -const RecentNavItem = require('../../navbar/recent.navitem.jsx').both; -const HelpNavItem = require('../../navbar/help.navitem.jsx'); +const BaseEditPage = require('../basePages/editPage/editPage.jsx'); const SplitPane = require('client/components/splitPane/splitPane.jsx'); const Editor = require('../../editor/editor.jsx'); const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx'); @@ -212,28 +208,23 @@ const NewPage = createClass({ }, renderNavbar : function(){ - return - - - {this.state.brew.title} - - + return <> {this.state.error ? : this.renderSaveButton() } - - - - - ; + ; }, render : function(){ - return
- {this.renderNavbar()} + return
-
; + ; } });