Browse Source

refactor home timeline loading

Carsten Porth 5 years ago
parent
commit
aaba0cb35a
2 changed files with 15 additions and 24 deletions
  1. 4 13
      app/src/pages/home/home.ts
  2. 11 11
      app/src/providers/feed/feed.ts

+ 4 - 13
app/src/pages/home/home.ts

@@ -7,7 +7,6 @@ import {
   Refresher,
   LoadingController
 } from "ionic-angular";
-import { Storage } from "@ionic/storage";
 import { WriteTweetPage } from "../write-tweet/write-tweet";
 import { FeedProvider } from "../../providers/feed/feed";
 
@@ -19,17 +18,13 @@ import { FeedProvider } from "../../providers/feed/feed";
 export class HomePage {
   menuController: MenuController;
   tweets;
-  userId: string;
 
   constructor(
     public navCtrl: NavController,
     private menuCtrl: MenuController,
-    private storage: Storage,
     private feed: FeedProvider,
     private loadingCtrl: LoadingController
-  ) {
-    this.storage.get("userId").then(userId => (this.userId = userId));
-  }
+  ) {}
 
   ionViewDidLoad() {
     this.menuCtrl.enable(true, "sideNav");
@@ -40,14 +35,14 @@ export class HomePage {
     loading.present();
 
     this.feed
-      .loadHomeTimeline(this.userId)
+      .loadHomeTimeline()
       .then(tweets => (this.tweets = tweets))
       .catch(err => console.error(err))
       .then(() => loading.dismiss());
   }
 
   doRefresh(refresher: Refresher) {
-    this.feed.loadHomeTimeline(this.userId).then(tweets => {
+    this.feed.loadHomeTimeline().then(tweets => {
       this.tweets = tweets;
       refresher.complete();
     });
@@ -55,11 +50,7 @@ export class HomePage {
 
   loadMore(infiniteScroll: InfiniteScroll) {
     this.feed
-      .loadHomeTimeline(
-        this.userId,
-        this.oldestPublicTweet,
-        this.oldestPrivateTweet
-      )
+      .loadHomeTimeline(this.oldestPublicTweet, this.oldestPrivateTweet)
       .then(tweets => {
         this.tweets = this.tweets.concat(tweets);
         infiniteScroll.complete();

+ 11 - 11
app/src/providers/feed/feed.ts

@@ -3,17 +3,21 @@ import { TwitterApiProvider } from "../twitter-api/twitter-api";
 import { P2pDatabaseGunProvider } from "../p2p-database-gun/p2p-database-gun";
 import { P2pStorageIpfsProvider } from "../p2p-storage-ipfs/p2p-storage-ipfs";
 import { CryptoProvider } from "../crypto/crypto";
-
+import { Storage } from "@ionic/storage";
 @Injectable()
 export class FeedProvider {
   friends;
+  userId: string;
 
   constructor(
     private twitter: TwitterApiProvider,
     private gun: P2pDatabaseGunProvider,
     private ipfs: P2pStorageIpfsProvider,
-    private cryptoUtils: CryptoProvider
-  ) {}
+    private cryptoUtils: CryptoProvider,
+    private storage: Storage
+  ) {
+    this.storage.get("userId").then(userId => (this.userId = userId));
+  }
 
   public async loadUserTimeline(
     userId,
@@ -53,11 +57,7 @@ export class FeedProvider {
     }
   }
 
-  public async loadHomeTimeline(
-    userId,
-    oldestPublicTweet?,
-    oldestPrivateTweet?
-  ) {
+  public async loadHomeTimeline(oldestPublicTweet?, oldestPrivateTweet?) {
     // Fetch tweets from Twitter
     const maxId = oldestPublicTweet ? oldestPublicTweet["id_str"] : undefined;
     let tweets = await this.twitter.fetchHomeFeed(maxId);
@@ -70,7 +70,7 @@ export class FeedProvider {
     const intervalEnd: Date = this.getOldestTweetTimestamp(tweets);
 
     // Fetch user's friends
-    const friends = await this.getCachedFriends(userId);
+    const friends = await this.getCachedFriends(this.userId);
 
     let privateTweetHashs = [];
     friends.forEach(async friend => {
@@ -86,7 +86,7 @@ export class FeedProvider {
     // Add users private tweets
     privateTweetHashs = privateTweetHashs.concat(
       await this.gun.fetchPrivateTweetHashsForUserInInterval(
-        userId,
+        this.userId,
         intervalStart,
         intervalEnd
       )
@@ -95,7 +95,7 @@ export class FeedProvider {
     if (privateTweetHashs.length) {
       const privateTweets = await this.fetchPrivateTweets(
         privateTweetHashs,
-        userId
+        this.userId
       );
 
       // Combine and sort tweets