From ddd995e0be84a64759b02ad6f98111437d148191 Mon Sep 17 00:00:00 2001
From: Cliff Li <lic@student.ethz.ch>
Date: Sat, 10 Feb 2018 19:00:29 +0100
Subject: [PATCH] Refactor layout.js

---
 src/views/layout.js | 61 +++++++++++++++++++++++----------------------
 1 file changed, 31 insertions(+), 30 deletions(-)

diff --git a/src/views/layout.js b/src/views/layout.js
index 4e6a7e66..fbe89b96 100644
--- a/src/views/layout.js
+++ b/src/views/layout.js
@@ -2,38 +2,39 @@ import { checkLogin, isLoggedIn, logout } from '../models/auth';
 
 const m = require('mithril');
 
+const layoutLoggedOut = vnode => m('div', [
+  m('nav', [
+    m('a', { href: '/', oncreate: m.route.link }, 'AMIV'),
+    m('a', { href: '/events', oncreate: m.route.link }, 'Events'),
+    m('a', { href: '/studydocuments', oncreate: m.route.link }, 'Studienunterlagen'),
+    m('a', { href: '/jobs', oncreate: m.route.link }, 'Jobs'),
+    m('a', { href: '/login', oncreate: m.route.link }, 'Login'),
+  ]),
+  m('main', vnode.children),
+]);
+
+const layoutLoggedIn = vnode => m('div', [
+  m('nav', [
+    m('a', { href: '/', oncreate: m.route.link }, 'AMIV'),
+    m('a', { href: '/events', oncreate: m.route.link }, 'Events'),
+    m('a', { href: '/studydocuments', oncreate: m.route.link }, 'Studienunterlagen'),
+    m('a', { href: '/jobs', oncreate: m.route.link }, 'Jobs'),
+    m('a', { href: '/profile', oncreate: m.route.link }, 'Profil'),
+    m('a', {
+      href: '/',
+      onclick: () => {
+        logout().then(() => { m.route.set('/'); });
+        return false;
+      },
+      oncreate: m.route.link,
+    }, 'Logout'),
+  ]),
+  m('main', vnode.children),
+]);
+
 module.exports = {
   oninit: checkLogin,
   view(vnode) {
-    if (isLoggedIn() === false) {
-      return m('div', [
-        m('nav', [
-          m('a', { href: '/', oncreate: m.route.link }, 'AMIV'),
-          m('a', { href: '/events', oncreate: m.route.link }, 'Events'),
-          m('a', { href: '/studydocuments', oncreate: m.route.link }, 'Studienunterlagen'),
-          m('a', { href: '/jobs', oncreate: m.route.link }, 'Jobs'),
-          m('a', { href: '/login', oncreate: m.route.link }, 'Login'),
-        ]),
-        m('main', vnode.children),
-      ]);
-    }
-    return m('div', [
-      m('nav', [
-        m('a', { href: '/', oncreate: m.route.link }, 'AMIV'),
-        m('a', { href: '/events', oncreate: m.route.link }, 'Events'),
-        m('a', { href: '/studydocuments', oncreate: m.route.link }, 'Studienunterlagen'),
-        m('a', { href: '/jobs', oncreate: m.route.link }, 'Jobs'),
-        m('a', { href: '/profile', oncreate: m.route.link }, 'Profil'),
-        m('a', {
-          href: '/',
-          onclick: () => {
-            logout().then(() => { m.route.set('/'); });
-            return false;
-          },
-          oncreate: m.route.link,
-        }, 'Logout'),
-      ]),
-      m('main', vnode.children),
-    ]);
+    return isLoggedIn() ? layoutLoggedIn(vnode) : layoutLoggedOut(vnode);
   },
 };
-- 
GitLab