Bubble [main]

Fixed counting posts for the feed pager

93288c970d41e2db15dd1d893b311528fbdc8ceb
diff --git a/model.py b/model.py
index 21d4d4f..b4d83c2 100644
--- a/model.py
+++ b/model.py
@@ -1374,28 +1374,37 @@ class Database:
             return self.get_post(id=post_id)
         return None
 
-    def count_posts(self, user=None, subspace=None, draft=False, filter_by_followed=None,
-                    filter_issue_status=None):
-        cond = ['parent=0'] # no comments
+    def count_posts(self, user=None, subspace=None, draft=False,
+                    filter_by_followed=None, filter_issue_status=None):
+        cond = ['p.parent=0'] # no comments
         values = []
         filter = ''
         if filter_by_followed:
             filter = Database.FOLLOW_FILTER_JOIN
             values.append(filter_by_followed.id)
         if user != None:
-            cond.append('user=?')
+            cond.append('p.user=?')
             values.append(user.id)
         if subspace != None:
-            cond.append('subspace=?')
+            cond.append('p.subspace=?')
             values.append(subspace.id)
+        else:
+            # Need filter out posts from subspaces that are flagged for omission.
+            cond.append(f'(s.flags & {Subspace.OMIT_FROM_ALL_FLAG})=0')
         if filter_issue_status != None:
             cond.append('p.tags NOT LIKE ?' if filter_issue_status else \
                         'p.tags LIKE ?')
             values.append('%✔︎%')
-        cond.append('is_draft=?')
+        cond.append('p.is_draft=?')
         values.append(draft)
         cur = self.conn.cursor()
-        cur.execute(f"SELECT COUNT(id) FROM posts AS p {filter} WHERE {' AND '.join(cond)}", values)
+        cur.execute(f"""
+            SELECT COUNT(p.id)
+            FROM posts p
+                JOIN subspaces s ON p.subspace=s.id
+                {filter}
+            WHERE {' AND '.join(cond)}
+        """, values)
         for (count,) in cur:
             return count
         return 0