diff --git a/electrum/wallet_db.py b/electrum/wallet_db.py index 0a32037a9..821a9f454 100644 --- a/electrum/wallet_db.py +++ b/electrum/wallet_db.py @@ -53,7 +53,7 @@ if TYPE_CHECKING: OLD_SEED_VERSION = 4 # electrum versions < 2.0 NEW_SEED_VERSION = 11 # electrum versions >= 2.0 -FINAL_SEED_VERSION = 41 # electrum >= 2.7 will set this to prevent +FINAL_SEED_VERSION = 42 # electrum >= 2.7 will set this to prevent # old versions from overwriting new format @@ -190,6 +190,7 @@ class WalletDB(JsonDB): self._convert_version_39() self._convert_version_40() self._convert_version_41() + self._convert_version_42() self.put('seed_version', FINAL_SEED_VERSION) # just to be sure self._after_upgrade_tasks() @@ -822,6 +823,20 @@ class WalletDB(JsonDB): self.data['imported_channel_backups'] = imported_channel_backups self.data['seed_version'] = 41 + def _convert_version_42(self): + # in OnchainInvoice['outputs'], convert values from None to 0 + if not self._is_upgrade_method_needed(41, 41): + return + PR_TYPE_ONCHAIN = 0 + requests = self.data.get('payment_requests', {}) + invoices = self.data.get('invoices', {}) + for d in [invoices, requests]: + for key, item in list(d.items()): + if item['type'] == PR_TYPE_ONCHAIN: + item['outputs'] = [(_type, addr, (val or 0)) + for _type, addr, val in item['outputs']] + self.data['seed_version'] = 42 + def _convert_imported(self): if not self._is_upgrade_method_needed(0, 13): return