1
0
Fork 0
mirror of synced 2024-06-26 18:20:50 +12:00

RareGameSlim: Resolve save game again if dt_local is None

If the save path wasn't known at startup, dt_local will be None. This led
to the UI displaying wrong information about the local save. Detect that
case and resolve the save's status again.
This commit is contained in:
loathingKernel 2023-03-14 15:21:10 +02:00
parent 5cf802dee7
commit ee6a129be8
No known key found for this signature in database
GPG key ID: CE0C72D0B53821FD
2 changed files with 10 additions and 5 deletions

View file

@ -3,7 +3,7 @@ from dataclasses import dataclass
from datetime import datetime
from enum import IntEnum
from logging import getLogger
from typing import Optional, List
from typing import Optional, List, Tuple
from PyQt5.QtCore import QObject, pyqtSignal, QRunnable, QThreadPool, QSettings
from legendary.models.game import SaveGameFile, SaveGameStatus, Game, InstalledGame
@ -19,7 +19,8 @@ class RareSaveGame:
file: SaveGameFile
status: SaveGameStatus = SaveGameStatus.NO_SAVE
dt_local: Optional[datetime] = None
dt_remote: datetime = None
dt_remote: Optional[datetime] = None
description: Optional[str] = ""
class RareGameBase(QObject):
@ -178,11 +179,16 @@ class RareGameSlim(RareGameBase):
return None
@property
def save_game_state(self) -> (SaveGameStatus, (datetime, datetime)):
def save_game_state(self) -> Tuple[SaveGameStatus, Tuple[Optional[datetime], Optional[datetime]]]:
if self.saves and self.save_path:
latest = self.latest_save
# lk: if the save path wasn't known at startup, dt_local will be None
# In that case resolve the save again before returning
if latest.dt_local is None:
latest.status, (latest.dt_local, latest.dt_remote) = self.core.check_savegame_state(
self.save_path, latest.file
)
return latest.status, (latest.dt_local, latest.dt_remote)
# return self.core.check_savegame_state(self.save_path, self.latest_save.save)
return SaveGameStatus.NO_SAVE, (None, None)
def upload_saves(self, thread=True):

View file

@ -268,7 +268,6 @@ class RareCore(QObject):
self.__add_game(rdlc)
self.__add_game(rgame)
self.progress.emit(int(idx/length * 80) + 20, f"Loaded <b>{rgame.app_title}</b>")
time.sleep(0.005)
@pyqtSlot(object, int)
def handle_result(self, result: object, res_type: int):