]> Untitled Git - lemmy-ui.git/commitdiff
Only push notifs if on first page, and right local context. Fixes #131
authorDessalines <tyhou13@gmx.com>
Sun, 24 Jan 2021 05:56:00 +0000 (00:56 -0500)
committerDessalines <tyhou13@gmx.com>
Sun, 24 Jan 2021 05:56:00 +0000 (00:56 -0500)
src/shared/components/main.tsx

index 4f0587b6ae2ebd3e76232510a149e73ec9cf4ac0..dbe013008188a32bac8d4bc9a195de752a2ebc22 100644 (file)
@@ -716,32 +716,38 @@ export class Main extends Component<any, MainState> {
     } else if (op == UserOperation.CreatePost) {
       let data = wsJsonToRes<PostResponse>(msg).data;
 
-      // If you're on subscribed, only push it if you're subscribed.
-      if (this.state.listingType == ListingType.Subscribed) {
-        if (
-          this.state.subscribedCommunities
-            .map(c => c.community.id)
-            .includes(data.post_view.community.id)
-        ) {
-          this.state.posts.unshift(data.post_view);
-          notifyPost(data.post_view, this.context.router);
-        }
-      } else {
-        // NSFW posts
-        let nsfw = data.post_view.post.nsfw || data.post_view.community.nsfw;
-
-        // Don't push the post if its nsfw, and don't have that setting on
-        if (
-          !nsfw ||
-          (nsfw &&
-            UserService.Instance.user &&
-            UserService.Instance.user.show_nsfw)
-        ) {
+      // NSFW check
+      let nsfw = data.post_view.post.nsfw || data.post_view.community.nsfw;
+      let nsfwCheck =
+        !nsfw ||
+        (nsfw &&
+          UserService.Instance.user &&
+          UserService.Instance.user.show_nsfw);
+
+      // Only push these if you're on the first page, and you pass the nsfw check
+      if (this.state.page == 1 && nsfwCheck) {
+        // If you're on subscribed, only push it if you're subscribed.
+        if (this.state.listingType == ListingType.Subscribed) {
+          if (
+            this.state.subscribedCommunities
+              .map(c => c.community.id)
+              .includes(data.post_view.community.id)
+          ) {
+            this.state.posts.unshift(data.post_view);
+            notifyPost(data.post_view, this.context.router);
+          }
+        } else if (this.state.listingType == ListingType.Local) {
+          // If you're on the local view, only push it if its local
+          if (data.post_view.post.local) {
+            this.state.posts.unshift(data.post_view);
+            notifyPost(data.post_view, this.context.router);
+          }
+        } else {
           this.state.posts.unshift(data.post_view);
           notifyPost(data.post_view, this.context.router);
         }
+        this.setState(this.state);
       }
-      this.setState(this.state);
     } else if (
       op == UserOperation.EditPost ||
       op == UserOperation.DeletePost ||