message/tmessage/views/api.py

57 lines
1.5 KiB
Python
Raw Normal View History

2024-12-23 22:38:49 -05:00
import json
from django.core.handlers.wsgi import WSGIRequest
from django.http import HttpResponse
from .helper import get_user_object, get_username
def get_message_list(request: WSGIRequest) -> HttpResponse:
username = get_username(request)
if username is None:
return HttpResponse(
json.dumps({
"success": False
}),
content_type="application/json",
status=401
)
user = get_user_object(username, i_promise_this_user_exists=True)
queryFilter = {}
if "offset" in request.GET and (request.GET.get("offset") or "").isdigit():
queryFilter["message_id__lt"] = int(request.GET.get("offset") or "")
if "unread" in request.GET:
queryFilter["response"] = None
if queryFilter:
msgObjects = user.received.filter(**queryFilter)
else:
msgObjects = user.received.all() # type: ignore
output = []
messages = msgObjects.order_by("-message_id")[:50].values_list(
"message_id", "content", "response", "anonymous", "u_from"
)
for message in messages:
output.append({
"id": message[0],
"content": message[1],
"response": message[2],
"from": message[4].username if not message[3] and message[4] else None
})
return HttpResponse(
json.dumps({
"success": True,
"canRespond": True,
"messages": output,
"more": msgObjects.count() > 50
}),
content_type="application/json"
)