import { Component } from "@angular/core"; import { IonicPage, NavController, MenuController, InfiniteScroll } from "ionic-angular"; import { TwitterApiProvider } from "../../providers/twitter-api/twitter-api"; import { WriteTweetPage } from "../write-tweet/write-tweet"; import { P2pDatabaseGunProvider } from "../../providers/p2p-database-gun/p2p-database-gun"; import { P2pStorageIpfsProvider } from "../../providers/p2p-storage-ipfs/p2p-storage-ipfs"; @IonicPage() @Component({ selector: "page-home", templateUrl: "home.html" }) export class HomePage { menuController: MenuController; data: any[] = []; constructor( public navCtrl: NavController, private twitter: TwitterApiProvider, private menuCtrl: MenuController, private gun: P2pDatabaseGunProvider, private ipfs: P2pStorageIpfsProvider ) {} ionViewDidLoad() { this.menuCtrl.enable(true, "sideNav"); } ionViewDidEnter() { this.twitter .fetchHomeFeed() .then(res => (this.data = this.data.concat(res.data))); this.gun .getLastTweetFromUser("username") .then(hash => this.ipfs.fetchTweet(hash)) .then(tweet => this.addUserObject(tweet)) .then(res => { this.data = this.data.concat(res); console.log(this.data, res); }); } doRefresh(refresher) { this.twitter.fetchHomeFeed().then(res => { this.data = res.data; console.log(res); refresher.complete(); }); } loadMore(infiniteScroll: InfiniteScroll) { this.twitter .fetchHomeFeedSince(this.data[this.data.length - 1].id) .then(res => { this.data = this.data.concat(res.data); infiniteScroll.complete(); }); } writeTweet() { this.navCtrl.push(WriteTweetPage); } private async addUserObject(tweet) { tweet.user = await this.twitter.fetchUser(tweet.user_id); return tweet; } }