0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-04 19:02:38 +00:00

update metadata editor to include error handling

This commit is contained in:
Charlie Humphreys
2023-01-23 09:35:19 -06:00
parent d5a34eedb9
commit 6ddf0bb889
4 changed files with 21 additions and 7 deletions

View File

@@ -32,6 +32,7 @@ const Editor = createClass({
onTextChange : ()=>{}, onTextChange : ()=>{},
onStyleChange : ()=>{}, onStyleChange : ()=>{},
onMetaChange : ()=>{}, onMetaChange : ()=>{},
reportError : ()=>{},
renderer : 'legacy' renderer : 'legacy'
}; };
@@ -291,7 +292,8 @@ const Editor = createClass({
rerenderParent={this.rerenderParent} /> rerenderParent={this.rerenderParent} />
<MetadataEditor <MetadataEditor
metadata={this.props.brew} metadata={this.props.brew}
onChange={this.props.onMetaChange} /> onChange={this.props.onMetaChange}
reportError={this.props.reportError}/>
</>; </>;
} }
}, },

View File

@@ -4,7 +4,7 @@ const React = require('react');
const createClass = require('create-react-class'); const createClass = require('create-react-class');
const _ = require('lodash'); const _ = require('lodash');
const cx = require('classnames'); const cx = require('classnames');
const request = require('superagent'); const request = require('../../utils/request-middleware.js');
const Nav = require('naturalcrit/nav/nav.jsx'); const Nav = require('naturalcrit/nav/nav.jsx');
const StringArrayEditor = require('../stringArrayEditor/stringArrayEditor.jsx'); const StringArrayEditor = require('../stringArrayEditor/stringArrayEditor.jsx');
@@ -37,7 +37,8 @@ const MetadataEditor = createClass({
renderer : 'legacy', renderer : 'legacy',
theme : '5ePHB' theme : '5ePHB'
}, },
onChange : ()=>{} onChange : ()=>{},
reportError : ()=>{}
}; };
}, },
@@ -121,8 +122,12 @@ const MetadataEditor = createClass({
request.delete(`/api/${this.props.metadata.googleId ?? ''}${this.props.metadata.editId}`) request.delete(`/api/${this.props.metadata.googleId ?? ''}${this.props.metadata.editId}`)
.send() .send()
.end(function(err, res){ .end((err, res)=>{
window.location.href = '/'; if(err) {
this.props.reportError(err.response);
} else {
window.location.href = '/';
}
}); });
}, },

View File

@@ -19,7 +19,7 @@ const BrewItem = createClass({
authors : [], authors : [],
stubbed : true stubbed : true
}, },
reportError : null reportError : ()=>{}
}; };
}, },
@@ -35,7 +35,7 @@ const BrewItem = createClass({
request.delete(`/api/${this.props.brew.googleId ?? ''}${this.props.brew.editId}`) request.delete(`/api/${this.props.brew.googleId ?? ''}${this.props.brew.editId}`)
.send() .send()
.end((err, res)=>{ .end((err, res)=>{
if(err && this.props.reportError) { if(err) {
this.props.reportError(err.response); this.props.reportError(err.response);
} else { } else {
location.reload(); location.reload();

View File

@@ -305,6 +305,12 @@ const EditPage = createClass({
this.warningTimer; this.warningTimer;
}, },
errorReported : function(error) {
this.setState({
error
});
},
renderAutoSaveButton : function(){ renderAutoSaveButton : function(){
return <Nav.item onClick={this.handleAutoSave}> return <Nav.item onClick={this.handleAutoSave}>
Autosave <i className={this.state.autoSave ? 'fas fa-power-off active' : 'fas fa-power-off'}></i> Autosave <i className={this.state.autoSave ? 'fas fa-power-off active' : 'fas fa-power-off'}></i>
@@ -393,6 +399,7 @@ const EditPage = createClass({
onTextChange={this.handleTextChange} onTextChange={this.handleTextChange}
onStyleChange={this.handleStyleChange} onStyleChange={this.handleStyleChange}
onMetaChange={this.handleMetaChange} onMetaChange={this.handleMetaChange}
reportError={this.errorReported}
renderer={this.state.brew.renderer} renderer={this.state.brew.renderer}
/> />
<BrewRenderer text={this.state.brew.text} style={this.state.brew.style} renderer={this.state.brew.renderer} theme={this.state.brew.theme} errors={this.state.htmlErrors} /> <BrewRenderer text={this.state.brew.text} style={this.state.brew.style} renderer={this.state.brew.renderer} theme={this.state.brew.theme} errors={this.state.htmlErrors} />