Allow authenticated users to like/unlike any workout they can see in the feed: own workouts, followed local users, and federated workouts from followed remote actors.
Requirements
- API: like/unlike endpoints; enforce feed access (reuse
CanAccessWorkout + federated feed visibility)
- Storage: persist likes per
(workout owner/key, workout id, liker) for local and inbox-cached federated workouts
- Federation (ActivityPub):
- deliver
Like / Undo when a local user likes a remote workout (or when appropriate for local workouts with remote followers)
- handle inbound
Like / Undo in the inbox processor
- map likes to federated workout object IDs consistently with existing Create/Delete delivery
- Responses:
like_count, liked_by_me on feed/workout payloads (local + federated)
- UI: like button + count in feed and workout detail (EN/RU/DE)
- Tests: backend (service, access control, inbox/delivery); Flutter as needed
Out of scope
- Push/email notifications to workout owner
Allow authenticated users to like/unlike any workout they can see in the feed: own workouts, followed local users, and federated workouts from followed remote actors.
Requirements
CanAccessWorkout+ federated feed visibility)(workout owner/key, workout id, liker)for local and inbox-cached federated workoutsLike/Undowhen a local user likes a remote workout (or when appropriate for local workouts with remote followers)Like/Undoin the inbox processorlike_count,liked_by_meon feed/workout payloads (local + federated)Out of scope