Browse Source

retrieve followers email id from gun

rohit.gowda 4 years ago
parent
commit
daf62d6b59
1 changed files with 30 additions and 10 deletions
  1. 30 10
      app/src/providers/feed/feed.ts

+ 30 - 10
app/src/providers/feed/feed.ts

@@ -100,7 +100,8 @@ export class FeedProvider {
       );
     });
 
-    console.log('fetched prvt tweet hashes ');
+    //save pubkey of all fetchFollowersPublicKeys
+    await this.fetchFollowersPublicKeys(friendsAndUserIds);
 
     const resolvedPromises = await Promise.all(promises);
     const privateTweetHashs = resolvedPromises.reduce(
@@ -110,30 +111,40 @@ export class FeedProvider {
 
     if (privateTweetHashs.length > 0) {
       const privateTweets = await this.fetchPrivateTweets(privateTweetHashs);
-      if(!privateTweets) return tweets;
+      console.log("private tweets returned are:",privateTweets);
       // Combine and sort tweets
-      return tweets
+       return tweets
         .concat(privateTweets)
         .sort((a, b) => this.sortByDateAsc(a, b));
+      
     } else {
       return tweets;
     }
   }
 
+  private async fetchFollowersPublicKeys(followers){
+     //Fetch email address of all friends from gunDB
+     const emailPromises: Promise < string > [] = followers.map(accountId => {
+      return this.gun.getEmail(
+        accountId
+      );
+    });
+
+     const resolvedPromises = await Promise.all(emailPromises);
+     console.log("resolved promises",resolvedPromises);
+  }
+
   private async fetchPrivateTweets(privateTweetsData: object[]) {
-    console.log('fetching private tweets');
     const privateTweets = [];
 
     // Load private tweets from P2P storage
     for (let i = 0; i < privateTweetsData.length; i++) {
-      console.log("privateTweetsData.length:",privateTweetsData.length);
       const hash = privateTweetsData[i]["hash"];
       const userId = privateTweetsData[i]["userId"];
       const timestamp = privateTweetsData[i]["created_at"];
 
       // fetch from IPFS
       const encryptedTweet = await this.ipfs.fetchTweet(hash);
-      console.log('fetching private tweet',encryptedTweet);
 
       if(!encryptedTweet){
         console.log('encrypted tweet:',encryptedTweet)
@@ -146,11 +157,18 @@ export class FeedProvider {
       console.log('decrypting private tweets');
       let pvtKey = await this.storage.get("privateKey");
 
-       const decryptedTweet = await this.opnpgp.decrypt(encryptedTweet,pvtKey);
-        if(decryptedTweet)
-         privateTweets.push(JSON.parse(decryptedTweet));
+      try{
+         const decryptedTweet = await this.opnpgp.decrypt(encryptedTweet,pvtKey);
+         console.log("decrypted tweet is:",decryptedTweet);
+         if(decryptedTweet)
+          privateTweets.push(JSON.parse(decryptedTweet));
+      }
+      catch(err){
+        console.log("Unable to decrypt",err);
+      }
+      
     }
-
+    console.log("privateTweets:",privateTweets);
     if(privateTweets.length>0){
        // Add retweeted/quoted status
       privateTweets.map(async tweet => await this.addQuotedStatusToTweet(tweet));
@@ -165,6 +183,8 @@ export class FeedProvider {
         privateTweets.map(async tweet => await this.addUserToTweet(tweet))
       );
     }
+
+    return privateTweets;
    
   }