From 45fafa10a90b7ec4a89404048422efac7ac257a6 Mon Sep 17 00:00:00 2001 From: holger krekel Date: Fri, 8 May 2026 20:15:02 +0200 Subject: [PATCH] fix: legacy token metadata storage used list type, but if no new setmetadata happened, the user would not be notified at all. --- chatmaild/src/chatmaild/metadata.py | 3 +++ chatmaild/src/chatmaild/tests/test_metadata.py | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/chatmaild/src/chatmaild/metadata.py b/chatmaild/src/chatmaild/metadata.py index 7b17977d..9e32572d 100644 --- a/chatmaild/src/chatmaild/metadata.py +++ b/chatmaild/src/chatmaild/metadata.py @@ -70,6 +70,9 @@ class Metadata: # Some tokens have expired, remove them. with self._modify_tokens(addr) as _tokens: pass + elif isinstance(tokens, list): + with self._modify_tokens(addr) as tokens: + token_list = list(tokens.keys()) else: token_list = [] return token_list diff --git a/chatmaild/src/chatmaild/tests/test_metadata.py b/chatmaild/src/chatmaild/tests/test_metadata.py index fd49b5b8..d387db8e 100644 --- a/chatmaild/src/chatmaild/tests/test_metadata.py +++ b/chatmaild/src/chatmaild/tests/test_metadata.py @@ -372,3 +372,14 @@ def test_iroh_relay(dictproxy): dictproxy.iroh_relay = "https://example.org/" dictproxy.loop_forever(rfile, wfile) assert wfile.getvalue() == b"Ohttps://example.org/\n" + + +def test_legacy_token_migration(metadata, testaddr): + with metadata.get_metadata_dict(testaddr).modify() as data: + data[metadata.DEVICETOKEN_KEY] = ["oldtoken1", "oldtoken2"] + + assert metadata.get_tokens_for_addr(testaddr) == ["oldtoken1", "oldtoken2"] + mdict = metadata.get_metadata_dict(testaddr).read() + tokens = mdict[metadata.DEVICETOKEN_KEY] + assert isinstance(tokens, dict) + assert "oldtoken1" in tokens and "oldtoken2" in tokens