From d655ea0024793308f09aaa14827fbca188dd4db6 Mon Sep 17 00:00:00 2001 From: Ryan Barrett Date: Sat, 28 Jan 2023 11:42:33 -0800 Subject: [PATCH] Activity => Object: update xrpc_feed.py #286 --- tests/test_xrpc_feed.py | 4 +--- xrpc_feed.py | 17 +++++++---------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/tests/test_xrpc_feed.py b/tests/test_xrpc_feed.py index b4e13ab..a06d7aa 100644 --- a/tests/test_xrpc_feed.py +++ b/tests/test_xrpc_feed.py @@ -5,8 +5,6 @@ from unittest.mock import patch from granary import bluesky from granary.tests.test_bluesky import ( - ACTOR_AS, - ACTOR_REF_BSKY, POST_BSKY, POST_HTML, REPLY_BSKY, @@ -171,7 +169,7 @@ class XrpcFeedTest(testutil.TestCase): }, got.json) def test_getTimeline(self, mock_get): - PagesTest.add_activities() + PagesTest.add_objects() got = self.client.get('/xrpc/app.bsky.feed.getTimeline') self.assertEqual({ diff --git a/xrpc_feed.py b/xrpc_feed.py index 1016b9e..5502f4d 100644 --- a/xrpc_feed.py +++ b/xrpc_feed.py @@ -6,9 +6,10 @@ import re from granary import bluesky, microformats2 import mf2util from oauth_dropins.webutil import util +from oauth_dropins.webutil.util import json_loads from app import xrpc_server -from models import Activity +from models import Object logger = logging.getLogger(__name__) @@ -127,17 +128,13 @@ def getTimeline(input, algorithm=None, limit=50, before=None): user = 'foo.com' # TODO: de-dupe with pages.feed() - logger.info(f'Fetching {limit} activities for {user}') - activities, _, _ = Activity.query( - Activity.domain == user, Activity.direction == 'in' - ).order(-Activity.created + logger.info(f'Fetching {limit} objects for {user}') + objects, _, _ = Object.query( + Object.domains == user, Object.labels == 'feed' + ).order(-Object.created ).fetch_page(limit) - as1_activities = [a.to_as1() for a in activities] - return { - 'feed': [bluesky.from_as1(a) for a in as1_activities - if a and a.get('verb') not in ('like', 'update', 'follow')], - } + return {'feed': [bluesky.from_as1(json_loads(obj.as1)) for obj in objects]} # TODO: use likes as votes?