diff --git a/changelog.md b/changelog.md
index 2bb9d0624..a1d95b955 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,8 @@
# changelog
+### Wednesday, 07/10/2020 - v2.10.0
+- Google Drive integration -- Sign in with your Google account to link it with your Homebrewery profile. A new button in the Edit page will let you transfer your file to your personal Google Drive storage, and Google will keep a backup of each version! No more lost work surprises!
+
### Friday, 28/08/2020 - v2.9.2
- Many dependency updates
- Finally fixed this changelog page to not run off the edge :P
@@ -40,11 +43,13 @@
### Friday, 03/03/2017 - v2.7.3
- Increasing the range on the Partial Page Rendering for a quick-fix for it getting out of sync on long brews.
+```
+```
+
### Saturday, 18/02/2017 - v2.7.2
- Adding ability to delete a brew from the user page, incase the user creates a brew that makes the edit page unrender-able. (re:309)
-```
-```
+
### Thursday, 19/01/2017 - v2.7.0
- Fixed saving multiple authors and multiple systems on brew metadata (thanks u/PalaNolho re:282)
@@ -81,13 +86,13 @@
- Added in a snippet for a split table
- Added an account nav item to new page
+\page
+
### Sunday, 27/11/2016 - v2.5.1
- Fixed the column rendering on the new user page. Really should have tested that better
- Added a hover tooltip to fully read the brew description
- Made the brew items take up only 25% allowing you to view more per row.
-\page
-
### Wednesday, 23/11/2016 - v2.5.0
- Metadata can now be added to brews
- Added a metadata editor onto the edit and new pages
@@ -125,6 +130,9 @@
### Friday, 29/07/2016 - v2.2.7
- Adding in descriptive note blocks. (Thanks calculuschild!)
+```
+```
+
### Thursday, 07/07/2016 - v2.2.6
- Added a new nav item on the homepage for accessing both recently viewed and edited brews (thanks [ChosenSeraph!](https://github.com/stolksdorf/homebrewery/issues/147))
@@ -149,6 +157,9 @@
- Finally added a syntax for doing spell lists. A bit in-depth about why this took so long. Essentially I'm running out of syntax to use in stardard Markdown. There are too many unique elements in the PHB-style to be mapped. I solved this earlier by stacking certain elements together (eg. an `
` before a `blockquote` turns it into moster state block), but those are getting unweildly. I would like to simply wrap these in `div`s with classes, but unfortunately Markdown stops processing when within HTML blocks. To get around this I wrote my own override to the Markdown parser and lexer to process Markdown within a simple div class wrapper. This should open the door for more unique syntaxes in the future. Big step!
- Override Ctrl+P (and cmd+P) to launch to the print page. Many people try to just print either the editing or share page to get a PDF. While this dones;t make much sense, I do get a ton of issues about it. So now if you try to do this, it'll just bring you imediately to the print page. Everybody wins!
- The onboarding flow has also been confusing a few users (Homepage -> new -> save -> edit page). If you edit the Homepage text now, a Call to Action to save your work will pop-up.
+
+\page
+
- Added a 'Recently Edited' and 'Recently Viewed' nav item to the edit and share page respectively. Each will remember the last 8 items you edited or viewed and when you viewed it. Makes use of the new title attribute of brews to easy navigatation.
- Paragraphs now indent properly after lists (thanks u/slitjen!)
@@ -156,8 +167,6 @@
- Updated the issue template for (hopefully) better reporting
- Added suggestion to use chrome while PDF printing
-\page
-
### Wednesday, 25/05/2016 -v2.0.5
- The class table generators have the proper ability score improvement progression.
diff --git a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
index d093424bc..19078a8ee 100644
--- a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
+++ b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
@@ -4,7 +4,7 @@ const createClass = require('create-react-class');
const _ = require('lodash');
const cx = require('classnames'); //Unused variable
-const DISMISS_KEY = 'dismiss_notification7-24-19';
+const DISMISS_KEY = 'dismiss_notification7-10-20';
const NotificationPopup = createClass({
getInitialState : function() {
@@ -22,17 +22,22 @@ const NotificationPopup = createClass({
notifications : {
psa : function(){
return
- Known bug: Grey Shadow Boxes
- The shadows around certain brew elements such as notes and statblocks might appear as a solid grey box when generating a PDF.
-
- See this Reddit post
- for updates and possible workarounds.
+ Google Drive Integration!
+ We have added Google Drive integration to the Homebrewery! Sign in with
+ your Google account to link it with your Homebrewery profile. A new button in the Edit page will let you transfer your file to your personal
+ Google Drive storage, and Google will keep a backup of each version! No more lost work surprises!
+
+ However, we are aware that there may be uncaught bugs. We encourage you to copy your brew into a text document before transferring to Google
+ Drive just in case any issues arise as this update is rolled out.
+
+ Note: Transferring an existing brew to Google Drive will change the edit and share links of your document. If you have shared your
+ document online, remember to update the links there as well.
;
},
faq : function(){
return
Protect your work!
- At the moment we do not save a history of your projects, so please make frequent backups of your brews!
+ If you opt not to use your Google Drive, keep in mind that we do not save a history of your projects. Please make frequent backups of your brews!
See the FAQ
to learn how to avoid losing your work!
diff --git a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.less b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.less
index 2cf1fbea4..69bffd583 100644
--- a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.less
+++ b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.less
@@ -9,11 +9,11 @@
.notificationPopup{
position : relative;
float : right;
- display : inline-block;
+ display : inline-block;
width : 350px;
- padding : 20px;
+ padding : 15px;
padding-bottom : 10px;
- padding-left : 85px;
+ padding-left : 55px;
background-color : @blue;
color : white;
a{
@@ -22,8 +22,8 @@
}
i.info{
position : absolute;
- top : 24px;
- left : 24px;
+ top : 12px;
+ left : 12px;
opacity : 0.8;
font-size : 2.5em;
}
diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx
index 7f6008a99..aa642226b 100644
--- a/client/homebrew/pages/editPage/editPage.jsx
+++ b/client/homebrew/pages/editPage/editPage.jsx
@@ -192,9 +192,7 @@ const EditPage = createClass({
this.savedBrew = res.body;
}
} else {
- console.log('Saving Locally');
if(transfer) {
- console.log('Moving to Local Storage');
const res = await request.post('/api')
.send(this.state.brew)
.catch((err)=>{
@@ -209,12 +207,9 @@ const EditPage = createClass({
console.log('Error Deleting Google Brew');
});
- console.log('GOT THIS SAVED BREW:');
- console.log(res);
this.savedBrew = res.body;
history.replaceState(null, null, `/edit/${this.savedBrew.editId}`); //update URL to match doc ID
} else {
- console.log('Updating existing local copy');
const res = await request
.put(`/api/update/${this.state.brew.editId}`)
.send(this.state.brew)
@@ -228,7 +223,6 @@ const EditPage = createClass({
}
}
- console.log('Finished saving. About to merge saved brew with current');
this.setState((prevState)=>({
brew : _.merge({}, prevState.brew, {
googleId : this.savedBrew.googleId ? this.savedBrew.googleId : null,
diff --git a/package-lock.json b/package-lock.json
index cf126e63a..d229c8c55 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "homebrewery",
- "version": "2.8.2",
+ "version": "2.10.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/package.json b/package.json
index 798b36594..f5f060b8a 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "homebrewery",
"description": "Create authentic looking D&D homebrews using only markdown",
- "version": "2.8.2",
+ "version": "2.10.0",
"engines": {
"node": "12.16.x"
},
diff --git a/server.js b/server.js
index 835f06432..c96c81971 100644
--- a/server.js
+++ b/server.js
@@ -97,7 +97,6 @@ app.get('/user/:username', async (req, res, next)=>{
let googleBrews = [];
if(req.account && req.account.googleId){
- console.log('GETTING DATA FOR USER PAGE');
googleBrews = await GoogleActions.listGoogleBrews(req, res)
.catch((err)=>{
console.error(err);
@@ -202,7 +201,7 @@ app.use((req, res)=>{
account : req.account,
};
templateFn('homebrew', props)
- .then((page)=>{console.log('^--- END OF REQUEST ---^'); res.send(page);})
+ .then((page)=>{res.send(page);})
.catch((err)=>{
console.log(err);
return res.sendStatus(500);
diff --git a/server/googleActions.js b/server/googleActions.js
index 7b39c2050..af1972efb 100644
--- a/server/googleActions.js
+++ b/server/googleActions.js
@@ -14,8 +14,6 @@ const config = require('nconf')
GoogleActions = {
authCheck : (account, res)=>{
- console.log('RUNNING AUTH CHECK');
-
if(!account || !account.googleId){ // If not signed into Google
const err = new Error('Not Signed In');
err.status = 401;
@@ -39,18 +37,16 @@ GoogleActions = {
}
account.googleAccessToken = tokens.access_token;
const JWTToken = token.generateAccessToken(account);
- console.log('Updated Access Token');
//Save updated token to cookie
- res.cookie('nc_session', JWTToken, { maxAge: 1000*60*60*24*365, path: '/', sameSite: 'lax' });
- //res.cookie('nc_session', JWTToken, {maxAge: 1000*60*60*24*365, path: '/', sameSite: 'lax', domain: '.naturalcrit.com'});
+ //res.cookie('nc_session', JWTToken, { maxAge: 1000*60*60*24*365, path: '/', sameSite: 'lax' });
+ res.cookie('nc_session', JWTToken, { maxAge: 1000*60*60*24*365, path: '/', sameSite: 'lax', domain: '.naturalcrit.com' });
});
return oAuth2Client;
},
getGoogleFolder : async (auth)=>{
- console.log('getting google folder');
const drive = google.drive({ version: 'v3', auth: auth });
fileMetadata = {
@@ -69,8 +65,6 @@ GoogleActions = {
let folderId;
if(obj.data.files.length == 0){
- console.log('no folders found'); // CREATE APP FOLDER
-
const obj = await drive.files.create({
resource : fileMetadata
})
@@ -104,12 +98,7 @@ GoogleActions = {
return console.error(`Error Listing Google Brews: ${err}`);
});
- if(obj.data.files.length) {
- console.log('List Google Brews:');
- obj.data.files.map((file)=>{
- console.log(`${file.name} (${file.id})`);
- });
- } else {
+ if(!obj.data.files.length) {
console.log('No files found.');
}
@@ -172,7 +161,6 @@ GoogleActions = {
},
newGoogleBrew : async (auth, brew)=>{
- console.log('CREATE GOOGLE BREW');
const drive = google.drive({ version: 'v3', auth: auth });
const media = {
@@ -288,7 +276,6 @@ GoogleActions = {
deleteGoogleBrew : async (req, res, id)=>{
- console.log('trying to delete google brew');
oAuth2Client = GoogleActions.authCheck(req.account, res);
const drive = google.drive({ version: 'v3', auth: oAuth2Client });
diff --git a/server/homebrew.api.js b/server/homebrew.api.js
index fea7bef1c..108201d5e 100644
--- a/server/homebrew.api.js
+++ b/server/homebrew.api.js
@@ -32,11 +32,7 @@ const newBrew = (req, res)=>{
delete brew.shareId;
delete brew.googleId;
- console.log('creating new local file using this data:');
- console.log(brew);
const newHomebrew = new HomebrewModel(brew);
- console.log('this is the new local homebrew');
- console.log(newHomebrew);
// Compress brew text to binary before saving
newHomebrew.textBin = zlib.deflateRawSync(newHomebrew.text);
// Delete the non-binary text field since it's not needed anymore
@@ -48,16 +44,13 @@ const newBrew = (req, res)=>{
return res.status(500).send(`Error while creating new brew, ${err.toString()}`);
}
- console.log('NEW BREW. gOING TO RETURN THIS:');
obj = obj.toObject();
obj.gDrive = false;
- console.log(obj);
return res.status(200).send(obj);
});
};
const updateBrew = (req, res)=>{
- console.log('UPDATE LOCAL');
HomebrewModel.get({ editId: req.params.id })
.then((brew)=>{
brew = _.merge(brew, req.body);
@@ -74,13 +67,8 @@ const updateBrew = (req, res)=>{
brew.markModified('authors');
brew.markModified('systems');
- console.log('saving this brew');
- console.log(brew);
-
brew.save((err, obj)=>{
if(err) throw err;
- console.log('sending this updated brew:');
- console.log(obj);
return res.status(200).send(obj);
});
})
@@ -123,8 +111,6 @@ const deleteBrew = (req, res)=>{
const newGoogleBrew = async (req, res, next)=>{
let oAuth2Client;
- console.log('newGoogleBrew (API)');
-
try { oAuth2Client = GoogleActions.authCheck(req.account, res); } catch (err) { return res.status(err.status).send(err.message); }
const brew = req.body;
diff --git a/server/token.js b/server/token.js
index 975120316..40d76a484 100644
--- a/server/token.js
+++ b/server/token.js
@@ -21,9 +21,6 @@ const generateAccessToken = (account)=>{
delete payload.password;
delete payload._id;
- console.log('THE PAYLOAD');
- console.log(payload);
-
const secret = config.get('authentication_token_secret');
const token = jwt.encode(payload, secret);