Просмотр исходного кода

Store new keys to preference

CURA-7180 keyring storage
Jelle Spijker 4 лет назад
Родитель
Сommit
2796b9bef3
1 измененных файлов с 8 добавлено и 3 удалено
  1. 8 3
      cura/OAuth2/SecretStorage.py

+ 8 - 3
cura/OAuth2/SecretStorage.py

@@ -7,12 +7,14 @@ from UM.Logger import Logger
 
 class SecretStorage:
     def __init__(self, preferences: Optional["Preferences"] = None):
-        self._stored_secrets = {}
+        self._stored_secrets = set()
         if preferences:
             self._preferences = preferences
             keys = self._preferences.getValue("general/keyring")
             if keys is not None and keys != '':
                 self._stored_secrets = set(keys.split(";"))
+            else:
+                self._preferences.addPreference("general/keyring", "{}")
 
     def __delitem__(self, key):
         if key in self._stored_secrets:
@@ -28,10 +30,13 @@ class SecretStorage:
             keyring.set_password("cura", key, value)
             self._stored_secrets.add(key)
             self._preferences.setValue(f"general/{key}", None)
-            self._preferences.setValue("general/keyring", ";".join(self._stored_secrets))
         except:
             Logger.logException("w", f"Could not store {key} in keyring.")
-            self._preferences.setValue(f"general/{key}", value)
+            if key in self._stored_secrets:
+                self._stored_secrets.remove(key)
+            self._preferences.addPreference("general/{key}".format(key=key), "{}")
+            self._preferences.setValue("general/{key}".format(key=key), value)
+        self._preferences.setValue("general/keyring", ";".join(self._stored_secrets))
 
     def __getitem__(self, key):
         secret = self._preferences.getValue(f"general/{key}")