import { Component, ViewChild } from '@angular/core'; import { Nav, Platform } from 'ionic-angular'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; import { Storage } from '@ionic/storage'; import { Device } from '@ionic-native/device'; import { LoginPage } from '../pages/login/login'; import { StreamPage } from '../pages/stream/stream'; import * as pnut from 'pnut-butter'; @Component({ templateUrl: 'app.html' }) export class MyApp { @ViewChild(Nav) nav: Nav; rootPage: any = StreamPage; pages: Array<{title: string, component: any, params: Object}>; constructor(public platform: Platform, public statusBar: StatusBar, public splashScreen: SplashScreen, private storage: Storage, private device: Device) { this.initializeApp(); // used for an example of ngFor and navigation this.pages = [ { title: 'Timeline', component: StreamPage, params: {stream: 'personal'} }, { title: 'Global', component: StreamPage, params: {stream: 'global'} }, { title: 'Mentions', component: StreamPage, params: {stream: 'mentions'} }, { title: 'Bookmarks', component: StreamPage, params: {stream: 'bookmarks'} }, { title: 'Logout', component: {}, params: {}}, ]; } initializeApp() { console.log('--- initializeApp ---'); this.platform.ready().then(() => { // Okay, so the platform is ready and our plugins are available. // Here you can do any higher level native things you might need. this.storage.get('token').then((val) => { if (val.length > 1) { pnut.token = val; this.nav.setRoot(StreamPage, {stream: 'personal'}); } }).catch(err => { console.log('ERROR: ' + err); this.nav.setRoot(LoginPage); }); this.statusBar.styleDefault(); this.splashScreen.hide(); console.log('---'); console.log(this.device.platform); console.log('---'); }); } openPage(page) { // Reset the content nav to have just this page // we wouldn't want the back button to show in this scenario if (page.title === 'Logout') { this.storage.remove('token'); this.nav.setRoot(LoginPage); } else { this.nav.setRoot(page.component, page.params); } } }