Skip to content

Show list activity on profiles - #76

Merged
FiberJW merged 5 commits into
senpaifrom
fiberjw/profile-activity
Jul 17, 2026
Merged

FiberJW merged 5 commits into
senpaifrom
fiberjw/profile-activity

Conversation

@FiberJW

@FiberJW FiberJW commented Jul 9, 2026 •

Copy link
Copy Markdown
Owner

Stack: 3 of 4. Depends on #75.

Summary

  • add a reusable list-activity row with user and media links
  • show recent AniList list changes on personal and public profiles
  • add cache-safe activity pagination fields without extra fetches
  • sync and populate Japanese translations

Test plan

  • open personal and public profiles with activity
  • verify user avatars and media posters navigate correctly
  • pull to refresh profile activity
  • bun test
  • bun run gql:check
  • bun run typecheck
  • bun run lint:check
  • bun run i18n:sync followed by a clean translation diff

Summary by cubic

Adds recent AniList list activity to personal and public profiles with a reusable, localized ActivityFeedRow and a “Recent activity” section (loading/error/empty, pull-to-refresh). Normalizes AniList status strings to localized actions, preserves locale-specific spacing, and hides media covers when missing.

  • New Features

    • Show the last 10 list updates with localized action text, user/media links, and relative timestamps.
    • Fetch activities for viewer and public profiles; pull-to-refresh refetches both; update ja_JP strings and accessibility labels.
  • Refactors

    • Extract ActivityFeedFragment, PROFILE_ACTIVITY_LIMIT, filterListActivities, and getListActivityAction to graphql/activity.ts (with tests).
    • Add Apollo cache ActivityUnion and Page.activities policies (custom keyArgs and merge) to avoid extra fetches.

Written for commit 25814fe. Summary will update on new commits.

Review in cubic

@vercel

vercel Bot commented Jul 9, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
goodweebs Ignored Ignored Preview Jul 17, 2026 12:04pm

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@coderabbitai

coderabbitai Bot commented Jul 9, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 4016bf4f-804e-4866-b691-c7efc64384dc

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fiberjw/profile-activity

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@FiberJW FiberJW mentioned this pull request Jul 9, 2026
@github-actions

github-actions Bot commented Jul 9, 2026 •

Copy link
Copy Markdown

React Doctor found no issues. 🎉

⚠️ Warning: .github/workflows/react-doctor.yml is configured incorrectly. See below to fix.

React Doctor compares against fiberjw/user-search to report only the issues this pull request introduces. This run couldn't complete that comparison (usually a shallow CI checkout with no merge base), so it listed every issue in the changed files, including ones that already existed on fiberjw/user-search.

Add fetch-depth: 0 to the actions/checkout step in .github/workflows/react-doctor.yml so the checkout includes the history React Doctor needs:

 jobs:
   react-doctor:
     steps:
       - uses: actions/checkout@v5
+        with:
+          fetch-depth: 0

       - uses: millionco/react-doctor@v2

To silence this warning, set silence-missing-baseline-warning: true on the React Doctor action.

Reviewed by React Doctor for commit 25814fe.

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 7 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread components/activity-feed-row.tsx Outdated
Comment thread app/(tabs)/profile.tsx Outdated
Comment thread components/activity-feed-row.tsx
@FiberJW
FiberJW force-pushed the fiberjw/profile-activity branch from ffb82c9 to 764e1eb Compare July 9, 2026 20:25
@FiberJW
FiberJW force-pushed the fiberjw/user-search branch from e60a507 to 89bb9a2 Compare July 9, 2026 20:25
@FiberJW
FiberJW force-pushed the fiberjw/profile-activity branch from 764e1eb to 9441425 Compare July 9, 2026 20:36
@FiberJW
FiberJW force-pushed the fiberjw/user-search branch from 89bb9a2 to cad1cea Compare July 9, 2026 20:36
@FiberJW
FiberJW requested a review from Copilot July 11, 2026 22:00

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds “Recent activity” (AniList list updates) to both personal and public profile experiences, including a reusable activity row component and Apollo cache pagination support to avoid extra fetches.

Changes:

  • Introduce ActivityFeedRow / ActivityFeedDivider and a shared ActivityFeedFragment + filterListActivities helper.
  • Fetch and render recent list activity on the personal profile tab and public user profiles.
  • Extend Apollo cache policies to support Page.activities pagination/merging and add missing Japanese strings.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.

Show a summary per file
File Description
translations/ja_JP.json Adds hashed-key Japanese translations for the new profile activity strings/connector.
i18n/translations/ja_JP.json Adds short-key Japanese translations for the new profile activity strings/connector.
screens/UserProfileScreen/index.tsx Adds activity fetch to the public profile query and passes activities into the profile content.
screens/ProfileScreen/UserProfileContent.tsx Renders a “Recent activity” section and supports loading/error display for activities.
app/(tabs)/profile.tsx Adds a separate activity query for the viewer profile and refreshes both viewer + activity on pull-to-refresh.
graphql/client.ts Adds ActivityUnion possibleTypes and a Page.activities field policy for pagination-safe merges.
graphql/activity.ts Introduces a shared fragment, profile activity limit constant, and activity filtering helper.
components/activity-feed-row.tsx New reusable UI row for list activity with accessible user/media links and localized connector text.
Comments suppressed due to low confidence (1)

screens/UserProfileScreen/index.tsx:105

  • UserProfileContent now supports activityLoading/activityError, but the public profile screen only passes activities. When the user object is satisfied from cache but the new Page.activities field is still loading, this will render the activity section as empty (“No list updates yet.”) instead of showing a loading state.

Pass through an activity-loading flag (based on loading + whether activities are present yet) and surface GraphQL errors for the section so it can show the error text when activities fail to load.

        <UserProfileContent
          user={data.User}
          activities={activities}
          action={
            accessToken ? (
              <FollowButton
                userId={data.User.id}
                isFollowing={Boolean(data.User.isFollowing)}
                isOwnProfile={data.User.id === data.Viewer?.id}
              />
            ) : undefined
          }
        />

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@FiberJW
FiberJW force-pushed the fiberjw/profile-activity branch from 9441425 to 91d5636 Compare July 11, 2026 23:11
@FiberJW
FiberJW force-pushed the fiberjw/user-search branch 2 times, most recently from 85a4da3 to e52b788 Compare July 17, 2026 11:42
@FiberJW
FiberJW force-pushed the fiberjw/profile-activity branch from 91d5636 to 370515e Compare July 17, 2026 11:42
@FiberJW
FiberJW force-pushed the fiberjw/user-search branch from e52b788 to a4c4162 Compare July 17, 2026 12:02
FiberJW added 5 commits July 17, 2026 21:04
- Localize the activity headline connector and profile link accessibility
  labels (the status verb itself only exists in English on AniList)
- Extract the shared activity fragment, profile activity limit, and
  ListActivity normalization into graphql/activity.ts so the personal and
  public profile paths can't drift (also clears react-doctor's
  only-export-components warning on the row component)
- Hide the activity row's cover poster when media has no cover image
  instead of rendering an empty uri
@FiberJW
FiberJW force-pushed the fiberjw/profile-activity branch from 28c82bb to 25814fe Compare July 17, 2026 12:04
@FiberJW
FiberJW changed the base branch from fiberjw/user-search to senpai July 17, 2026 12:04
@FiberJW
FiberJW merged commit ae634f9 into senpai Jul 17, 2026
7 of 12 checks passed
@expo

expo Bot commented Jul 17, 2026

Copy link
Copy Markdown

🎉 Your workflow run has finished!

Check out the details below.


Builds

ID Platform Status Actions
3100d9f iOS ✅ Success (logs) Install Download
Open QR Code Install QR code for build 3100d9f6-0e9f-4bf1-a837-b33c9a0ca5a0
611bb33 Android ✅ Success (logs) Install Download
Open QR Code Install QR code for build 611bb33c-8ed0-460d-bd96-789ba126169e

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants