diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx
index 1925d2dfa..e77fbc987 100644
--- a/client/homebrew/pages/newPage/newPage.jsx
+++ b/client/homebrew/pages/newPage/newPage.jsx
@@ -61,7 +61,7 @@ const NewPage = createClass({
isSaving : false,
saveGoogle : (global.account && global.account.googleId ? true : false),
- errors : [],
+ errors : null,
htmlErrors : Markdown.validate(this.props.brew.text)
};
},
@@ -138,6 +138,14 @@ const NewPage = createClass({
}));
},
+ clearErrors : function(){
+ this.setState({
+ errors : null,
+ isSaving : false
+
+ });
+ },
+
save : async function(){
this.setState({
isSaving : true
@@ -161,7 +169,7 @@ const NewPage = createClass({
console.log(err.status === 401
? 'Not signed in!'
: 'Error Creating New Google Brew!');
- this.setState({ isSaving: false });
+ this.setState({ isSaving: false, errors: err });
return;
});
@@ -191,12 +199,73 @@ const NewPage = createClass({
},
renderSaveButton : function(){
+ if(this.state.errors){
+ let errMsg = '';
+ try {
+ errMsg += `${this.state.errors.toString()}\n\n`;
+ errMsg += `\`\`\`\n${this.state.errors.stack}\n`;
+ errMsg += `${JSON.stringify(this.state.errors.response.error, null, ' ')}\n\`\`\``;
+ console.log(errMsg);
+ } catch (e){}
+
+ if(this.state.errors.status == '401'){
+ return
+ Oops!
+
+ You must be signed in to a Google account
+ to save this to
Google Drive!
+
+
+ Sign In
+
+
+
+ Not Now
+
+
+ ;
+ }
+
+ if(this.state.errors.status == '403' && this.state.errors.response.body.errors[0].reason == 'insufficientPermissions'){
+ return
+ Oops!
+
+ Looks like your Google credentials have
+ expired! Visit the log in page to sign out
+ and sign back in with Google
+ to save this to Google Drive!
+
+
+ Sign In
+
+
+
+ Not Now
+
+
+ ;
+ }
+
+ return
+ Oops!
+
+ Looks like there was a problem saving.
+ Report the issue
+ here
+ .
+
+ ;
+ }
+
if(this.state.isSaving){
- return
+ return
save...
;
} else {
- return
+ return
save
;
}
diff --git a/client/homebrew/pages/newPage/newPage.less b/client/homebrew/pages/newPage/newPage.less
index 8cd21b2ec..4f39e626d 100644
--- a/client/homebrew/pages/newPage/newPage.less
+++ b/client/homebrew/pages/newPage/newPage.less
@@ -1,10 +1,82 @@
.newPage{
-
- .saveButton{
+ .navItem.save{
background-color: @orange;
&:hover{
background-color: @green;
}
+ &.error{
+ position : relative;
+ background-color : @red;
+ }
}
-
-}
\ No newline at end of file
+ .errorContainer{
+ animation-name: glideDown;
+ animation-duration: 0.4s;
+ position : absolute;
+ top : 100%;
+ left : 50%;
+ z-index : 100000;
+ width : 140px;
+ padding : 3px;
+ color : white;
+ background-color : #333;
+ border : 3px solid #444;
+ border-radius : 5px;
+ transform : translate(-50% + 3px, 10px);
+ text-align : center;
+ font-size : 10px;
+ font-weight : 800;
+ text-transform : uppercase;
+ a{
+ color : @teal;
+ }
+ &:before {
+ content: "";
+ width: 0px;
+ height: 0px;
+ position: absolute;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid #444;
+ left: 53px;
+ top: -23px;
+ }
+ &:after {
+ content: "";
+ width: 0px;
+ height: 0px;
+ position: absolute;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid #333;
+ left: 53px;
+ top: -19px;
+ }
+ .deny {
+ width : 48%;
+ margin : 1px;
+ padding : 5px;
+ background-color : #333;
+ display : inline-block;
+ border-left : 1px solid #666;
+ .animate(background-color);
+ &:hover{
+ background-color : red;
+ }
+ }
+ .confirm {
+ width : 48%;
+ margin : 1px;
+ padding : 5px;
+ background-color : #333;
+ display : inline-block;
+ color : white;
+ .animate(background-color);
+ &:hover{
+ background-color : teal;
+ }
+ }
+ }
+}
diff --git a/server/googleActions.js b/server/googleActions.js
index bfe1b406f..eab6babf3 100644
--- a/server/googleActions.js
+++ b/server/googleActions.js
@@ -168,6 +168,7 @@ GoogleActions = {
.catch((err)=>{
console.log('Error saving to google');
console.error(err);
+ throw (err);
//return res.status(500).send('Error while saving');
});
}
@@ -203,8 +204,9 @@ GoogleActions = {
media : media
})
.catch((err)=>{
+ console.log('Error while creating new Google brew');
console.error(err);
- return res.status(500).send('Error while creating google brew');
+ throw (err);
});
if(!obj) return;
diff --git a/server/homebrew.api.js b/server/homebrew.api.js
index 1f988761d..36d0aa576 100644
--- a/server/homebrew.api.js
+++ b/server/homebrew.api.js
@@ -141,9 +141,12 @@ const newGoogleBrew = async (req, res, next)=>{
req.body = brew;
- const newBrew = await GoogleActions.newGoogleBrew(oAuth2Client, brew);
-
- return res.status(200).send(newBrew);
+ try {
+ const newBrew = await GoogleActions.newGoogleBrew(oAuth2Client, brew);
+ return res.status(200).send(newBrew);
+ } catch (err) {
+ return res.status(err.response.status).send(err);
+ }
};
const updateGoogleBrew = async (req, res, next)=>{
@@ -154,9 +157,12 @@ const updateGoogleBrew = async (req, res, next)=>{
const brew = req.body;
brew.text = mergeBrewText(brew.text, brew.style);
- const updatedBrew = await GoogleActions.updateGoogleBrew(oAuth2Client, brew);
-
- return res.status(200).send(updatedBrew);
+ try {
+ const updatedBrew = await GoogleActions.updateGoogleBrew(oAuth2Client, brew);
+ return res.status(200).send(updatedBrew);
+ } catch (err) {
+ return res.status(err.response.status).send(err);
+ }
};
router.post('/api', newBrew);