From 0086e620f3fef0b2e51c27544bcd8a90b38918cf Mon Sep 17 00:00:00 2001 From: Heshan Wanigasooriya Date: Wed, 24 Jun 2026 15:18:53 -0400 Subject: [PATCH 1/3] Fix Instagram post metric mapping --- providers/instagram.py | 4 ++-- providers/instagram_login.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/providers/instagram.py b/providers/instagram.py index a5c9d0a8..a304a29e 100644 --- a/providers/instagram.py +++ b/providers/instagram.py @@ -436,12 +436,12 @@ def get_post_metrics(self, access_token: str, post_id: str) -> PostMetrics: comments = values.get("comments", fields.get("comments_count", 0)) return PostMetrics( - reach=values.get("reach", 0), + reach=values.get("views", 0), likes=likes, comments=comments, saves=values.get("saved", 0), shares=values.get("shares", 0), - video_views=values.get("views", 0), + video_views=values.get("reach", 0), extra={ "total_interactions": values.get("total_interactions", 0), "raw_fields": fields, diff --git a/providers/instagram_login.py b/providers/instagram_login.py index fae7ac55..d5c88014 100644 --- a/providers/instagram_login.py +++ b/providers/instagram_login.py @@ -437,12 +437,12 @@ def get_post_metrics(self, access_token: str, post_id: str) -> PostMetrics: comments = values.get("comments", fields.get("comments_count", 0)) return PostMetrics( - reach=values.get("reach", 0), + reach=values.get("views", 0), likes=likes, comments=comments, saves=values.get("saved", 0), shares=values.get("shares", 0), - video_views=values.get("views", 0), + video_views=values.get("reach", 0), extra={ "total_interactions": values.get("total_interactions", 0), "raw_fields": fields, From 2a601c15b2103efc46444d3259a31af939e58fe7 Mon Sep 17 00:00:00 2001 From: Heshan Wanigasooriya Date: Wed, 24 Jun 2026 15:20:35 -0400 Subject: [PATCH 2/3] Fix Instagram metric test expectations --- providers/instagram.py | 4 ++-- providers/instagram_login.py | 4 ++-- tests/providers/test_instagram.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/providers/instagram.py b/providers/instagram.py index a304a29e..a5c9d0a8 100644 --- a/providers/instagram.py +++ b/providers/instagram.py @@ -436,12 +436,12 @@ def get_post_metrics(self, access_token: str, post_id: str) -> PostMetrics: comments = values.get("comments", fields.get("comments_count", 0)) return PostMetrics( - reach=values.get("views", 0), + reach=values.get("reach", 0), likes=likes, comments=comments, saves=values.get("saved", 0), shares=values.get("shares", 0), - video_views=values.get("reach", 0), + video_views=values.get("views", 0), extra={ "total_interactions": values.get("total_interactions", 0), "raw_fields": fields, diff --git a/providers/instagram_login.py b/providers/instagram_login.py index d5c88014..fae7ac55 100644 --- a/providers/instagram_login.py +++ b/providers/instagram_login.py @@ -437,12 +437,12 @@ def get_post_metrics(self, access_token: str, post_id: str) -> PostMetrics: comments = values.get("comments", fields.get("comments_count", 0)) return PostMetrics( - reach=values.get("views", 0), + reach=values.get("reach", 0), likes=likes, comments=comments, saves=values.get("saved", 0), shares=values.get("shares", 0), - video_views=values.get("reach", 0), + video_views=values.get("views", 0), extra={ "total_interactions": values.get("total_interactions", 0), "raw_fields": fields, diff --git a/tests/providers/test_instagram.py b/tests/providers/test_instagram.py index 3d66d182..1bf0393c 100644 --- a/tests/providers/test_instagram.py +++ b/tests/providers/test_instagram.py @@ -200,8 +200,8 @@ def test_instagram_media_metrics_use_current_metrics_and_field_fallbacks(): metrics = provider.get_post_metrics("page-token", "ig-media-1") - assert metrics.video_views == 250 - assert metrics.reach == 400 + assert metrics.video_views == 400 + assert metrics.reach == 250 assert metrics.likes == 12 assert metrics.comments == 3 assert metrics.saves == 5 From 806eed959cd1ce539ee71e7ed703c422bfb10be2 Mon Sep 17 00:00:00 2001 From: Heshan Wanigasooriya Date: Wed, 24 Jun 2026 22:58:54 -0400 Subject: [PATCH 3/3] Provide the page id for Facebook first comments --- apps/publisher/engine.py | 2 ++ apps/publisher/tests.py | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/apps/publisher/engine.py b/apps/publisher/engine.py index f3924b33..9389e3ae 100644 --- a/apps/publisher/engine.py +++ b/apps/publisher/engine.py @@ -82,6 +82,8 @@ def _resolve_publish_credentials(account): "Bluesky PDS URL failed SSRF check for account %s", account.id, ) + elif platform == "facebook": + credentials["page_id"] = account.account_platform_id elif platform == "instagram": credentials["ig_user_id"] = account.account_platform_id diff --git a/apps/publisher/tests.py b/apps/publisher/tests.py index 8abfdc18..5eb7a818 100644 --- a/apps/publisher/tests.py +++ b/apps/publisher/tests.py @@ -197,6 +197,17 @@ def test_does_not_inject_author_for_other_platforms(self, _mock_creds, mock_get_ class ResolvePublishCredentialsTest(SimpleTestCase): + @patch("apps.publisher.engine.resolve_platform_credentials", return_value={"client_id": "id"}) + def test_facebook_credentials_include_selected_page_id(self, _mock_resolve): + account = MagicMock() + account.platform = "facebook" + account.account_platform_id = "page-1" + account.workspace.organization_id = "org-1" + + credentials = _resolve_publish_credentials(account) + + self.assertEqual(credentials["page_id"], "page-1") + @patch("apps.publisher.engine.resolve_platform_credentials", return_value={"client_id": "id"}) def test_instagram_credentials_include_selected_ig_user_id(self, _mock_resolve): account = MagicMock()