123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- import { Component } from "@angular/core";
- import {
- IonicPage,
- NavController,
- MenuController,
- InfiniteScroll
- } from "ionic-angular";
- import { Storage } from "@ionic/storage";
- 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,
- private storage: Storage
- ) {}
- ionViewDidLoad() {
- this.menuCtrl.enable(true, "sideNav");
- }
- async ionViewDidEnter() {
- this.twitter
- .fetchHomeFeed()
- .then(
- res =>
- (this.data = this.data
- .concat(res.data)
- .sort((a, b) => this.sortByDateAsc(a, b)))
- );
- // this.gun
- // .getLastTweetFromUser("username")
- // .then(hash => this.ipfs.fetchTweet(hash))
- // .then(tweet => this.addUserObject(tweet))
- // .then(
- // res =>
- // (this.data = this.data
- // .concat(res)
- // .sort((a, b) => this.sortByDateAsc(a, b)))
- // );
- this.twitter
- .fetchFriends(await this.storage.get("userId"))
- .then(res => console.log(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)
- .sort((a, b) => this.sortByDateAsc(a, b));
- infiniteScroll.complete();
- });
- }
- writeTweet() {
- this.navCtrl.push(WriteTweetPage);
- }
- private async addUserObject(tweet) {
- tweet.user = await this.twitter.fetchUser(tweet.user_id);
- return tweet;
- }
- private sortByDateAsc(a, b) {
- const dateA = new Date(a.created_at);
- const dateB = new Date(b.created_at);
- if (dateA > dateB) {
- return -1;
- } else if (dateA < dateB) {
- return 1;
- } else {
- return 0;
- }
- }
- }
|