diff --git a/.eslintrc.js b/.eslintrc.js
index 3c6c4baf..2eb86f64 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -16,7 +16,9 @@ module.exports = {
],
globals: {
"NODE_ENV": false,
- "VERSION": false
+ "VERSION": false,
+ "GOOGLE_CLIENT_ID": false,
+ "GITHUB_CLIENT_ID": false
},
// check if imports actually resolve
'settings': {
diff --git a/build/dev-server.js b/build/dev-server.js
index fbae2240..0ca0c731 100644
--- a/build/dev-server.js
+++ b/build/dev-server.js
@@ -4,6 +4,9 @@ var config = require('../config')
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
}
+if (!process.env.GOOGLE_CLIENT_ID) {
+ process.env.GOOGLE_CLIENT_ID = JSON.parse(config.dev.env.GOOGLE_CLIENT_ID)
+}
var opn = require('opn')
var path = require('path')
diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js
index 6ec2eef5..fbebcecd 100644
--- a/build/webpack.dev.conf.js
+++ b/build/webpack.dev.conf.js
@@ -19,7 +19,9 @@ module.exports = merge(baseWebpackConfig, {
devtool: 'source-map',
plugins: [
new webpack.DefinePlugin({
- NODE_ENV: config.dev.env.NODE_ENV
+ NODE_ENV: config.dev.env.NODE_ENV,
+ GOOGLE_CLIENT_ID: config.dev.env.GOOGLE_CLIENT_ID,
+ GITHUB_CLIENT_ID: config.dev.env.GITHUB_CLIENT_ID
}),
// https://github.com/glenjamin/webpack-hot-middleware#installation--usage
new webpack.HotModuleReplacementPlugin(),
diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js
index 7764829a..f72e9df5 100644
--- a/build/webpack.prod.conf.js
+++ b/build/webpack.prod.conf.js
@@ -28,7 +28,9 @@ var webpackConfig = merge(baseWebpackConfig, {
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
- NODE_ENV: env.NODE_ENV
+ NODE_ENV: env.NODE_ENV,
+ GOOGLE_CLIENT_ID: env.GOOGLE_CLIENT_ID,
+ GITHUB_CLIENT_ID: env.GITHUB_CLIENT_ID
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
diff --git a/config/dev.env.js b/config/dev.env.js
index efead7c8..6b882aa6 100644
--- a/config/dev.env.js
+++ b/config/dev.env.js
@@ -2,5 +2,7 @@ var merge = require('webpack-merge')
var prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
- NODE_ENV: '"development"'
+ NODE_ENV: '"development"',
+ GOOGLE_CLIENT_ID: '"241271498917-c3loeet001r90q6u79q484bsh5clg4fr.apps.googleusercontent.com"',
+ GITHUB_CLIENT_ID: '"cbf0cf25cfd026be23e1"'
})
diff --git a/config/index.js b/config/index.js
index 196da1fa..b5211e47 100644
--- a/config/index.js
+++ b/config/index.js
@@ -33,6 +33,7 @@ module.exports = {
// (https://github.com/webpack/css-loader#sourcemaps)
// In our experience, they generally work as expected,
// just be aware of this issue when enabling this option.
- cssSourceMap: false
+ // cssSourceMap: false
+ cssSourceMap: true
}
}
diff --git a/config/prod.env.js b/config/prod.env.js
index 773d263d..ee5d146f 100644
--- a/config/prod.env.js
+++ b/config/prod.env.js
@@ -1,3 +1,5 @@
module.exports = {
- NODE_ENV: '"production"'
+ NODE_ENV: '"production"',
+ GOOGLE_CLIENT_ID: '"241271498917-t4t7d07qis7oc0ahaskbif3ft6tk63cd.apps.googleusercontent.com"',
+ GITHUB_CLIENT_ID: '"30c1491057c9ad4dbd56"'
}
diff --git a/index.js b/index.js
index 53c564e6..67479080 100644
--- a/index.js
+++ b/index.js
@@ -1,4 +1,11 @@
-process.env.NODE_ENV = 'production';
+const env = require('./config/prod.env');
+
+if (!process.env.NODE_ENV) {
+ process.env.NODE_ENV = JSON.parse(env.NODE_ENV);
+}
+if (!process.env.GOOGLE_CLIENT_ID) {
+ process.env.GOOGLE_CLIENT_ID = JSON.parse(env.GOOGLE_CLIENT_ID);
+}
const http = require('http');
const https = require('https');
diff --git a/server/index.js b/server/index.js
index f9d10fd5..7e599f3f 100644
--- a/server/index.js
+++ b/server/index.js
@@ -44,8 +44,11 @@ module.exports = (app, serveV4) => {
/* eslint-enable global-require, import/no-unresolved */
}
- // Serve callback.html in /app
+ // Serve callback.html
app.get('/oauth2/callback', (req, res) => res.sendFile(resolvePath('static/oauth2/callback.html')));
+ // Google Drive action receiver
+ app.get('/googleDriveAction', (req, res) =>
+ res.redirect(`./app#providerId=googleDrive&state=${encodeURIComponent(req.query.state)}`));
// Serve static resources
if (process.env.NODE_ENV === 'production') {
diff --git a/server/user.js b/server/user.js
index 018e9af9..bbe89766 100644
--- a/server/user.js
+++ b/server/user.js
@@ -5,7 +5,7 @@ const verifier = require('google-id-token-verifier');
const BUCKET_NAME = process.env.USER_BUCKET_NAME || 'stackedit-users';
const PAYPAL_URI = process.env.PAYPAL_URI || 'https://www.paypal.com/cgi-bin/webscr';
const PAYPAL_RECEIVER_EMAIL = process.env.PAYPAL_RECEIVER_EMAIL || 'stackedit.project@gmail.com';
-const GOOGLE_CLIENT_ID = '241271498917-t4t7d07qis7oc0ahaskbif3ft6tk63cd.apps.googleusercontent.com';
+const GOOGLE_CLIENT_ID = process.env.GOOGLE_CLIENT_ID;
const s3Client = new AWS.S3();
const cb = (resolve, reject) => (err, res) => {
diff --git a/src/components/SideBar.vue b/src/components/SideBar.vue
index 5d513850..ec46a8e2 100644
--- a/src/components/SideBar.vue
+++ b/src/components/SideBar.vue
@@ -158,7 +158,7 @@ export default {
.side-bar__info {
padding: 10px;
- margin: 0 -10px;
+ margin: -10px -10px 0;
background-color: $info-bg;
p {
diff --git a/src/components/Toc.vue b/src/components/Toc.vue
index 308fb4d4..0b5d0941 100644
--- a/src/components/Toc.vue
+++ b/src/components/Toc.vue
@@ -88,6 +88,7 @@ export default {
diff --git a/src/components/common/app.scss b/src/components/common/app.scss
index 58d1768b..4d842e29 100644
--- a/src/components/common/app.scss
+++ b/src/components/common/app.scss
@@ -230,9 +230,9 @@ textarea {
color: rgba(0, 0, 0, 0.33);
position: absolute;
left: 0;
- padding: 1px;
+ padding: 2px 3px 2px 0;
width: 20px;
- height: 20px;
+ height: 21px;
line-height: 1;
&:active,
diff --git a/src/components/gutters/NewComment.vue b/src/components/gutters/NewComment.vue
index fa8dc5f6..2f367105 100644
--- a/src/components/gutters/NewComment.vue
+++ b/src/components/gutters/NewComment.vue
@@ -101,16 +101,18 @@ export default {
start, end,
}));
+ const isSticky = this.$el.parentNode.classList.contains('sticky-comment');
+ const isVisible = () => isSticky || this.$store.state.discussion.stickyComment === null;
+
this.$watch(
() => this.$store.state.discussion.currentDiscussionId,
() => this.$nextTick(() => {
- if (this.$store.state.discussion.newCommentFocus) {
+ if (isVisible() && this.$store.state.discussion.newCommentFocus) {
clEditor.focus();
}
}),
{ immediate: true });
- const isSticky = this.$el.parentNode.classList.contains('sticky-comment');
if (isSticky) {
let scrollerMirrorElt;
const getScrollerMirrorElt = () => {
@@ -128,10 +130,10 @@ export default {
} else {
// Maintain the state with the sticky comment
this.$watch(
- () => this.$store.state.discussion.stickyComment === null,
- (isVisible) => {
- clEditor.toggleEditable(isVisible);
- if (isVisible) {
+ () => isVisible(),
+ (visible) => {
+ clEditor.toggleEditable(visible);
+ if (visible) {
const text = this.$store.state.discussion.newCommentText;
clEditor.setContent(text);
const selection = this.$store.state.discussion.newCommentSelection;
diff --git a/src/components/menus/MainMenu.vue b/src/components/menus/MainMenu.vue
index c8b6116d..6610900a 100644
--- a/src/components/menus/MainMenu.vue
+++ b/src/components/menus/MainMenu.vue
@@ -1,19 +1,14 @@