diff --git a/build/dev-server.js b/build/dev-server.js index 3e9549e8..a367ff2e 100644 --- a/build/dev-server.js +++ b/build/dev-server.js @@ -23,6 +23,9 @@ var proxyTable = config.dev.proxyTable var app = express() var compiler = webpack(webpackConfig) +// StackEdit custom middlewares +require('./server')(app); + var devMiddleware = require('webpack-dev-middleware')(compiler, { publicPath: webpackConfig.output.publicPath, quiet: true diff --git a/build/server.js b/build/server.js new file mode 100644 index 00000000..75ebf03e --- /dev/null +++ b/build/server.js @@ -0,0 +1,38 @@ +var qs = require('qs'); +var request = require('request'); + +function githubToken(clientId, code) { + return new Promise(function (resolve, reject) { + request({ + method: 'POST', + url: 'https://github.com/login/oauth/access_token', + qs: { + client_id: clientId, + client_secret: process.env.GITHUB_SECRET, + code: code + }, + }, function(err, res, body) { + if (err) { + reject(err); + } + console.log(body) + var token = qs.parse(body).access_token; + if (token) { + resolve(token); + } else { + reject(res.statusCode); + } + }); + }); +} + +module.exports = function (app) { + app.get('/oauth2/githubToken', function (req, res) { + githubToken(req.query.clientId, req.query.code) + .then(function (token) { + res.send(token); + }, function (err) { + res.status(400).send(err ? err.message || err.toString() : 'bad_code'); + }); + }); +}; diff --git a/package.json b/package.json index b8c958ad..06019093 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "normalize-scss": "^7.0.0", "prismjs": "^1.6.0", "raw-loader": "^0.5.1", + "request": "^2.82.0", "vue": "^2.3.3", "vuex": "^2.3.1" }, diff --git a/src/assets/iconBlogger.svg b/src/assets/iconBlogger.svg new file mode 100644 index 00000000..92b32835 --- /dev/null +++ b/src/assets/iconBlogger.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + diff --git a/src/assets/iconDropbox.svg b/src/assets/iconDropbox.svg new file mode 100644 index 00000000..480a0bca --- /dev/null +++ b/src/assets/iconDropbox.svg @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/src/assets/iconGithub.svg b/src/assets/iconGithub.svg new file mode 100644 index 00000000..8204b4c9 --- /dev/null +++ b/src/assets/iconGithub.svg @@ -0,0 +1,7 @@ + + + + + + diff --git a/src/assets/iconGoogleDrive.svg b/src/assets/iconGoogleDrive.svg new file mode 100644 index 00000000..8593ea89 --- /dev/null +++ b/src/assets/iconGoogleDrive.svg @@ -0,0 +1,8 @@ + + + + + + + diff --git a/src/assets/iconGooglePhotos.svg b/src/assets/iconGooglePhotos.svg new file mode 100644 index 00000000..ab6635d1 --- /dev/null +++ b/src/assets/iconGooglePhotos.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/src/assets/iconStackedit.svg b/src/assets/iconStackedit.svg new file mode 100644 index 00000000..09d9e0ad --- /dev/null +++ b/src/assets/iconStackedit.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/components/App.vue b/src/components/App.vue index ab64f559..763d7ade 100644 --- a/src/components/App.vue +++ b/src/components/App.vue @@ -2,6 +2,7 @@
+
@@ -11,6 +12,7 @@ import Vue from 'vue'; import { mapState } from 'vuex'; import Layout from './Layout'; import Modal from './Modal'; +import Notification from './Notification'; // Global directives Vue.directive('focus', { @@ -23,6 +25,7 @@ export default { components: { Layout, Modal, + Notification, }, computed: { ...mapState([ @@ -32,7 +35,7 @@ export default { return !this.$store.getters['content/current'].id; }, showModal() { - return !!this.$store.state.modal.config; + return !!this.$store.getters['modal/config']; }, }, }; diff --git a/src/components/ExplorerNode.vue b/src/components/ExplorerNode.vue index b14879c6..881223c8 100644 --- a/src/components/ExplorerNode.vue +++ b/src/components/ExplorerNode.vue @@ -1,10 +1,11 @@ + + diff --git a/src/components/SideBar.vue b/src/components/SideBar.vue index fd37537b..dd27b0c5 100644 --- a/src/components/SideBar.vue +++ b/src/components/SideBar.vue @@ -12,110 +12,14 @@