Fix memory leaked caused by RefreshService
This commit was merged in pull request #65.
This commit is contained in:
@@ -20,7 +20,7 @@ from src.ezgg_lan_manager.services.UserService import UserService
|
||||
from src.ezgg_lan_manager.types import *
|
||||
|
||||
# Inits services in the correct order
|
||||
def init_services() -> tuple[AccountingService, CateringService, ConfigurationService, DatabaseService, MailingService, NewsService, SeatingService, TicketingService, UserService, LocalDataService, ReceiptPrintingService, TournamentService, TeamService, RefreshService]:
|
||||
def init_services() -> tuple[AccountingService, CateringService, ConfigurationService, DatabaseService, MailingService, NewsService, SeatingService, TicketingService, UserService, LocalDataService, ReceiptPrintingService, TournamentService, TeamService]:
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
configuration_service = ConfigurationService(from_root("config.toml"))
|
||||
db_service = DatabaseService(configuration_service.get_database_configuration())
|
||||
@@ -37,4 +37,4 @@ def init_services() -> tuple[AccountingService, CateringService, ConfigurationSe
|
||||
team_service = TeamService(db_service)
|
||||
refresh_service = RefreshService()
|
||||
|
||||
return accounting_service, catering_service, configuration_service, db_service, mailing_service, news_service, seating_service, ticketing_service, user_service, local_data_service, receipt_printing_service, tournament_service, team_service, refresh_service
|
||||
return accounting_service, catering_service, configuration_service, db_service, mailing_service, news_service, seating_service, ticketing_service, user_service, local_data_service, receipt_printing_service, tournament_service, team_service
|
||||
|
||||
@@ -68,9 +68,10 @@ class UserInfoBox(Component):
|
||||
@event.on_populate
|
||||
async def async_init(self) -> None:
|
||||
self.user = await self.session[UserService].get_user(self.user_id)
|
||||
self.user_balance = await self.session[AccountingService].get_balance(self.user.user_id)
|
||||
self.user_ticket = await self.session[TicketingService].get_user_ticket(self.user.user_id)
|
||||
self.user_seat = await self.session[SeatingService].get_user_seat(self.user.user_id)
|
||||
if self.user is not None:
|
||||
self.user_balance = await self.session[AccountingService].get_balance(self.user.user_id)
|
||||
self.user_ticket = await self.session[TicketingService].get_user_ticket(self.user.user_id)
|
||||
self.user_seat = await self.session[SeatingService].get_user_seat(self.user.user_id)
|
||||
self.session[AccountingService].add_update_hook(self.update)
|
||||
|
||||
async def update(self) -> None:
|
||||
|
||||
@@ -18,7 +18,6 @@ class CateringPage(Component):
|
||||
|
||||
@event.on_populate
|
||||
async def on_populate(self) -> None:
|
||||
self.session[RefreshService].subscribe(self.on_populate)
|
||||
await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - Catering")
|
||||
self.all_menu_items = await self.session[CateringService].get_menu()
|
||||
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
from typing import Callable
|
||||
from typing import Callable, Optional
|
||||
|
||||
|
||||
class RefreshService:
|
||||
"""
|
||||
rio.Components can subscribe to this service with their on_populate method.
|
||||
Those methods get called whenever a overall refresh is needed. Usually when the user logs in or out.
|
||||
The active rio.Components can subscribe to this service with their on_populate method.
|
||||
This methods get called whenever a overall refresh is needed. Usually when the user logs in or out.
|
||||
"""
|
||||
def __init__(self) -> None:
|
||||
self.subscribers: set[Callable] = set()
|
||||
self.subscriber: Optional[Callable] = None
|
||||
|
||||
def subscribe(self, refresh_cb: Callable) -> None:
|
||||
self.subscribers.add(refresh_cb)
|
||||
self.subscriber = refresh_cb
|
||||
|
||||
async def trigger_refresh(self) -> None:
|
||||
for refresh_cb in self.subscribers:
|
||||
await refresh_cb()
|
||||
if self.subscriber is not None:
|
||||
await self.subscriber()
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
from dataclasses import dataclass
|
||||
from uuid import UUID
|
||||
|
||||
from rio import Dataclass
|
||||
|
||||
@dataclass
|
||||
class UserSession:
|
||||
|
||||
class UserSession(Dataclass):
|
||||
id: UUID
|
||||
user_id: int
|
||||
is_team_member: bool
|
||||
|
||||
Reference in New Issue
Block a user