aboutsummaryrefslogtreecommitdiff
path: root/app/dasein.js
diff options
context:
space:
mode:
authorRubén Beltrán del Río <ben@nsovocal.com>2017-01-30 02:47:14 -0600
committerGitHub <noreply@github.com>2017-01-30 02:47:14 -0600
commita6ccda0fbc4df683f9568d85eb22b21684d2a0bd (patch)
tree967e98f2d8bf6718858da1fbc279987208b25e06 /app/dasein.js
parent287fa13b3e600b2340895a5463a288bf08101bb5 (diff)
Create and Show Posts (#3)
* 📝 Update changelog (retroactive) SORRY * Add JSDoc * Document twitter helper * Add posts handler * Remove cookies, set routes under /api * Update readme for clearer callback instructions * Redirect callback to login with token * Add dasein paw helper * Remove unused hostname * Remove hostname, add expiration to config * Rename expiration ttl * Send TTL to posts handler * Add redis dependency * Add redis config to config file * Add DASEIN_REDIS_HOST to env.dist * Correct redis config structure * Add redis db to compose * Add redis to posts handler * Update dasein paw file * Git add uuid * Add first iteration of post handlers * Ignore docs in linter * Ignore generated assets * Ignore docs and assets * Add frontend dependencies + more koa * Add post creation to backend * Adjust readme to show actual callback route * Add npm build as part of docker process * Configure babel * Update paw * Add webpack config * Add frontend code * List globals
Diffstat (limited to 'app/dasein.js')
-rw-r--r--app/dasein.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/app/dasein.js b/app/dasein.js
new file mode 100644
index 0000000..6b3fd95
--- /dev/null
+++ b/app/dasein.js
@@ -0,0 +1,90 @@
+import Vue from 'vue';
+import VueRouter from 'vue-router';
+
+import AuthService from './services/auth';
+
+import LoginComponent from './components/login';
+import WelcomeComponent from './components/welcome';
+import PostsComponent from './components/posts';
+
+/* global window */
+
+const internals = {};
+
+export default internals.Dasein = {
+
+ start() {
+
+ this._setupVue();
+
+ internals.authService = new AuthService();
+
+ this.vm = new Vue({
+ router: this._setupRouter(),
+ el: '#dasein',
+ components: {
+ login: LoginComponent,
+ welcome: WelcomeComponent
+ },
+ data: {
+ message: 'Hello Vue!'
+ },
+ methods: {
+ authenticated() {
+
+ return internals.authService.authenticated;
+ }
+ }
+ });
+
+ },
+
+ // Initializes vue options
+
+ _setupVue() {
+
+ Vue.use(VueRouter);
+ },
+
+ // Sets up the routes
+
+ _setupRouter() {
+
+ const routes = [
+ {
+ path: '/login',
+ component: WelcomeComponent
+ },
+ {
+ path: '/',
+ component: PostsComponent
+ },
+ {
+ path: '/login-callback',
+ component: LoginComponent,
+ props: (route) => {
+
+ return {
+ oAuthToken: route.query.oauth_token,
+ oAuthVerifier: route.query.oauth_verifier
+ };
+ }
+ }
+ ];
+
+ const router = new VueRouter({
+ mode: 'history',
+ routes
+ });
+
+ return router;
+ }
+};
+
+
+internals.run = function () {
+
+ internals.Dasein.start();
+};
+
+window.addEventListener('load', internals.run);