From ef5d2dcfcfb321fd32d1b276e61a543bfc1a2b91 Mon Sep 17 00:00:00 2001 From: Padreug Date: Mon, 27 Apr 2026 18:30:00 +0200 Subject: [PATCH] feat: wire Nostr subscription sync into extension lifecycle Add background task that subscribes to kind 31922/31923 events from relays and processes them into the local database. Starts 15s after NostrClient connects (sequenced after publish client). Co-Authored-By: Claude Opus 4.6 (1M context) --- __init__.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/__init__.py b/__init__.py index 974c20c..8d42ecf 100644 --- a/__init__.py +++ b/__init__.py @@ -50,14 +50,32 @@ def events_start(): from .nostr.nostr_client import NostrClient nostr_client = NostrClient() - logger.info("[EVENTS] Starting NostrClient for NIP-52 publishing") + logger.info("[EVENTS] Starting NostrClient for NIP-52 sync") await nostr_client.run_forever() except Exception as e: logger.warning(f"[EVENTS] NostrClient failed to start: {e}") - logger.info("[EVENTS] Events will work without Nostr publishing") + logger.info("[EVENTS] Events will work without Nostr sync") task2 = create_permanent_unique_task("ext_events_nostr", _start_nostr_client) scheduled_tasks.append(task2) + async def _sync_nostr_events(): + global nostr_client + await asyncio.sleep(15) # Wait for NostrClient to connect + if not nostr_client: + logger.info("[EVENTS] No NostrClient, skipping Nostr sync") + return + try: + from .nostr_sync import wait_for_nostr_events + + await wait_for_nostr_events(nostr_client) + except Exception as e: + logger.error(f"[EVENTS] Nostr sync task failed: {e}") + + task3 = create_permanent_unique_task( + "ext_events_nostr_sync", _sync_nostr_events + ) + scheduled_tasks.append(task3) + __all__ = ["db", "events_ext", "events_start", "events_static_files", "events_stop"]