loadchats-fix+sse
This commit is contained in:
parent
6782177ce6
commit
c89d226dee
4
main.py
4
main.py
|
@ -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(
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
9
services/inbox/sse.py
Normal 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)
|
Loading…
Reference in New Issue
Block a user