search-results-users.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { Component } from "@angular/core";
  2. import {
  3. IonicPage,
  4. NavController,
  5. NavParams,
  6. Refresher,
  7. InfiniteScroll,
  8. App,
  9. Events
  10. } from "ionic-angular";
  11. import { TwitterApiProvider } from "../../providers/twitter-api/twitter-api";
  12. import { ProfilePage } from "../profile/profile";
  13. @IonicPage()
  14. @Component({
  15. selector: "page-search-results-users",
  16. templateUrl: "search-results-users.html"
  17. })
  18. export class SearchResultsUsersPage {
  19. query: string;
  20. nextPage: number = 2;
  21. users: any[] = [];
  22. constructor(
  23. public navCtrl: NavController,
  24. public navParams: NavParams,
  25. private appCtrl: App,
  26. private twitter: TwitterApiProvider,
  27. private events: Events
  28. ) {
  29. this.query = this.navParams.data;
  30. this.events.subscribe("query:changed", query => {
  31. if (query.length) {
  32. this.twitter.searchUsers(query).then(res => (this.users = res));
  33. this.query = query;
  34. }
  35. });
  36. }
  37. async ionViewDidLoad() {
  38. if (this.query.length) {
  39. this.users = await this.twitter.searchUsers(this.query);
  40. }
  41. }
  42. showProfile(userId) {
  43. this.appCtrl.getRootNav().push(ProfilePage, { userId });
  44. this.nextPage = 2;
  45. }
  46. doRefresh(refresher: Refresher) {
  47. this.twitter.searchUsers(this.query).then(users => {
  48. this.users = users;
  49. this.nextPage = 2;
  50. refresher.complete();
  51. });
  52. }
  53. loadMore(infiniteScroll: InfiniteScroll) {
  54. this.twitter.searchUsers(this.query, this.nextPage).then(users => {
  55. this.users = this.users.concat(users);
  56. infiniteScroll.complete();
  57. this.nextPage = this.nextPage + 1;
  58. });
  59. }
  60. }