=> 48c21cc0dd3e89e2c9ec8815022f0909eeaa6bb6
[1mdiff --git a/model.py b/model.py[m [1mindex 10caab6..447af76 100644[m [1m--- a/model.py[m [1m+++ b/model.py[m [36m@@ -1074,12 +1074,12 @@[m [mclass Database:[m # Notify about the new published post (but not a comment).[m user = self.get_user(id=post.user)[m if not post.parent:[m [31m- self.notify_followers(user, post.id,[m [31m- Notification.POST_BY_FOLLOWED_USER,[m [31m- FOLLOW_USER, user.id)[m self.notify_followers(user, post.id,[m Notification.POST_IN_FOLLOWED_SUBSPACE,[m FOLLOW_SUBSPACE, post.subspace)[m [32m+[m[32m self.notify_followers(user, post.id,[m [32m+[m[32m Notification.POST_BY_FOLLOWED_USER,[m [32m+[m[32m FOLLOW_USER, user.id)[m else:[m cur.execute(Database.NUM_CMTS_QUERY, (post.parent, post.parent))[m self.notify_commenters(post)[m [36m@@ -1621,6 +1621,20 @@[m [mclass Database:[m target_id))[m self.commit()[m [m [32m+[m[32m if follow_type == FOLLOW_SUBSPACE:[m [32m+[m[32m pass[m [32m+[m[32m # cur.execute(f"""[m [32m+[m[32m # DELETE FROM notifs[m [32m+[m[32m # WHERE (type & ?) AND src=? AND post=? AND is_hidden=FALSE AND dst IN ([m [32m+[m[32m # SELECT user[m [32m+[m[32m # FROM follow[m [32m+[m[32m # WHERE type={FOLLOW_SUBSPACE} AND target=([m [32m+[m[32m # SELECT subspace FROM posts WHERE id={post_id}[m [32m+[m[32m # )[m [32m+[m[32m # )[m [32m+[m[32m # """, (Notification.COMMENT_ON_COMMENTED |[m [32m+[m[32m # Notification.COMMENT))[m [32m+[m def notify_new_poll(self, post: Post):[m cur = self.conn.cursor()[m cur.execute(f"""[m [36m@@ -1634,7 +1648,8 @@[m [mclass Database:[m [m def count_notifications(self, user):[m cur = self.conn.cursor()[m [31m- cur.execute("SELECT COUNT(id) FROM notifs WHERE is_hidden=FALSE AND dst=?", (user.id,))[m [32m+[m[32m cur.execute("SELECT COUNT(id) FROM notifs "[m [32m+[m[32m "WHERE is_hidden=FALSE AND dst=? AND (type & ?)!=0", (user.id, user.notif))[m for (count,) in cur:[m return count[m return 0[m [36m@@ -1699,7 +1714,8 @@[m [mclass Database:[m # Notify post author and followers of the closing.[m if add and was_changed and tag == Post.TAG_CLOSED and actor:[m if post.user != actor.id:[m [31m- cur.execute("INSERT IGNORE INTO notifs (type, dst, src, post) VALUES (?, ?, ?, ?)",[m [32m+[m[32m cur.execute("INSERT IGNORE INTO notifs (type, dst, src, post) "[m [32m+[m[32m "VALUES (?, ?, ?, ?)",[m (Notification.ISSUE_CLOSED, post.user, actor.id, post.id))[m self.notify_followers(actor, post.id, Notification.ISSUE_CLOSED, FOLLOW_POST, post.id)[m [m [36m@@ -1735,8 +1751,8 @@[m [mclass Database:[m [m def get_notifications(self, user, id=None, post_id=None, include_hidden=False, clear=False,[m sort_desc=False) -> list:[m [31m- cond = ['dst=?'][m [31m- values = [user.id][m [32m+[m[32m cond = ['dst=?', '(n.type & ?)!=0'][m [32m+[m[32m values = [user.id, user.notif][m if id != None:[m cond.append('n.id=?')[m values.append(id)[m [36m@@ -1764,13 +1780,16 @@[m [mclass Database:[m notifs.append(Notification(id, type, dst, src, post, subspace, is_sent, ts,[m src_name, post_title, post_issueid, post_summary,[m post_subname, post_subowner, subname))[m [31m- if clear and notifs:[m [31m- cur.execute(f"UPDATE notifs SET is_hidden=TRUE WHERE id IN ({','.join(map(lambda n: str(n.id), notifs))})", list())[m [31m- # Delete archived notifications after a week.[m [32m+[m[32m if clear:[m [32m+[m[32m if notifs:[m [32m+[m[32m cur.execute(f"UPDATE notifs SET is_hidden=TRUE WHERE id IN ({','.join(map(lambda n: str(n.id), notifs))})", list())[m [32m+[m[32m # Delete archived notifications after a week, and disabled notifications immediately.[m cur.execute("""[m DELETE FROM notifs[m [31m- WHERE is_hidden=TRUE AND TIMESTAMPDIFF(DAY, ts, CURRENT_TIMESTAMP())>=7[m [31m- """)[m [32m+[m[32m WHERE[m [32m+[m[32m (is_hidden=TRUE AND TIMESTAMPDIFF(DAY, ts, CURRENT_TIMESTAMP())>=7)[m [32m+[m[32m OR (dst=? AND (type & ?)=0)[m [32m+[m[32m """, (user.id, user.notif))[m self.commit()[m return notifs[m [m [36m@@ -1943,7 +1962,7 @@[m [mclass Search:[m for (ts, id, name, avatar, info, url) in cur:[m self.results.append(((exact_match(name), ts),[m User(id, name, info, url, avatar, None, None, None,[m [31m- None, None, None, None, ts, None, None)))[m [32m+[m[32m None, None, None, None, None, ts, None, None, None)))[m [m # Subspaces.[m cur.execute(f"""[m
text/gemini; charset=utf-8
This content has been proxied by September (3851b).