From fbc0be30ecb6bc5b671788dabd92e099262b1fa3 Mon Sep 17 00:00:00 2001 From: Nino van Hooff Date: Tue, 12 May 2020 15:40:53 +0200 Subject: [PATCH] Fix typing issue in CloudPackageChecker CURA-7290 --- .../src/CloudSync/CloudPackageChecker.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py b/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py index 346cbfa812..9c372096af 100644 --- a/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py +++ b/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py @@ -2,7 +2,7 @@ # Cura is released under the terms of the LGPLv3 or higher. import json -from typing import List, Dict, Any +from typing import List, Dict, Any, Set from typing import Optional from PyQt5.QtCore import QObject @@ -36,9 +36,8 @@ class CloudPackageChecker(QObject): self._application.initializationFinished.connect(self._onAppInitialized) self._i18n_catalog = i18nCatalog("cura") self._sdk_version = ApplicationMetadata.CuraSDKVersion - self._last_check_packages = [] # type: List[str] - """Result from a previous check within the same user session. - Used to prevent duplicate notifications""" + self._last_notified_packages = set() # type: Set[str] + """Packages for which a notification has been shown. No need to bother the user twice fo equal content""" # This is a plugin, so most of the components required are not ready when # this is initialized. Therefore, we wait until the application is ready. @@ -52,7 +51,7 @@ class CloudPackageChecker(QObject): def _onLoginStateChanged(self) -> None: # reset session - self._last_check_packages = [] + self._last_notified_packages = set() self._getPackagesIfLoggedIn() def _getPackagesIfLoggedIn(self) -> None: @@ -96,8 +95,8 @@ class CloudPackageChecker(QObject): user_subscribed_packages = {plugin["package_id"] for plugin in subscribed_packages_payload} user_installed_packages = self._package_manager.getAllInstalledPackageIDs() - if user_subscribed_packages == self._last_check_packages: - # nothing new here + if user_subscribed_packages == self._last_notified_packages: + # already notified user about these return # We need to re-evaluate the dismissed packages @@ -109,13 +108,13 @@ class CloudPackageChecker(QObject): user_installed_packages += user_dismissed_packages # We check if there are packages installed in Web Marketplace but not in Cura marketplace - package_discrepancy = list(set(user_subscribed_packages).difference(user_installed_packages)) + package_discrepancy = list(user_subscribed_packages.difference(user_installed_packages)) if package_discrepancy: Logger.log("d", "Discrepancy found between Cloud subscribed packages and Cura installed packages") self._model.addDiscrepancies(package_discrepancy) self._model.initialize(self._package_manager, subscribed_packages_payload) self._showSyncMessage() - self._last_check_packages = user_subscribed_packages + self._last_notified_packages = user_subscribed_packages def _showSyncMessage(self) -> None: """Show the message if it is not already shown"""