|
@@ -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;
|
|
|
|
|
|
}
|
|
|
|