From 825ef01e822635b16e665731890cbaaf06766fb2 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Mon, 26 May 2025 09:39:11 +0000 Subject: [PATCH] tw.store: preserve existing labels when importing addresses --- mmgen/data/version | 2 +- mmgen/tw/store.py | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/mmgen/data/version b/mmgen/data/version index 586205bd..0d83c3b2 100644 --- a/mmgen/data/version +++ b/mmgen/data/version @@ -1 +1 @@ -15.1.dev39 +15.1.dev40 diff --git a/mmgen/tw/store.py b/mmgen/tw/store.py index 5dd95536..bfe109e6 100755 --- a/mmgen/tw/store.py +++ b/mmgen/tw/store.py @@ -12,7 +12,7 @@ tw.store: Tracking wallet control class with store """ -from ..util import msg, die, cached_property +from ..util import msg, ymsg, die, cached_property from ..addr import is_coin_addr, is_mmgen_id, CoinAddr from .shared import TwLabel @@ -42,11 +42,20 @@ class TwCtlWithStore(TwCtl): async def import_address(self, addr, *, label, rescan=False): r = self.data_root if addr in r: - if not r[addr]['mmid'] and label.mmid: - msg(f'Warning: MMGen ID {label.mmid!r} was missing in tracking wallet!') - elif r[addr]['mmid'] != label.mmid: - die(3, 'MMGen ID {label.mmid!r} does not match tracking wallet!') - r[addr] = {'mmid': label.mmid, 'comment': label.comment} + if r[addr]['mmid']: + if r[addr]['mmid'] != label.mmid: + fs = 'imported MMGen ID {!r} does not match tracking wallet MMGen ID {!r}!' + die(3, fs.format(label.mmid, r[addr]['mmid'])) + elif label.mmid: + ymsg(f'Warning: MMGen ID {label.mmid!r} was missing in tracking wallet!') + r[addr]['mmid'] = label.mmid + if not r[addr]['comment']: + ymsg(f'Warning: Label for MMGen ID {label.mmid!r} was missing in tracking wallet!') + r[addr]['comment'] = label.comment + elif label.comment: # overwrite existing comment only if new comment not empty + r[addr]['comment'] = label.comment + else: + r[addr] = {'mmid': label.mmid, 'comment': label.comment} @write_mode async def remove_address(self, addr):