From 2796b9bef30986cc0c5192224d1010631734f5ef Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Mon, 15 Mar 2021 13:06:42 +0100 Subject: [PATCH] Store new keys to preference CURA-7180 keyring storage --- cura/OAuth2/SecretStorage.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/cura/OAuth2/SecretStorage.py b/cura/OAuth2/SecretStorage.py index c083aa8a0c..c662f4a53b 100644 --- a/cura/OAuth2/SecretStorage.py +++ b/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}")