UserList now uses useInfiniteQuery with offset pagination (20 per page) and an IntersectionObserver scroll sentinel for infinite scroll. Users sorted by username. Follows same pattern as Feed/UserFeed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.3 KiB
1.3 KiB
Fix Plan
Completed
tweet_liketests:user_fixturemissingauthorize?: false,Ash.Query.filterneededrequire Ash.Query,Ash.ForbiddenField.forbidden?/1doesn't exist (usematch?),likenoop returned stale tweet struct → fixed all
In Progress / Next
unlikenoop returns stale tweet struct — same issue aslikenoop; reload from DBdecrement_likescan go below 0 — useGREATEST(likes - 1, 0)via SQL fragment
Backlog
- Self-follow validation used
get_attribute(:follower_id)which is nil at validation time (relate_actor runs after) — fixed to usecontext.actor.id - Follow/unfollow test coverage (9 tests)
- User list pagination — useInfiniteQuery + scroll sentinel, USERS_PAGE_SIZE=20, sorted by username
- No CHECK constraint on
likes >= 0at DB level (low priority, app logic prevents it) read :following_feed— nil actor returns empty list (not a bug)- No search for users or tweets
- Tweet creation, update, delete, comment tests (13 tests)
- Missing test coverage: auth flows
Notes
- Stack: Elixir/Phoenix + Ash Framework + React/TypeScript
- Tests:
mix test— 10 tests, all should pass - Build:
mix precommitalias runs compile + test + format checks - No ClickHouse in test env (expected, non-fatal errors in test output)