Something went wrong on our end
import m from 'mithril';
import { checkLogin, isLoggedIn, logout } from '../models/auth';
import { Tabs } from '../components';
const defaultTabs = ['AMIV', 'Events', 'Studienunterlagen', 'Jobs'];
const tabsLoggedOut = ['Login'];
const tabsLoggedIn = ['Profil', 'Logout'];
const gotoRoute = route => {
const current = m.route.get();
if (current !== route) m.route.set(route);
};
export default class Layout {
constructor() {
checkLogin();
this.setTabs();
this.selectedTabIndex = 0;
this.wasLoggedIn = isLoggedIn();
}
setTabs() {
const tabOptions = isLoggedIn() ? tabsLoggedIn : tabsLoggedOut;
this.tabs = [...defaultTabs, ...tabOptions];
}
selectTab(tabIndex) {
const tabString = this.tabs[tabIndex];
switch (tabString) {
case 'AMIV':
gotoRoute('/');
break;
case 'Events':
gotoRoute('/events');
break;
case 'Studienunterlagen':
gotoRoute('/studydocuments');
break;
case 'Jobs':
gotoRoute('/jobs');
break;
case 'Profil':
gotoRoute('/profile');
break;
case 'Logout':
gotoRoute('/');
logout();
break;
case 'Login':
gotoRoute('/login');
break;
default:
console.log('Tab not known!');
}
}
onupdate() {
if (this.wasLoggedIn !== isLoggedIn()) {
this.selectedTabIndex = 0;
this.wasLoggedIn = isLoggedIn();
this.setTabs();
}
}
view(vnode) {
return m('div#amiv-container', [
m(Tabs, {
onChange: ({ index }) => {
this.selectedTabIndex = index;
this.selectTab(index);
},
tabs: this.tabs.map(tab => ({ label: tab })),
selectedTab: this.selectedTabIndex,
}),
m('main', vnode.children),
]);
}
}