Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion misc/requirements.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ setuptools-scm
requests < 3.0
PySide6-Essentials >= 6.8.1
QtAwesome
legendary-gl @ https://github.com/RareDevs/legendary/archive/00faf01af88b36ee6d9eff084df577a3b2c4dd72.zip
legendary-gl @ https://github.com/RareDevs/legendary/archive/3f5a7b31c2f61fe6a63248cf7972c678c4684068.zip
orjson
vdf @ https://github.com/solsticegamestudios/vdf/archive/be1f7220238022f8b29fe747f0b643f280bfdb6e.zip
pywin32 ; platform_system == "Windows"
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ dependencies = [
"requests < 3.0",
"PySide6-Essentials >= 6.8.1",
"QtAwesome",
"legendary-gl @ git+https://github.com/RareDevs/legendary@00faf01af88b36ee6d9eff084df577a3b2c4dd72",
"legendary-gl @ git+https://github.com/RareDevs/legendary@3f5a7b31c2f61fe6a63248cf7972c678c4684068",
"orjson",
"vdf @ git+https://github.com/solsticegamestudios/vdf/be1f7220238022f8b29fe747f0b643f280bfdb6e",
"pywin32 ; platform_system == 'Windows'",
Expand Down
9 changes: 1 addition & 8 deletions rare/components/tabs/integrations/ubisoft_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,7 @@ def run_real(self) -> None:
uplay_keys = self.core.egs.store_get_uplay_codes()
key_list = uplay_keys['data']['PartnerIntegration']['accountUplayCodes']
redeemed = {k['gameId'] for k in key_list if k['redeemedOnUplay']}

if (entitlements := self.core.lgd.entitlements) is None:
with timelogger(self.logger, 'Request entitlements'):
try:
entitlements = self.core.egs.get_user_entitlements_full()
except Exception as e:
self.logger.warning(e)
self.core.lgd.entitlements = entitlements
entitlements = self.core.lgd.entitlements
entitlements = {i['entitlementName'] for i in entitlements}

self.signals.result.emit(redeemed, entitlements, ubi_account_id)
Expand Down
7 changes: 0 additions & 7 deletions rare/components/tabs/settings/legendary.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,6 @@ def __init__(self, settings: RareAppSettings, rcore: RareCore, parent=None):
self.ui.exclude_non_asset_check.setChecked(self.settings.get_value(app_settings.exclude_non_asset))
self.ui.exclude_non_asset_check.checkStateChanged.connect(self._on_exclude_non_asset_changed)

self.ui.exclude_entitlements_check.setChecked(self.settings.get_value(app_settings.exclude_entitlements))
self.ui.exclude_entitlements_check.checkStateChanged.connect(self._on_exclude_entitlements_changed)

self.ui.refresh_metadata_button.clicked.connect(self._refresh_metadata)
# FIXME: Disable the button for now because it interferes with RareCore
self.ui.refresh_metadata_button.setEnabled(False)
Expand Down Expand Up @@ -279,7 +276,3 @@ def _on_fetch_unreal_changed(self, state: Qt.CheckState):
@Slot(Qt.CheckState)
def _on_exclude_non_asset_changed(self, state: Qt.CheckState):
self.settings.set_value(app_settings.exclude_non_asset, state != Qt.CheckState.Unchecked)

@Slot(Qt.CheckState)
def _on_exclude_entitlements_changed(self, state: Qt.CheckState):
self.settings.set_value(app_settings.exclude_entitlements, state != Qt.CheckState.Unchecked)
7 changes: 2 additions & 5 deletions rare/models/game.py
Original file line number Diff line number Diff line change
Expand Up @@ -609,11 +609,8 @@ def grant_date(self, force=False) -> datetime:
if self.metadata.grant_date == datetime.min.replace(tzinfo=timezone.utc) or force:
self.logger.info('Grant date for %s not found in metadata, resolving', self.app_name)
entitlement = next((ent for ent in entitlements if ent['namespace'] == self.game.namespace), None)
grant_date = (
datetime.fromisoformat(entitlement['grantDate'].replace('Z', '+00:00'))
if entitlement
else datetime.fromisoformat(self.game.metadata['creationDate'].replace('Z', '+00:00'))
)
grant_date = entitlement["grantDate"] if entitlement else self.game.metadata["creationDate"]
grant_date = datetime.fromisoformat(grant_date.replace('Z', '+00:00'))
self.metadata.grant_date = grant_date
self.__save_metadata()
return self.metadata.grant_date
Expand Down
1 change: 0 additions & 1 deletion rare/models/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ class Settings(Namespace):
macos_meta = Setting(key='macos_meta', default=pf.system() == 'Darwin', dtype=bool)
unreal_meta = Setting(key='unreal_meta', default=False, dtype=bool)
exclude_non_asset = Setting(key='exclude_non_asset', default=False, dtype=bool)
exclude_entitlements = Setting(key='exclude_entitlements', default=False, dtype=bool)

language = Setting(key='language', default=locale.getlocale()[0], dtype=str)

Expand Down
20 changes: 1 addition & 19 deletions rare/shared/rare_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
from .image_manager import ImageManager
from .workers import (
CloudSyncWorker,
EntitlementsWorker,
FetchWorker,
GamesDlcsWorker,
MoveWorker,
Expand All @@ -42,7 +41,6 @@ class RareCore(QObject):
# lk: these are unused but remain if case they become relevant
# completed_saves = Signal()
# completed_origin = Signal()
# completed_entitlements = Signal()

# lk: special case class attribute, this has to be here
__instance: 'RareCore' = None
Expand Down Expand Up @@ -82,7 +80,6 @@ def __init__(self, settings: RareAppSettings, args: Namespace):

self.__fetch_progress: int = 0
self.__fetched_games_dlcs: bool = False
self.__fetched_entitlements: bool = False
self.__fetched_runtimeassets: bool = False

RareCore.__instance = self
Expand Down Expand Up @@ -363,23 +360,13 @@ def __on_fetch_result(self, result: tuple, result_type: int):
self.__add_games_and_dlcs(*result)
self.__fetched_games_dlcs = True

if result_type == FetchWorker.Result.ENTITLEMENTS:
self.__core.lgd.entitlements = result
self.__fetched_entitlements = True

if result_type == FetchWorker.Result.RUNTIMEASSETS:
self.__fetched_runtimeassets = True

self.logger.info('Acquired data from %s worker', FetchWorker.Result(result_type).name)

# Return early if there are still things to fetch
if not all(
{
self.__fetched_games_dlcs,
self.__fetched_entitlements,
self.__fetched_runtimeassets,
}
):
if not all({ self.__fetched_games_dlcs, self.__fetched_runtimeassets, }):
return

self.logger.debug('Fetch time %s seconds', time.perf_counter() - self.__start_time)
Expand All @@ -399,16 +386,11 @@ def fetch(self):
games_dlcs_worker.signals.progress.connect(self.__on_fetch_progress)
games_dlcs_worker.signals.result.connect(self.__on_fetch_result)

entitlements_worker = EntitlementsWorker(self.__settings, self.__core, self.__args, segment=5)
entitlements_worker.signals.progress.connect(self.__on_fetch_progress)
entitlements_worker.signals.result.connect(self.__on_fetch_result)

runtime_assets_worker = RuntimeAssetsWorker(self.__settings, self.__core, self.__args, segment=10)
runtime_assets_worker.signals.progress.connect(self.__on_fetch_progress)
runtime_assets_worker.signals.result.connect(self.__on_fetch_result)

QThreadPool.globalInstance().start(games_dlcs_worker)
QThreadPool.globalInstance().start(entitlements_worker)
QThreadPool.globalInstance().start(runtime_assets_worker)

def __fetch_saves(self) -> None:
Expand Down
3 changes: 1 addition & 2 deletions rare/shared/workers/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from .cloud_sync import CloudSyncWorker
from .fetch import EntitlementsWorker, FetchWorker, GamesDlcsWorker
from .fetch import FetchWorker, GamesDlcsWorker
from .install import InstallInfoWorker
from .move import MoveInfoWorker, MoveWorker
from .uninstall import UninstallWorker
Expand All @@ -9,7 +9,6 @@

__all__ = [
'CloudSyncWorker',
'EntitlementsWorker',
'FetchWorker',
'GamesDlcsWorker',
'InstallInfoWorker',
Expand Down
27 changes: 0 additions & 27 deletions rare/shared/workers/fetch.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ class FetchWorker(Worker):
class Result(IntEnum):
ERROR = 0
GAMESDLCS = 1
ENTITLEMENTS = 2
RUNTIMEASSETS = 3

def __init__(self, settings: RareAppSettings, core: LegendaryCore, args: Namespace, segment: int):
Expand Down Expand Up @@ -67,32 +66,6 @@ def run_real(self):
return


class EntitlementsWorker(FetchWorker):
def run_real(self):
elapsed_days = 99
entitlements_json = os.path.join(self.core.lgd.path, 'entitlements.json')
if os.path.exists(entitlements_json):
mod_time = datetime.fromtimestamp(os.path.getmtime(entitlements_json))
elapsed_days = abs(datetime.now() - mod_time).days

want_entitlements = not self.settings.get_value(app_settings.exclude_entitlements) and elapsed_days > 1
want_entitlements = want_entitlements and not self.args.offline

entitlements = ()
if want_entitlements:
# Get entitlements, Ubisoft integration also uses them
self.signals.progress.emit(self.segment, self.signals.tr('Updating entitlements'))
with timelogger(self.logger, 'Request entitlements'):
try:
entitlements = self.core.egs.get_user_entitlements_full()
except Exception as e:
self.logger.warning(e)
self.core.lgd.entitlements = entitlements
self.logger.info('Entitlements: %s', len(list(entitlements)))
self.signals.result.emit(entitlements, FetchWorker.Result.ENTITLEMENTS)
return


class GamesDlcsWorker(FetchWorker):
def run_real(self):
# Fetch regular EGL games with assets
Expand Down
Loading
Loading