search-results-tweets-recent.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { Component } from "@angular/core";
  2. import {
  3. IonicPage,
  4. NavController,
  5. NavParams,
  6. Refresher,
  7. InfiniteScroll
  8. } from "ionic-angular";
  9. import { TwitterApiProvider } from "../../providers/twitter-api/twitter-api";
  10. @IonicPage()
  11. @Component({
  12. selector: "page-search-results-tweets-recent",
  13. templateUrl: "search-results-tweets-recent.html"
  14. })
  15. export class SearchResultsTweetsRecentPage {
  16. keyword: string;
  17. tweets = [];
  18. constructor(
  19. public navCtrl: NavController,
  20. public navParams: NavParams,
  21. private twitter: TwitterApiProvider
  22. ) {
  23. this.keyword = navParams.data;
  24. }
  25. async ionViewDidLoad() {
  26. if (this.keyword.length) {
  27. this.tweets = await this.twitter.searchRecentTweets(this.keyword);
  28. }
  29. }
  30. doRefresh(refresher: Refresher) {
  31. this.twitter.searchRecentTweets(this.keyword).then(tweets => {
  32. this.tweets = tweets;
  33. refresher.complete();
  34. });
  35. }
  36. loadMore(infiniteScroll: InfiniteScroll) {
  37. this.twitter
  38. .searchRecentTweets(this.keyword, this.oldestTweet)
  39. .then(tweets => {
  40. this.tweets["statuses"] = this.tweets["statuses"].concat(
  41. tweets["statuses"]
  42. );
  43. infiniteScroll.complete();
  44. });
  45. }
  46. get oldestTweet() {
  47. if (this.tweets.length > 0) {
  48. return this.tweets.reduce((acc, cur) => (acc.id < cur.id ? acc : cur))[
  49. "id_str"
  50. ];
  51. } else {
  52. return undefined;
  53. }
  54. }
  55. get enableRefresh() {
  56. return this.keyword.length > 0;
  57. }
  58. get enableInfiniteScroll() {
  59. return this.keyword.length > 0;
  60. }
  61. }