games: Save edits to games to disk

This commit is contained in:
Jamie Gravendeel
2025-12-11 14:17:18 +01:00
parent 6b735c8cf6
commit 6e3272cbf9
2 changed files with 24 additions and 13 deletions

View File

@@ -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:

View File

@@ -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()