From bc63e0f16dd8e084a92317985e57a356eff07719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Z=C3=B6ller?= Date: Sat, 3 Jan 2026 20:39:57 +0100 Subject: [PATCH] Moar Fixes --- .../fitpub/controller/ActivityPubController.java | 16 ++++++++++++++-- .../fitpub/repository/ActivityRepository.java | 9 +++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/operaton/fitpub/controller/ActivityPubController.java b/src/main/java/org/operaton/fitpub/controller/ActivityPubController.java index 2c47136..cec42ae 100644 --- a/src/main/java/org/operaton/fitpub/controller/ActivityPubController.java +++ b/src/main/java/org/operaton/fitpub/controller/ActivityPubController.java @@ -119,10 +119,22 @@ public class ActivityPubController { return ResponseEntity.notFound().build(); } + User user = userOpt.get(); String outboxUrl = baseUrl + "/users/" + username + "/outbox"; - // TODO: Fetch actual activities from database - OrderedCollection collection = OrderedCollection.empty(outboxUrl); + // Count public activities for this user + // Mastodon and other ActivityPub servers primarily use the totalItems count + long activityCount = activityRepository.countByUserIdAndVisibility( + user.getId(), + Activity.Visibility.PUBLIC + ); + + OrderedCollection collection = OrderedCollection.builder() + .context("https://www.w3.org/ns/activitystreams") + .type("OrderedCollection") + .id(outboxUrl) + .totalItems((int) activityCount) + .build(); return ResponseEntity.ok(collection); } diff --git a/src/main/java/org/operaton/fitpub/repository/ActivityRepository.java b/src/main/java/org/operaton/fitpub/repository/ActivityRepository.java index 093b355..42b8883 100644 --- a/src/main/java/org/operaton/fitpub/repository/ActivityRepository.java +++ b/src/main/java/org/operaton/fitpub/repository/ActivityRepository.java @@ -88,6 +88,15 @@ public interface ActivityRepository extends JpaRepository { */ long countByUserId(UUID userId); + /** + * Count activities for a user by visibility. + * + * @param userId the user ID + * @param visibility the visibility level + * @return count of activities + */ + long countByUserIdAndVisibility(UUID userId, Activity.Visibility visibility); + /** * Find an activity by ID and user ID. *