diff --git a/CHANGELOG.md b/CHANGELOG.md index 1352964c..1ccdb054 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - retrieving some Snaps data (icon, description and confinement) through Ubuntu API instead of Snap Store ### Fixes: - not showing app disk cached description when listing installed apps +- not updating disk cached data of installed apps ## [0.4.0] - 2019-07-25 ### Features diff --git a/fpakman/core/flatpak/worker.py b/fpakman/core/flatpak/worker.py index c3206b5f..44bff278 100644 --- a/fpakman/core/flatpak/worker.py +++ b/fpakman/core/flatpak/worker.py @@ -21,7 +21,7 @@ class FlatpakAsyncDataLoader(AsyncDataLoader): self.http_session = http_session self.attempts = attempts self.api_cache = api_cache - self.to_persist = {} # stores all data loaded by the instance + self.persist = False self.timeout = timeout def run(self): @@ -55,10 +55,7 @@ class FlatpakAsyncDataLoader(AsyncDataLoader): self.api_cache.add(self.app.base_data.id, loaded_data) self.app.status = ApplicationStatus.READY - - if self.app.supports_disk_cache(): - self.to_persist[self.app.base_data.id] = self.app - + self.persist = self.app.supports_disk_cache() break else: self.log_msg("Could not retrieve app data for id '{}'. Server response: {}. Body: {}".format( @@ -70,12 +67,8 @@ class FlatpakAsyncDataLoader(AsyncDataLoader): self.app.status = ApplicationStatus.READY - def cache_to_disk(self): - if self.to_persist: - for app in self.to_persist.values(): - self.manager.cache_to_disk(app=app, icon_bytes=None, only_icon=False) - - self.to_persist = {} + if self.persist: + self.manager.cache_to_disk(app=self.app, icon_bytes=None, only_icon=False) def clone(self) -> "FlatpakAsyncDataLoader": return FlatpakAsyncDataLoader(manager=self.manager, diff --git a/fpakman/core/snap/worker.py b/fpakman/core/snap/worker.py index 27679353..44e9b2ac 100644 --- a/fpakman/core/snap/worker.py +++ b/fpakman/core/snap/worker.py @@ -21,7 +21,7 @@ class SnapAsyncDataLoader(AsyncDataLoader): self.attempts = attempts self.api_cache = api_cache self.timeout = timeout - self.to_persist = {} # stores all data loaded by the instance + self.persist = False self.download_icons = download_icons def run(self): @@ -61,10 +61,7 @@ class SnapAsyncDataLoader(AsyncDataLoader): self.app.base_data.description = api_data['description'] self.app.status = ApplicationStatus.READY - - if self.app.supports_disk_cache(): - self.to_persist[self.app.base_data.id] = self.app - + self.persist = self.app.supports_disk_cache() break else: self.log_msg("Could not retrieve app data for id '{}'. Server response: {}. Body: {}".format(self.app.base_data.id, res.status_code, res.content.decode()), Fore.RED) @@ -75,6 +72,9 @@ class SnapAsyncDataLoader(AsyncDataLoader): self.app.status = ApplicationStatus.READY + if self.persist: + self.manager.cache_to_disk(app=self.app, icon_bytes=None, only_icon=False) + def clone(self) -> "SnapAsyncDataLoader": return SnapAsyncDataLoader(manager=self.manager, api_cache=self.api_cache, @@ -83,9 +83,3 @@ class SnapAsyncDataLoader(AsyncDataLoader): timeout=self.timeout, app=self.app) - def cache_to_disk(self): - if self.to_persist: - for app in self.to_persist.values(): - self.manager.cache_to_disk(app=app, icon_bytes=None, only_icon=False) - - self.to_persist = {}