0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-18 16:32:43 +00:00

Refactor ErrorNavItem to not need "this" parameter

Toward making edit/new/home pages functional, which do not have "this"
This commit is contained in:
Trevor Buckner
2025-08-30 19:35:22 -04:00
parent d01f4fb77e
commit 8671404bdc
5 changed files with 155 additions and 148 deletions

View File

@@ -1,32 +1,14 @@
require('./error-navitem.less'); require('./error-navitem.less');
const React = require('react'); const React = require('react');
const Nav = require('naturalcrit/nav/nav.jsx'); const Nav = require('naturalcrit/nav/nav.jsx');
const createClass = require('create-react-class');
const ErrorNavItem = createClass({ const ErrorNavItem = ({error = '', clearError})=>{
getDefaultProps : function() {
return {
error : '',
parent : null
};
},
render : function() {
const clearError = ()=>{
const state = {
error : null
};
if(this.props.parent.state.isSaving) {
state.isSaving = false;
}
this.props.parent.setState(state);
};
const error = this.props.error;
const response = error.response; const response = error.response;
const status = response?.status;
const errorCode = error.code const errorCode = error.code
const status = response?.status;
const HBErrorCode = response?.body?.HBErrorCode; const HBErrorCode = response?.body?.HBErrorCode;
const message = response?.body?.message; const message = response?.body?.message;
let errMsg = ''; let errMsg = '';
try { try {
errMsg += `${error.toString()}\n\n`; errMsg += `${error.toString()}\n\n`;
@@ -151,7 +133,6 @@ const ErrorNavItem = createClass({
</a>. </a>.
</div> </div>
</Nav.item>; </Nav.item>;
} };
});
module.exports = ErrorNavItem; module.exports = ErrorNavItem;

View File

@@ -438,6 +438,13 @@ const EditPage = createClass({
return `https://www.reddit.com/r/UnearthedArcana/submit?title=${encodeURIComponent(title.toWellFormed())}&text=${encodeURIComponent(text)}`; return `https://www.reddit.com/r/UnearthedArcana/submit?title=${encodeURIComponent(title.toWellFormed())}&text=${encodeURIComponent(text)}`;
}, },
clearError : function(){
setState({
error : null,
isSaving : false
})
},
renderNavbar : function(){ renderNavbar : function(){
const shareLink = this.processShareId(); const shareLink = this.processShareId();
@@ -449,7 +456,7 @@ const EditPage = createClass({
<Nav.section> <Nav.section>
{this.renderGoogleDriveIcon()} {this.renderGoogleDriveIcon()}
{this.state.error ? {this.state.error ?
<ErrorNavItem error={this.state.error} parent={this}></ErrorNavItem> : <ErrorNavItem error={this.state.error} clearError={clearError}></ErrorNavItem> :
<Nav.dropdown className='save-menu'> <Nav.dropdown className='save-menu'>
{this.renderSaveButton()} {this.renderSaveButton()}
{this.renderAutoSaveButton()} {this.renderAutoSaveButton()}

View File

@@ -80,11 +80,19 @@ const HomePage = createClass({
brew : { ...prevState.brew, text: text }, brew : { ...prevState.brew, text: text },
})); }));
}, },
clearError : function(){
setState({
error : null,
isSaving : false
})
},
renderNavbar : function(){ renderNavbar : function(){
return <Navbar ver={this.props.ver}> return <Navbar ver={this.props.ver}>
<Nav.section> <Nav.section>
{this.state.error ? {this.state.error ?
<ErrorNavItem error={this.state.error} parent={this}></ErrorNavItem> : <ErrorNavItem error={this.state.error} clearError={clearError}></ErrorNavItem> :
null null
} }
<NewBrewItem /> <NewBrewItem />

View File

@@ -211,6 +211,13 @@ const NewPage = createClass({
} }
}, },
clearError : function(){
setState({
error : null,
isSaving : false
})
},
renderNavbar : function(){ renderNavbar : function(){
return <Navbar> return <Navbar>
@@ -220,7 +227,7 @@ const NewPage = createClass({
<Nav.section> <Nav.section>
{this.state.error ? {this.state.error ?
<ErrorNavItem error={this.state.error} parent={this}></ErrorNavItem> : <ErrorNavItem error={this.state.error} clearError={clearError}></ErrorNavItem> :
this.renderSaveButton() this.renderSaveButton()
} }
<PrintNavItem /> <PrintNavItem />

View File

@@ -39,10 +39,14 @@ const UserPage = (props)=>{
}] : []) }] : [])
]; ];
const clearError = ()=>{
setError(null);
};
const navItems = ( const navItems = (
<Navbar> <Navbar>
<Nav.section> <Nav.section>
{error && (<ErrorNavItem error={error} parent={null}></ErrorNavItem>)} {error && (<ErrorNavItem error={error} clearError={clearError}></ErrorNavItem>)}
<NewBrew /> <NewBrew />
<HelpNavItem /> <HelpNavItem />
<VaultNavitem /> <VaultNavitem />