Selaa lähdekoodia

fetch users friends

Carsten Porth 6 vuotta sitten
vanhempi
commit
bda23cc061
2 muutettua tiedostoa jossa 35 lisäystä ja 21 poistoa
  1. 7 2
      app/src/pages/home/home.ts
  2. 28 19
      app/src/providers/twitter-api/twitter-api.ts

+ 7 - 2
app/src/pages/home/home.ts

@@ -5,6 +5,7 @@ import {
   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";
@@ -24,14 +25,15 @@ export class HomePage {
     private twitter: TwitterApiProvider,
     private menuCtrl: MenuController,
     private gun: P2pDatabaseGunProvider,
-    private ipfs: P2pStorageIpfsProvider
+    private ipfs: P2pStorageIpfsProvider,
+    private storage: Storage
   ) {}
 
   ionViewDidLoad() {
     this.menuCtrl.enable(true, "sideNav");
   }
 
-  ionViewDidEnter() {
+  async ionViewDidEnter() {
     this.twitter
       .fetchHomeFeed()
       .then(
@@ -50,6 +52,9 @@ export class HomePage {
             .concat(res)
             .sort((a, b) => this.sortByDateAsc(a, b)))
       );
+    this.twitter
+      .fetchFriends(await this.storage.get("userId"))
+      .then(res => console.log(res));
   }
 
   doRefresh(refresher) {

+ 28 - 19
app/src/providers/twitter-api/twitter-api.ts

@@ -5,30 +5,20 @@ import Twit from "twit";
 
 @Injectable()
 export class TwitterApiProvider {
-  consumer_key: string = "UxZkbKotkr8Uc6seupnaZ1kDE";
-  consumer_secret: string =
-    "fEAas8iugR60FOEXsFG0iajq6oyfIIXRBVMlTgWxBd1stWIKHq";
-  access_token_key: string;
-  access_token_secret: string;
-  client;
+  client: Twit;
 
   constructor(public http: HttpClient, private storage: Storage) {
-    Promise.all([
-      this.storage.get("accessTokenKey"),
-      this.storage.get("accessTokenSecret")
-    ]).then(values => {
-      this.access_token_key = values[0];
-      this.access_token_secret = values[1];
-      this.initApi();
-    });
+    this.initApi();
   }
 
-  private initApi() {
+  private async initApi() {
+    const access_token_key = await this.storage.get("accessTokenKey");
+    const access_token_secret = await this.storage.get("accessTokenSecret");
     this.client = new Twit({
-      consumer_key: this.consumer_key,
-      consumer_secret: this.consumer_secret,
-      access_token: this.access_token_key,
-      access_token_secret: this.access_token_secret,
+      consumer_key: "UxZkbKotkr8Uc6seupnaZ1kDE",
+      consumer_secret: "fEAas8iugR60FOEXsFG0iajq6oyfIIXRBVMlTgWxBd1stWIKHq",
+      access_token: access_token_key,
+      access_token_secret: access_token_secret,
       timeout_ms: 60 * 1000 // optional HTTP request timeout to apply to all requests.
     });
   }
@@ -88,4 +78,23 @@ export class TwitterApiProvider {
   public async tweet(status) {
     return await this.client.post("statuses/update", { status: status });
   }
+
+  public async fetchFriends(userId) {
+    let friends = [];
+    let cursor = -1;
+
+    while (cursor != 0) {
+      const res = await this.client.get("friends/list", {
+        user_id: userId,
+        count: 200,
+        include_user_entities: false,
+        cursor: cursor
+      });
+
+      cursor = res.data["next_cursor"];
+      friends = friends.concat(res.data["users"]);
+    }
+
+    return friends;
+  }
 }