var React = require('react'); var _ = require('lodash'); var cx = require('classnames'); var request = require("superagent"); var Nav = require('naturalcrit/nav/nav.jsx'); var Navbar = require('../../navbar/navbar.jsx'); var EditTitle = require('../../navbar/editTitle.navitem.jsx'); var IssueNavItem = require('../../navbar/issue.navitem.jsx'); var SplitPane = require('naturalcrit/splitPane/splitPane.jsx'); var Editor = require('../../editor/editor.jsx'); var BrewRenderer = require('../../brewRenderer/brewRenderer.jsx'); const KEY = 'homebrewery-new'; var NewPage = React.createClass({ getInitialState: function() { return { ver : '0.0.0', title : '', text: '', isSaving : false }; }, componentDidMount: function() { var storage = localStorage.getItem(KEY); if(storage){ this.setState({ text : storage }) } window.onbeforeunload = (e)=>{ if(this.state.text == '') return; return "Your homebrew isn't saved. Are you sure you want to leave?"; }; }, componentWillUnmount: function() { window.onbeforeunload = function(){}; }, handleSplitMove : function(){ this.refs.editor.update(); }, handleTitleChange : function(title){ this.setState({ title : title }); }, handleTextChange : function(text){ this.setState({ text : text }); localStorage.setItem(KEY, text); }, handleSave : function(){ this.setState({ isSaving : true }); request.post('/api') .send({ title : this.state.title, text : this.state.text }) .end((err, res)=>{ if(err){ this.setState({ isSaving : false }); return; } window.onbeforeunload = function(){}; var brew = res.body; localStorage.removeItem(KEY); window.location = '/edit/' + brew.editId; }) }, renderSaveButton : function(){ if(this.state.isSaving){ return save... }else{ return save } }, renderNavbar : function(){ return {this.renderSaveButton()} }, render : function(){ return
{this.renderNavbar()}
} }); module.exports = NewPage;