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 settings import DEV_SERVER_STATUS_FILE_NAME, SENTRY_DSN
|
||||||
from ariadne.asgi.handlers import GraphQLTransportWSHandler
|
from ariadne.asgi.handlers import GraphQLTransportWSHandler
|
||||||
from services.inbox.presence import on_connect, on_disconnect
|
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")
|
import_module("resolvers")
|
||||||
|
@ -68,7 +68,7 @@ routes = [
|
||||||
Route("/oauth/{provider}", endpoint=oauth_login),
|
Route("/oauth/{provider}", endpoint=oauth_login),
|
||||||
Route("/oauth-authorize", endpoint=oauth_authorize),
|
Route("/oauth-authorize", endpoint=oauth_authorize),
|
||||||
Route("/confirm/{token}", endpoint=confirm_email_handler),
|
Route("/confirm/{token}", endpoint=confirm_email_handler),
|
||||||
# Route("/chat/{chat_id}", endpoint=sse_messages)
|
Route("/messages", endpoint=sse_messages)
|
||||||
]
|
]
|
||||||
|
|
||||||
app = Starlette(
|
app = Starlette(
|
||||||
|
|
|
@ -57,14 +57,25 @@ async def create_chat(_, info, title="", members=[]):
|
||||||
|
|
||||||
# reuse chat craeted before if exists
|
# reuse chat craeted before if exists
|
||||||
if len(members) == 2 and title == "":
|
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
|
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')}")
|
chat = await redis.execute("GET", f"chats/{c.decode('utf-8')}")
|
||||||
if chat:
|
if chat:
|
||||||
chat = json.loads(chat)
|
chat = json.loads(chat)
|
||||||
if chat['title'] == "":
|
if chat['title'] == "":
|
||||||
|
print('[inbox] craeteChat found old chat')
|
||||||
|
print(chat)
|
||||||
break
|
break
|
||||||
if chat:
|
if chat:
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -41,7 +41,7 @@ def add_author_stat_columns(q):
|
||||||
# func.sum(user_rating_aliased.value).label('rating_stat')
|
# 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(
|
q = q.outerjoin(Reaction, and_(Reaction.createdBy == User.id, Reaction.body.is_not(None))).add_columns(
|
||||||
func.count(distinct(Reaction.id)).label('commented_stat')
|
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