Skip to content

feat: add trader-activity feed to @metamask/social-controllers#9447

Open
joaosantos15 wants to merge 3 commits into
mainfrom
core-TSA-866-proxy-clicker-feed-endpoint
Open

feat: add trader-activity feed to @metamask/social-controllers#9447
joaosantos15 wants to merge 3 commits into
mainfrom
core-TSA-866-proxy-clicker-feed-endpoint

Conversation

@joaosantos15

@joaosantos15 joaosantos15 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Explanation

The mobile app needs a trader-activity feed (see the "Trader activity" tab) but the @metamask/social-controllers package had no way to fetch it. The social-api now proxies Clicker's feed endpoints; this PR exposes that surface to consumers.

Adds a fetchFeed method to SocialService, exposed over the messenger as SocialService:fetchFeed. It calls the social-api GET /feed and returns the items plus cursor pagination:

  • scopefollowing (default, personalized to the JWT-identified user) or leaderboard (generic, shared by all users). This is the query parameter the service uses to select the per-user vs generic feed.
  • chains — filter as CAIP-2 chain ids (e.g. eip155:8453); the social-api translates them to Clicker chain names.
  • limit — passthrough.
  • olderThan / newerThan — opaque cursors for infinite scroll. The response pagination exposes olderCursor / newerCursor to feed back in.

The method follows the existing read-only fetch pattern (fetchOpenPositions, fetchTraderProfile, etc.): it lives on SocialService (not SocialController), since the feed is cursor-paginated data the UI manages itself rather than persisted controller state.

New exported types: FeedItem, FeedPagination, FeedResponse, FetchFeedOptions. FeedItem extends the existing Position type with the trade's actor (ProfileSummary) and creation timestamp, so most of the shape (and its superstruct validation, via assign(PositionStruct, ...)) is reused rather than redefined.

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Add `fetchFeed` to `SocialService` (and the `SocialService:fetchFeed`
messenger action) proxying the social-api `GET /feed` endpoint.

- Supports a `scope` (`following` default, or `leaderboard`), `chains`,
  `limit`, and cursor pagination (`olderThan`/`newerThan`) for infinite scroll.
- Adds `FeedItem`/`FeedPagination`/`FeedResponse`/`FetchFeedOptions` types;
  `FeedItem` reuses `Position` + `ProfileSummary`, and validation reuses
  `PositionStruct` via `assign`.
- Adds a temporary `test` flag that serves the following feed for a fixed demo
  wallet until Clicker resolves feeds by profile id.
@joaosantos15 joaosantos15 requested review from a team as code owners July 9, 2026 12:38
zone-live
zone-live previously approved these changes Jul 9, 2026
Clicker's /v1/feed now accepts an `identifier` param, so the temporary `test`
flag on `fetchFeed` is no longer needed. Remove it from `FetchFeedOptions` and
the request builder. Also note that `chains` are CAIP-2 chain ids.
@joaosantos15

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-previews

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.5.4-preview-ee508d7c1
@metamask-previews/accounts-controller@39.0.4-preview-ee508d7c1
@metamask-previews/address-book-controller@7.1.2-preview-ee508d7c1
@metamask-previews/ai-controllers@0.8.0-preview-ee508d7c1
@metamask-previews/analytics-controller@1.2.1-preview-ee508d7c1
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-ee508d7c1
@metamask-previews/announcement-controller@8.1.0-preview-ee508d7c1
@metamask-previews/app-metadata-controller@2.0.1-preview-ee508d7c1
@metamask-previews/approval-controller@9.0.2-preview-ee508d7c1
@metamask-previews/assets-controller@10.1.0-preview-ee508d7c1
@metamask-previews/assets-controllers@109.3.1-preview-ee508d7c1
@metamask-previews/authenticated-user-storage@3.0.0-preview-ee508d7c1
@metamask-previews/base-controller@9.1.0-preview-ee508d7c1
@metamask-previews/base-data-service@0.1.3-preview-ee508d7c1
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-ee508d7c1
@metamask-previews/bridge-controller@77.3.2-preview-ee508d7c1
@metamask-previews/bridge-status-controller@74.1.1-preview-ee508d7c1
@metamask-previews/build-utils@3.0.4-preview-ee508d7c1
@metamask-previews/chain-agnostic-permission@1.7.0-preview-ee508d7c1
@metamask-previews/chomp-api-service@3.1.0-preview-ee508d7c1
@metamask-previews/claims-controller@0.5.3-preview-ee508d7c1
@metamask-previews/client-controller@1.0.1-preview-ee508d7c1
@metamask-previews/client-utils@0.0.0-preview-ee508d7c1
@metamask-previews/compliance-controller@2.1.0-preview-ee508d7c1
@metamask-previews/composable-controller@12.0.1-preview-ee508d7c1
@metamask-previews/config-registry-controller@0.4.1-preview-ee508d7c1
@metamask-previews/connectivity-controller@0.3.0-preview-ee508d7c1
@metamask-previews/controller-utils@12.3.0-preview-ee508d7c1
@metamask-previews/core-backend@6.5.0-preview-ee508d7c1
@metamask-previews/delegation-controller@3.0.2-preview-ee508d7c1
@metamask-previews/earn-controller@12.2.2-preview-ee508d7c1
@metamask-previews/eip-5792-middleware@3.0.4-preview-ee508d7c1
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-ee508d7c1
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-ee508d7c1
@metamask-previews/ens-controller@19.1.5-preview-ee508d7c1
@metamask-previews/eth-block-tracker@15.0.1-preview-ee508d7c1
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-ee508d7c1
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-ee508d7c1
@metamask-previews/foundryup@1.0.1-preview-ee508d7c1
@metamask-previews/gas-fee-controller@26.2.4-preview-ee508d7c1
@metamask-previews/gator-permissions-controller@4.2.2-preview-ee508d7c1
@metamask-previews/geolocation-controller@0.1.3-preview-ee508d7c1
@metamask-previews/java-tron-up@1.0.0-preview-ee508d7c1
@metamask-previews/json-rpc-engine@10.5.0-preview-ee508d7c1
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-ee508d7c1
@metamask-previews/keyring-controller@27.1.0-preview-ee508d7c1
@metamask-previews/local-node-utils@1.0.0-preview-ee508d7c1
@metamask-previews/logging-controller@8.0.2-preview-ee508d7c1
@metamask-previews/message-manager@14.1.2-preview-ee508d7c1
@metamask-previews/messenger@2.0.0-preview-ee508d7c1
@metamask-previews/messenger-cli@0.2.0-preview-ee508d7c1
@metamask-previews/money-account-api-data-service@0.1.0-preview-ee508d7c1
@metamask-previews/money-account-balance-service@2.1.2-preview-ee508d7c1
@metamask-previews/money-account-controller@0.3.3-preview-ee508d7c1
@metamask-previews/money-account-upgrade-controller@2.2.1-preview-ee508d7c1
@metamask-previews/multichain-account-service@12.0.0-preview-ee508d7c1
@metamask-previews/multichain-api-middleware@4.0.1-preview-ee508d7c1
@metamask-previews/multichain-network-controller@3.2.1-preview-ee508d7c1
@metamask-previews/multichain-transactions-controller@7.1.1-preview-ee508d7c1
@metamask-previews/name-controller@9.1.2-preview-ee508d7c1
@metamask-previews/network-connection-banner-controller@0.1.0-preview-ee508d7c1
@metamask-previews/network-controller@34.0.0-preview-ee508d7c1
@metamask-previews/network-enablement-controller@5.4.1-preview-ee508d7c1
@metamask-previews/notification-services-controller@25.0.0-preview-ee508d7c1
@metamask-previews/passkey-controller@2.0.1-preview-ee508d7c1
@metamask-previews/permission-controller@13.1.1-preview-ee508d7c1
@metamask-previews/permission-log-controller@5.1.0-preview-ee508d7c1
@metamask-previews/perps-controller@9.2.1-preview-ee508d7c1
@metamask-previews/phishing-controller@17.2.0-preview-ee508d7c1
@metamask-previews/platform-api-docs@0.0.0-preview-ee508d7c1
@metamask-previews/polling-controller@16.0.8-preview-ee508d7c1
@metamask-previews/preferences-controller@23.1.0-preview-ee508d7c1
@metamask-previews/profile-metrics-controller@4.0.1-preview-ee508d7c1
@metamask-previews/profile-sync-controller@28.2.0-preview-ee508d7c1
@metamask-previews/ramps-controller@15.1.0-preview-ee508d7c1
@metamask-previews/rate-limit-controller@7.0.1-preview-ee508d7c1
@metamask-previews/react-data-query@0.2.1-preview-ee508d7c1
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-ee508d7c1
@metamask-previews/sample-controllers@5.0.3-preview-ee508d7c1
@metamask-previews/seedless-onboarding-controller@10.0.3-preview-ee508d7c1
@metamask-previews/selected-network-controller@26.1.5-preview-ee508d7c1
@metamask-previews/shield-controller@5.1.2-preview-ee508d7c1
@metamask-previews/signature-controller@39.2.7-preview-ee508d7c1
@metamask-previews/smart-transactions-controller@25.0.0-preview-ee508d7c1
@metamask-previews/snap-account-service@2.0.0-preview-ee508d7c1
@metamask-previews/social-controllers@2.4.0-preview-ee508d7c1
@metamask-previews/solana-test-validator-up@1.0.0-preview-ee508d7c1
@metamask-previews/stellar-quickstart-up@0.0.0-preview-ee508d7c1
@metamask-previews/storage-service@1.0.2-preview-ee508d7c1
@metamask-previews/subscription-controller@6.2.0-preview-ee508d7c1
@metamask-previews/transaction-controller@68.3.0-preview-ee508d7c1
@metamask-previews/transaction-pay-controller@23.17.4-preview-ee508d7c1
@metamask-previews/user-operation-controller@41.2.6-preview-ee508d7c1
@metamask-previews/wallet@7.0.0-preview-ee508d7c1
@metamask-previews/wallet-cli@0.0.0-preview-ee508d7c1

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