diff --git a/files/helpers/alerts.py b/files/helpers/alerts.py
index 9bb3d21c3..eb88d87c0 100644
--- a/files/helpers/alerts.py
+++ b/files/helpers/alerts.py
@@ -54,7 +54,7 @@ def send_notification(uid, text):
if uid in bots: return
cid = notif_comment(text)
- add_notif(cid, uid)
+ add_notif(cid, uid, text)
def notif_comment(text):
@@ -92,19 +92,20 @@ def notif_comment(text):
def notif_comment2(p):
+ text = f"@{p.author.username} has mentioned you: [{p.title}](/post/{p.id})"
+
search_html = f'% has mentioned you: %'
existing = g.db.query(Comment.id).filter(Comment.author_id == AUTOJANNY_ID, Comment.parent_submission == None, Comment.body_html.like(search_html)).first()
- if existing: return existing[0]
+ if existing: return existing[0], text
else:
- text = f"@{p.author.username} has mentioned you: [{p.title}](/post/{p.id})"
if p.sub: text += f" in /h/{p.sub}"
text_html = sanitize(text, blackjack="notification")
- return create_comment(text_html)
+ return create_comment(text_html), text
-def add_notif(cid, uid):
+def add_notif(cid, uid, text):
if uid in bots: return
existing = g.db.query(Notification.user_id).filter_by(comment_id=cid, user_id=uid).one_or_none()
@@ -112,6 +113,9 @@ def add_notif(cid, uid):
notif = Notification(comment_id=cid, user_id=uid)
g.db.add(notif)
+ g.db.flush()
+ push_notif({uid}, 'New notification', text, f'{SITE_FULL}/comment/{cid}?read=true#context')
+
def NOTIFY_USERS(text, v):
# Restrict young accounts from generating notifications
diff --git a/files/routes/admin.py b/files/routes/admin.py
index 4d6767ee6..337c97084 100644
--- a/files/routes/admin.py
+++ b/files/routes/admin.py
@@ -170,20 +170,21 @@ def distribute(v:User, option_id):
votes = option.votes
coinsperperson = int(pool / len(votes))
- cid = notif_comment(f"You won {coinsperperson} coins betting on [{post.title}]({post.shortlink}) :marseyparty:")
+ text = f"You won {coinsperperson} coins betting on [{post.title}]({post.shortlink}) :marseyparty:"
+ cid = notif_comment(text)
for vote in votes:
u = vote.user
u.pay_account('coins', coinsperperson)
- add_notif(cid, u.id)
+ add_notif(cid, u.id, text)
-
- cid = notif_comment(f"You lost the {POLL_BET_COINS} coins you bet on [{post.title}]({post.shortlink}) :marseylaugh:")
+ text = f"You lost the {POLL_BET_COINS} coins you bet on [{post.title}]({post.shortlink}) :marseylaugh:"
+ cid = notif_comment(text)
losing_voters = []
for o in post.options:
if o.exclusive == 2:
losing_voters.extend([x.user_id for x in o.votes])
for uid in losing_voters:
- add_notif(cid, uid)
+ add_notif(cid, uid, text)
ma = ModAction(
kind="distribute",
diff --git a/files/routes/posts.py b/files/routes/posts.py
index 54a861009..2d78845b7 100644
--- a/files/routes/posts.py
+++ b/files/routes/posts.py
@@ -49,9 +49,9 @@ def publish(pid, v):
notify_users = NOTIFY_USERS(f'{post.title} {post.body}', v)
if notify_users:
- cid = notif_comment2(post)
+ cid, text = notif_comment2(post)
for x in notify_users:
- add_notif(cid, x)
+ add_notif(cid, x, text)
cache.delete_memoized(frontlist)
@@ -326,9 +326,9 @@ def edit_post(pid, v):
if not p.private and not p.ghost:
notify_users = NOTIFY_USERS(f'{p.title} {p.body}', v)
if notify_users:
- cid = notif_comment2(p)
+ cid, text = notif_comment2(p)
for x in notify_users:
- add_notif(cid, x)
+ add_notif(cid, x, text)
if v.id == p.author_id:
if int(time.time()) - p.created_utc > 60 * 3: p.edited_utc = int(time.time())
@@ -739,9 +739,9 @@ def submit_post(v:User, sub=None):
notify_users = NOTIFY_USERS(f'{title} {body}', v)
if notify_users:
- cid = notif_comment2(post)
+ cid, text = notif_comment2(post)
for x in notify_users:
- add_notif(cid, x)
+ add_notif(cid, x, text)
if v.agendaposter and not v.marseyawarded and AGENDAPOSTER_PHRASE not in f'{post.body}{post.title}'.lower() and sub != 'chudrama':
post.is_banned = True
diff --git a/files/routes/settings.py b/files/routes/settings.py
index 67cb1bd57..da2dadb70 100644
--- a/files/routes/settings.py
+++ b/files/routes/settings.py
@@ -252,9 +252,10 @@ def settings_personal_post(v):
notify_users = NOTIFY_USERS(friends, v)
if notify_users:
- cid = notif_comment(f"@{v.username} has added you to their friends list!")
+ text = f"@{v.username} has added you to their friends list!"
+ cid = notif_comment(text)
for x in notify_users:
- add_notif(cid, x)
+ add_notif(cid, x, text)
v.friends = friends[:1000]
v.friends_html=friends_html
@@ -276,9 +277,10 @@ def settings_personal_post(v):
notify_users = NOTIFY_USERS(enemies, v)
if notify_users:
- cid = notif_comment(f"@{v.username} has added you to their enemies list!")
+ text = f"@{v.username} has added you to their enemies list!"
+ cid = notif_comment(text)
for x in notify_users:
- add_notif(cid, x)
+ add_notif(cid, x, text)
v.enemies = enemies[:1000]
v.enemies_html=enemies_html