Move unread chat count to one request

This commit is contained in:
cuom1999 2022-08-31 23:18:38 -05:00
parent a7f7aab444
commit bddb00050a
5 changed files with 40 additions and 48 deletions

View file

@ -502,32 +502,3 @@ def toggle_ignore(request, **kwargs):
Ignore.toggle_ignore(request.profile, other_user)
next_url = request.GET.get("next", "/")
return HttpResponseRedirect(next_url)
@login_required
def get_unread_boxes(request):
if request.method != "GET":
return HttpResponseBadRequest()
ignored_users = Ignore.get_ignored_users(request.profile)
mess = (
Message.objects.filter(room=OuterRef("room"), time__gte=OuterRef("last_seen"))
.exclude(author=request.profile)
.exclude(author__in=ignored_users)
.order_by()
.values("room")
.annotate(unread_count=Count("pk"))
.values("unread_count")
)
unread_boxes = (
UserRoom.objects.filter(user=request.profile, room__isnull=False)
.annotate(
unread_count=Coalesce(Subquery(mess, output_field=IntegerField()), 0),
)
.filter(unread_count__gte=1)
.count()
)
return JsonResponse({"unread_boxes": unread_boxes})