From 6e3272cbf9ff7c4de08c62a36e3a2c9ca86398fc Mon Sep 17 00:00:00 2001 From: Jamie Gravendeel Date: Thu, 11 Dec 2025 14:17:18 +0100 Subject: [PATCH] games: Save edits to games to disk --- cartridges/games.py | 36 ++++++++++++++++++++++------------- cartridges/ui/game_details.py | 1 + 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/cartridges/games.py b/cartridges/games.py index 537d527..61c0e66 100644 --- a/cartridges/games.py +++ b/cartridges/games.py @@ -160,29 +160,35 @@ class Game(Gio.SimpleActionGroup): _GAMES_DIR.mkdir(parents=True, exist_ok=True) path = (_GAMES_DIR / self.game_id).with_suffix(".json") - with path.open(encoding="utf-8") as f: + with path.open("w", encoding="utf-8") as f: json.dump(properties, f, indent=4) def _remove(self): self.removed = True - self._send( - _("{} removed").format(self.name), - undo=lambda: setattr(self, "removed", False), - ) + self.save() + self._send(_("{} removed").format(self.name), undo=self._undo_remove) + + def _undo_remove(self): + self.removed = False + self.save() def _hide(self): self.hidden = True - self._send( - _("{} hidden").format(self.name), - undo=lambda: setattr(self, "hidden", False), - ) + self.save() + self._send(_("{} hidden").format(self.name), undo=self._undo_hide) + + def _undo_hide(self): + self.hidden = False + self.save() def _unhide(self): self.hidden = False - self._send( - _("{} unhidden").format(self.name), - undo=lambda: setattr(self, "hidden", True), - ) + self.save() + self._send(_("{} unhidden").format(self.name), undo=self._undo_unhide) + + def _undo_unhide(self): + self.hidden = True + self.save() def _send(self, title: str, *, undo: Callable[[], Any]): app = cast("Application", Gio.Application.get_default()) @@ -246,6 +252,10 @@ def load() -> Generator[Game]: except (JSONDecodeError, UnicodeDecodeError): continue + if data.get("removed"): + path.unlink() + continue + try: game = Game.from_data(data) except TypeError: diff --git a/cartridges/ui/game_details.py b/cartridges/ui/game_details.py index d49d0c8..7cc3a9a 100644 --- a/cartridges/ui/game_details.py +++ b/cartridges/ui/game_details.py @@ -117,6 +117,7 @@ class GameDetails(Adw.NavigationPage): self.game.added = int(time.time()) games.model.append(self.game) + self.game.save() self.stack.props.visible_child_name = "details" @Gtk.Template.Callback()