From 53dff0d41b9631ffb66a8477bc4c5f54d731be56 Mon Sep 17 00:00:00 2001 From: giles Date: Sat, 21 Feb 2026 15:59:53 +0000 Subject: [PATCH] Update shared submodule + emit post events for federation - Emit post.published/post.updated events from Ghost webhook sync - Updated shared with federation handlers, delivery, anchoring Co-Authored-By: Claude Opus 4.6 --- bp/blog/ghost/ghost_sync.py | 21 +++++++++++++++++++-- shared | 2 +- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/bp/blog/ghost/ghost_sync.py b/bp/blog/ghost/ghost_sync.py index 285b9c4..4e458eb 100644 --- a/bp/blog/ghost/ghost_sync.py +++ b/bp/blog/ghost/ghost_sync.py @@ -998,8 +998,25 @@ async def sync_single_post(sess: AsyncSession, ghost_id: str) -> None: tag_obj = await _upsert_tag(sess, pt) tag_map[pt["id"]] = tag_obj - await _upsert_post(sess, gp, author_map, tag_map) - # auto-commit + post = await _upsert_post(sess, gp, author_map, tag_map) + + # Emit federation event for published posts (not pages, not drafts) + if post.status == "published" and not post.is_page and post.user_id: + from shared.events import emit_event + from shared.infrastructure.urls import app_url + event_type = "post.published" if post.created_at == post.updated_at else "post.updated" + await emit_event( + sess, + event_type=event_type, + aggregate_type="Post", + aggregate_id=post.id, + payload={ + "user_id": post.user_id, + "title": post.title or "", + "excerpt": post.custom_excerpt or post.excerpt or "", + "url": app_url("coop", f"/{post.slug}/"), + }, + ) async def sync_single_page(sess: AsyncSession, ghost_id: str) -> None: diff --git a/shared b/shared index 8850a01..dd7a99e 160000 --- a/shared +++ b/shared @@ -1 +1 @@ -Subproject commit 8850a0106a51acb55d5c7b84dd45b0b012b6333e +Subproject commit dd7a99e8b73264120912bf5800eea38ce064868d