import { Component } from "@angular/core"; import { IonicPage, NavController, MenuController, InfiniteScroll, Refresher, LoadingController } from "ionic-angular"; import { Storage } from "@ionic/storage"; import { WriteTweetPage } from "../write-tweet/write-tweet"; import { MockProvider } from "../../providers/mock-provider/mock-provider"; @IonicPage() @Component({ selector: "page-home", templateUrl: "home.html" }) export class HomePage { menuController: MenuController; tweets; mock; constructor( public navCtrl: NavController, private menuCtrl: MenuController, private mockProv: MockProvider, private storage: Storage, private loadingCtrl: LoadingController ) { } ionViewDidLoad() { this.menuCtrl.enable(true, "sideNav"); } async ionViewDidEnter() { const loading = this.loadingCtrl.create(); loading.present(); await this.loadTimeline(); loading.dismiss(); } async loadTimeline(){ this.mockProv .loadHomeTimeline() .then(tweets => { this.tweets=[]; Object.assign(this.tweets, tweets); console.log("HOME tweets are: ", tweets); // this.tweets = tweets; }) .catch(err => console.error('error in timeline', err)); } doRefresh(refresher: Refresher) { console.log('mock refresher called',refresher); this.mockProv.loadHomeTimeline().then(tweets => { this.tweets = tweets; refresher.complete(); }); } loadMore(infiniteScroll: InfiniteScroll) { // this.mockProv // .loadHomeTimeline(this.oldestPublicTweet, this.oldestPrivateTweet) // .then(tweets => { // this.tweets = this.tweets.concat(tweets); // infiniteScroll.complete(); // }); infiniteScroll.complete(); } writeTweet() { console.log('Writing the tweet'); this.navCtrl.push(WriteTweetPage); } get publicTweets() { return this.tweets.filter(tweet => !tweet.private_tweet); } get privateTweets() { return this.tweets.filter(tweet => tweet.private_tweet); // return null; } get oldestPublicTweet() { // return null; if (this.publicTweets.length > 0) { return this.publicTweets.reduce((acc, cur) => acc.id < cur.id ? acc : cur ); } else { return undefined; } } get oldestPrivateTweet() { if (this.privateTweets.length > 0) { return this.privateTweets.reduce((acc, cur) => new Date(acc.created_at) < new Date(cur.created_at) ? acc : cur ); } else { return undefined; } } }