diff --git a/api/src/api_graphql/subscription.py b/api/src/api_graphql/subscription.py index c4fb980..2b64fef 100644 --- a/api/src/api_graphql/subscription.py +++ b/api/src/api_graphql/subscription.py @@ -1,3 +1,7 @@ +from typing import AsyncGenerator + +from api.broadcast import broadcast +from api.route import Route from api_graphql.abc.subscription_abc import SubscriptionABC from api_graphql.field.subscription_field_builder import SubscriptionFieldBuilder from api_graphql.require_any_resolvers import has_assigned_user_spaces @@ -50,9 +54,16 @@ class Subscription(SubscriptionABC): .with_public(True) ) + async def _user_logout_generator(*args, **kwargs) -> AsyncGenerator[str, None]: + async with broadcast.subscribe(channel="userLogout") as subscriber: + async for message in subscriber: + if message.message == (await Route.get_user()).id: + yield message + self.subscribe( SubscriptionFieldBuilder("userLogout") .with_resolver(lambda message, *_: message.message) + .with_generator(_user_logout_generator) .with_public(True) )