diff --git a/files/helpers/alerts.py b/files/helpers/alerts.py index 1cf6af392..d842c56bd 100644 --- a/files/helpers/alerts.py +++ b/files/helpers/alerts.py @@ -3,6 +3,8 @@ from flask import g from .sanitize import * from .const import * from .regex import * +from pusher_push_notifications import PushNotifications +from sys import stdout def create_comment(text_html, autojanny=False): if autojanny: author_id = AUTOJANNY_ID @@ -134,3 +136,32 @@ def notify_mod_action(by_id, msg): for admin in send_to: notif = Notification(comment_id=new_comment.id, user_id=admin.id) g.db.add(notif) + + +if PUSHER_ID != 'blahblahblah': + beams_client = PushNotifications(instance_id=PUSHER_ID, secret_key=PUSHER_KEY) + + def pusher_thread(interests, title, notifbody, url): + beams_client.publish_to_interests( + interests=[interests], + publish_body={ + 'web': { + 'notification': { + 'title': title, + 'body': notifbody, + 'deep_link': url, + 'icon': f'{SITE_FULL}/assets/images/{SITE_NAME}/icon.webp?v=1015', + } + }, + 'fcm': { + 'notification': { + 'title': title, + 'body': notifbody, + }, + 'data': { + 'url': url, + } + } + }, + ) + stdout.flush() \ No newline at end of file diff --git a/files/helpers/cron.py b/files/helpers/cron.py index b3bc8ccbe..2249fccc9 100644 --- a/files/helpers/cron.py +++ b/files/helpers/cron.py @@ -10,6 +10,8 @@ import files.routes.static as route_static from files.routes.subs import sub_inactive_purge_task from files.routes.admin import give_monthly_marseybux_task +from sys import stdout + @app.cli.command('cron', help='Run scheduled tasks.') @click.option('--every-5m', is_flag=True, help='Call every 5 minutes.') @click.option('--every-1h', is_flag=True, help='Call every 1 hour.') @@ -35,3 +37,4 @@ def cron(every_5m, every_1h, every_1d, every_1mo): g.db.commit() g.db.close() + stdout.flush() \ No newline at end of file diff --git a/files/routes/comments.py b/files/routes/comments.py index 9d38e0b0d..06c1884dd 100644 --- a/files/routes/comments.py +++ b/files/routes/comments.py @@ -11,7 +11,6 @@ from files.helpers.get import * from files.classes import * from files.routes.front import comment_idlist from files.routes.static import marsey_list -from pusher_push_notifications import PushNotifications from flask import * from files.__main__ import app, limiter from files.helpers.sanitize import filter_emojis_only @@ -21,44 +20,12 @@ from json import loads from collections import Counter from enchant import Dict import gevent -from sys import stdout import os d = Dict("en_US") -if PUSHER_ID != 'blahblahblah': - beams_client = PushNotifications(instance_id=PUSHER_ID, secret_key=PUSHER_KEY) - WORDLE_COLOR_MAPPINGS = {-1: "🟥", 0: "🟨", 1: "🟩"} -def pusher_thread(interests, c, username): - if len(c.body) > 500: notifbody = c.body[:500] + '...' - else: notifbody = c.body - - beams_client.publish_to_interests( - interests=[interests], - publish_body={ - 'web': { - 'notification': { - 'title': f'New reply by @{username}', - 'body': notifbody, - 'deep_link': f'{SITE_FULL}/comment/{c.id}?context=8&read=true#context', - 'icon': f'{SITE_FULL}/assets/images/{SITE_NAME}/icon.webp?v=1015', - } - }, - 'fcm': { - 'notification': { - 'title': f'New reply by @{username}', - 'body': notifbody, - }, - 'data': { - 'url': f'/comment/{c.id}?context=8&read=true#context', - } - } - }, - ) - stdout.flush() - @app.get("/comment/") @app.get("/post///") @app.get("/h//comment/") @@ -597,9 +564,17 @@ def api_comment(v): n = Notification(comment_id=c.id, user_id=x) g.db.add(n) - if parent.author.id != v.id and PUSHER_ID != 'blahblahblah' and not v.shadowbanned: - try: gevent.spawn(pusher_thread, f'{request.host}{parent.author.id}', c, c.author_name) - except: pass + if parent.author.id != v.id and PUSHER_ID != 'blahblahblah' and not v.shadowbanned: + interests = f'{request.host}{parent.author.id}' + + title = f'New reply by @{c.author_name}' + + if len(c.body) > 500: notifbody = c.body[:500] + '...' + else: notifbody = c.body + + url = f'{SITE_FULL}/comment/{c.id}?context=8&read=true#context' + + gevent.spawn(pusher_thread, interests, title, notifbody, url) diff --git a/files/routes/users.py b/files/routes/users.py index 4a51a26d9..52389e34e 100644 --- a/files/routes/users.py +++ b/files/routes/users.py @@ -11,39 +11,11 @@ from flask import * from files.__main__ import app, limiter, db_session import sqlalchemy from sqlalchemy import text -from pusher_push_notifications import PushNotifications from collections import Counter import gevent from sys import stdout import os -if PUSHER_ID != 'blahblahblah': - beams_client = PushNotifications(instance_id=PUSHER_ID, secret_key=PUSHER_KEY) - -def pusher_thread2(interests, notifbody, username): - beams_client.publish_to_interests( - interests=[interests], - publish_body={ - 'web': { - 'notification': { - 'title': f'New message from @{username}', - 'body': notifbody, - 'deep_link': f'{SITE_FULL}/notifications?messages=true', - 'icon': f'{SITE_FULL}/assets/images/{SITE_NAME}/icon.webp?v=1015', - } - }, - 'fcm': { - 'notification': { - 'title': f'New message from @{username}', - 'body': notifbody, - }, - 'data': { - 'url': '/notifications?messages=true', - } - } - }, - ) - stdout.flush() def leaderboard_thread(): global users9, users9_25, users13, users13_25 @@ -708,11 +680,16 @@ def message2(v, username): if PUSHER_ID != 'blahblahblah' and not v.shadowbanned: + interests = f'{request.host}{user.id}' + + title = f'New message from @{username}' + if len(message) > 500: notifbody = message[:500] + '...' else: notifbody = message - try: gevent.spawn(pusher_thread2, f'{request.host}{user.id}', notifbody, v.username) - except: pass + url = f'{SITE_FULL}/notifications?messages=true' + + gevent.spawn(pusher_thread, interests, title, notifbody, url) return {"message": "Message sent!"} @@ -774,31 +751,17 @@ def messagereply(v): g.db.delete(n) if PUSHER_ID != 'blahblahblah' and not v.shadowbanned: + interests = f'{request.host}{user_id}' + + title = f'New message from @{v.username}' + if len(body) > 500: notifbody = body[:500] + '...' else: notifbody = body - - beams_client.publish_to_interests( - interests=[f'{request.host}{user_id}'], - publish_body={ - 'web': { - 'notification': { - 'title': f'New message from @{v.username}', - 'body': notifbody, - 'deep_link': f'{SITE_FULL}/notifications?messages=true', - 'icon': f'{SITE_FULL}/assets/images/{SITE_NAME}/icon.webp"a=1015', - } - }, - 'fcm': { - 'notification': { - 'title': f'New message from @{v.username}', - 'body': notifbody, - }, - 'data': { - 'url': '/notifications?messages=true', - } - } - }, - ) + + url = f'{SITE_FULL}/notifications?messages=true' + + gevent.spawn(pusher_thread, interests, title, notifbody, url) + if c.top_comment.sentto == 2: