loadchats-fix+sse

This commit is contained in:
tonyrewin 2022-12-06 11:44:29 +03:00
parent 6782177ce6
commit c89d226dee
4 changed files with 26 additions and 6 deletions

View File

@ -21,7 +21,7 @@ from services.zine.gittask import GitTask
from settings import DEV_SERVER_STATUS_FILE_NAME, SENTRY_DSN
from ariadne.asgi.handlers import GraphQLTransportWSHandler
from services.inbox.presence import on_connect, on_disconnect
# from services.inbox.sse import sse_messages
from services.inbox.sse import sse_messages
import_module("resolvers")
@ -68,7 +68,7 @@ routes = [
Route("/oauth/{provider}", endpoint=oauth_login),
Route("/oauth-authorize", endpoint=oauth_authorize),
Route("/confirm/{token}", endpoint=confirm_email_handler),
# Route("/chat/{chat_id}", endpoint=sse_messages)
Route("/messages", endpoint=sse_messages)
]
app = Starlette(

View File

@ -57,14 +57,25 @@ async def create_chat(_, info, title="", members=[]):
# reuse chat craeted before if exists
if len(members) == 2 and title == "":
chats1 = await redis.execute("SMEMBERS", f"chats_by_user/{members[0]}")
chats2 = await redis.execute("SMEMBERS", f"chats_by_user/{members[1]}")
chat = None
for c in chats1.intersection(chats2):
print(members)
chatset1 = await redis.execute("SMEMBERS", f"chats_by_user/{members[0]}")
if not chatset1:
chatset1 = set([])
print(chatset1)
chatset2 = await redis.execute("SMEMBERS", f"chats_by_user/{members[1]}")
if not chatset2:
chatset2 = set([])
print(chatset2)
chatset = chatset1.intersection(chatset2)
print(chatset)
for c in chatset:
chat = await redis.execute("GET", f"chats/{c.decode('utf-8')}")
if chat:
chat = json.loads(chat)
if chat['title'] == "":
print('[inbox] craeteChat found old chat')
print(chat)
break
if chat:
return {

View File

@ -41,7 +41,7 @@ def add_author_stat_columns(q):
# func.sum(user_rating_aliased.value).label('rating_stat')
# )
q = q.add_columns(literal(0).label('commented_stat'))
# q = q.add_columns(literal(0).label('commented_stat'))
q = q.outerjoin(Reaction, and_(Reaction.createdBy == User.id, Reaction.body.is_not(None))).add_columns(
func.count(distinct(Reaction.id)).label('commented_stat')
)

9
services/inbox/sse.py Normal file
View File

@ -0,0 +1,9 @@
from sse_starlette.sse import EventSourceResponse
from resolvers.inbox.messages import message_generator
async def sse_messages(request):
print(f'[SSE] {request}')
# https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md
return EventSourceResponse(message_generator)