home.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { Component } from "@angular/core";
  2. import {
  3. IonicPage,
  4. NavController,
  5. MenuController,
  6. InfiniteScroll
  7. } from "ionic-angular";
  8. import { TwitterApiProvider } from "../../providers/twitter-api/twitter-api";
  9. import { WriteTweetPage } from "../write-tweet/write-tweet";
  10. import { P2pDatabaseGunProvider } from "../../providers/p2p-database-gun/p2p-database-gun";
  11. import { P2pStorageIpfsProvider } from "../../providers/p2p-storage-ipfs/p2p-storage-ipfs";
  12. @IonicPage()
  13. @Component({
  14. selector: "page-home",
  15. templateUrl: "home.html"
  16. })
  17. export class HomePage {
  18. menuController: MenuController;
  19. data: any[] = [];
  20. constructor(
  21. public navCtrl: NavController,
  22. private twitter: TwitterApiProvider,
  23. private menuCtrl: MenuController,
  24. private gun: P2pDatabaseGunProvider,
  25. private ipfs: P2pStorageIpfsProvider
  26. ) {}
  27. ionViewDidLoad() {
  28. this.menuCtrl.enable(true, "sideNav");
  29. }
  30. ionViewDidEnter() {
  31. this.twitter
  32. .fetchHomeFeed()
  33. .then(res => (this.data = this.data.concat(res.data)));
  34. this.gun
  35. .getLastTweetFromUser("username")
  36. .then(hash => this.ipfs.fetchTweet(hash))
  37. .then(tweet => this.addUserObject(tweet))
  38. .then(res => {
  39. this.data = this.data.concat(res);
  40. console.log(this.data, res);
  41. });
  42. }
  43. doRefresh(refresher) {
  44. this.twitter.fetchHomeFeed().then(res => {
  45. this.data = res.data;
  46. console.log(res);
  47. refresher.complete();
  48. });
  49. }
  50. loadMore(infiniteScroll: InfiniteScroll) {
  51. this.twitter
  52. .fetchHomeFeedSince(this.data[this.data.length - 1].id)
  53. .then(res => {
  54. this.data = this.data.concat(res.data);
  55. infiniteScroll.complete();
  56. });
  57. }
  58. writeTweet() {
  59. this.navCtrl.push(WriteTweetPage);
  60. }
  61. private async addUserObject(tweet) {
  62. tweet.user = await this.twitter.fetchUser(tweet.user_id);
  63. return tweet;
  64. }
  65. }