diff --git a/clive/__private/ui/app.py b/clive/__private/ui/app.py index 31ee7a602c72eaa4bff4efd9d725dc85c096cd4e..51c680b9632bdfd41fa675ca4126a743f4647984 100644 --- a/clive/__private/ui/app.py +++ b/clive/__private/ui/app.py @@ -195,6 +195,7 @@ class Clive(App[int]): self._retrigger_update_wallet_lock_status_from_beekeeper, pause=True, ) + self.watch(self.world, "profile_reactive", self.save_profile_in_worker) should_enable_debug_loop = safe_settings.dev.should_enable_debug_loop if should_enable_debug_loop: @@ -389,6 +390,13 @@ class Clive(App[int]): def run_worker_with_screen_remove_guard(self, awaitable: Awaitable[None]) -> None: self.run_worker_with_guard(awaitable, self._screen_remove_guard) + def save_profile_in_worker(self, profile: Profile | None) -> None: + async def impl() -> None: + if profile is not None: + await self.world.commands.save_profile() + + self.app.run_worker(impl(), name="save profile worker", group="save_profile", exclusive=True) + async def _debug_log(self) -> None: logger.debug("===================== DEBUG =====================") logger.debug(f"Currently focused: {self.focused}")