Add global presence heartbeat and online tracking
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
from flask import Blueprint, jsonify
|
||||
from flask_login import login_required, current_user
|
||||
from app.db import get_db
|
||||
|
||||
presence_bp = Blueprint("presence", __name__)
|
||||
|
||||
def _mark_current_user_online() -> None:
|
||||
db = get_db()
|
||||
db.execute(
|
||||
"UPDATE users SET last_seen_at = CURRENT_TIMESTAMP WHERE id = ?",
|
||||
(current_user.id,),
|
||||
)
|
||||
db.commit()
|
||||
|
||||
|
||||
@presence_bp.route("/api/presence/ping", methods=["POST"])
|
||||
@login_required
|
||||
def presence_ping():
|
||||
if not current_user.is_authenticated: # should not happen due to @login_required, but just in case
|
||||
return ("", 204)
|
||||
|
||||
_mark_current_user_online()
|
||||
return jsonify({"status": "ok"})
|
||||
|
||||
Reference in New Issue
Block a user