Skip to content

Conversation

@caveman-eth
Copy link
Collaborator

@caveman-eth caveman-eth commented Oct 31, 2025

Adds support for fetching and managing Ethereum Follow Protocol (EFP) followings in the wallet service

Relating to: status-im/status-desktop#18686
and status-desktop PR: status-im/status-desktop#19195

Screenshot:
efp

Complete video demo:
https://streamable.com/3y4s1f

Changes:

New EFP Client (services/wallet/thirdparty/efp/):

  • HTTP client for api.ethfollow.xyz
  • Pagination support (limit/offset parameters)
  • Server-side search via /searchFollowing endpoint
  • Stats endpoint for total following count
  • ENS name and avatar resolution included in responses

Following Manager (services/wallet/following/):

  • Provider coordination layer
  • Support for multiple data providers (extensible)
  • Error handling and logging

RPC API (services/wallet/api.go):

  • wallet_GetFollowingAddresses(userAddress, search, limit, offset) - fetch following addresses with optional search and pagination
  • wallet_GetFollowingStats(userAddress) - get total following count

Tests:

  • client_test.go - 6 unit tests for HTTP client (pagination, search, stats, error handling)
  • manager_test.go - 5 unit tests for manager (success cases, provider errors, edge cases)
  • Mock generation via gomock for testing

API Endpoints Used

  • GET /users/{address}/following?include=ens&limit={limit}&offset={offset}&sort=latest
  • GET /users/{address}/searchFollowing?include=ens&sort=latest&term={search}
  • GET /users/{address}/stats

@caveman-eth caveman-eth changed the title feat: add basic EFP (Ethereum Follow Protocol) integration for wallet feat: add EFP (Ethereum Follow Protocol) integration for wallet Oct 31, 2025
@caveman-eth caveman-eth marked this pull request as ready for review October 31, 2025 21:49
@caveman-eth
Copy link
Collaborator Author

Copy link
Member

@jrainville jrainville left a comment

Choose a reason for hiding this comment

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

Awesome work! Looks very good.

You'll have to rebase and fix some lint issues I think

@jrainville
Copy link
Member

ah, also commits need to follow conventional commit format, eg feat: add EFP following address support

@igor-sirotin
Copy link
Collaborator

@caveman-eth I have sent you an Github invite for collaborator. Please accept and rebase to trigger the CI 🙂

@status-im-auto
Copy link
Member

status-im-auto commented Nov 7, 2025

Jenkins Builds

Click to see older builds (17)
Commit #️⃣ Finished (UTC) Duration Platform Result
01b5993 #1 2025-11-07 17:18:15 ~1 min macos/status-go 📄log
✔️ 01b5993 #1 2025-11-07 17:25:11 ~7 min windows/status-go 📦zip
01b5993 #1 2025-11-07 17:49:33 ~32 min linux/status-go 📄log
01b5993 #1 2025-11-07 17:49:40 ~32 min linux/nwaku 📄log
✖️ 01b5993 #1 2025-11-07 17:50:46 ~33 min tests-rpc 📄log
✖️ 01b5993 #1 2025-11-07 17:51:05 ~33 min tests 📄log
c00dcd6 #2 2025-11-07 17:19:56 ~58 sec macos/status-go 📄log
✔️ c00dcd6 #2 2025-11-07 17:35:27 ~10 min windows/status-go 📦zip
c00dcd6 #2 2025-11-07 18:01:05 ~11 min linux/status-go 📄log
c00dcd6 #2 2025-11-07 18:01:34 ~11 min linux/nwaku 📄log
✖️ c00dcd6 #2 2025-11-07 18:02:02 ~11 min tests-rpc 📄log
✖️ c00dcd6 #2 2025-11-07 18:02:46 ~11 min tests 📄log
84ee4b3 #3 2025-11-07 18:14:24 ~1 min macos/status-go 📄log
84ee4b3 #3 2025-11-07 18:14:26 ~1 min linux/nwaku 📄log
84ee4b3 #3 2025-11-07 18:14:27 ~1 min linux/status-go 📄log
✖️ 84ee4b3 #3 2025-11-07 18:14:36 ~1 min tests-rpc 📄log
✖️ 84ee4b3 #3 2025-11-07 18:14:41 ~1 min tests 📄log
Commit #️⃣ Finished (UTC) Duration Platform Result
f957022 #4 2025-11-07 18:15:34 ~1 min macos/status-go 📄log
f957022 #4 2025-11-07 18:15:41 ~1 min linux/nwaku 📄log
✖️ f957022 #4 2025-11-07 18:15:43 ~58 sec tests-rpc 📄log
f957022 #4 2025-11-07 18:15:46 ~1 min linux/status-go 📄log
✖️ f957022 #4 2025-11-07 18:15:51 ~1 min tests 📄log
✔️ f957022 #4 2025-11-07 18:20:43 ~6 min windows/status-go 📦zip
✔️ 286a3ab #5 2025-11-07 18:42:03 ~3 min linux/status-go 📦zip
✔️ 286a3ab #5 2025-11-07 18:42:09 ~3 min macos/status-go 📦zip
✔️ 286a3ab #5 2025-11-07 18:46:10 ~7 min windows/status-go 📦zip
✔️ 286a3ab #5 2025-11-07 18:49:12 ~10 min linux/nwaku 📦zip
✔️ 286a3ab #5 2025-11-07 18:51:21 ~12 min tests-rpc 📄log
✔️ 286a3ab #5 2025-11-07 19:08:17 ~29 min tests 📄log

Introduces Ethereum Follow Protocol (EFP) integration for fetching following addresses and stats. Adds a following manager, EFP client, and related API endpoints, along with tests for both manager and client functionality.
Changed the go:generate directive to explicitly use 'go tool mockgen' instead of just 'mockgen' for generating mocks. This may improve compatibility or clarity in environments where the tool is not globally installed.
@codecov
Copy link

codecov bot commented Nov 7, 2025

Codecov Report

❌ Patch coverage is 69.94220% with 52 lines in your changes missing coverage. Please review.
✅ Project coverage is 59.63%. Comparing base (60cd348) to head (286a3ab).

Files with missing lines Patch % Lines
services/wallet/thirdparty/efp/client.go 74.11% 14 Missing and 8 partials ⚠️
services/wallet/api.go 0.00% 19 Missing ⚠️
services/wallet/following/manager.go 81.96% 8 Missing and 3 partials ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #7052      +/-   ##
===========================================
- Coverage    59.68%   59.63%   -0.05%     
===========================================
  Files          804      806       +2     
  Lines       114076   114249     +173     
===========================================
+ Hits         68081    68129      +48     
- Misses       39066    39159      +93     
- Partials      6929     6961      +32     
Flag Coverage Δ
functional 34.52% <15.60%> (-0.09%) ⬇️
unit 55.50% <69.94%> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
services/wallet/service.go 76.81% <100.00%> (+0.44%) ⬆️
services/wallet/following/manager.go 81.96% <81.96%> (ø)
services/wallet/api.go 28.21% <0.00%> (-1.09%) ⬇️
services/wallet/thirdparty/efp/client.go 74.11% <74.11%> (ø)

... and 34 files with indirect coverage changes

@caveman-eth
Copy link
Collaborator Author

@caveman-eth I have sent you an Github invite for collaborator. Please accept and rebase to trigger the CI 🙂

Great, looks like everything is passing now

Awesome work! Looks very good.

You'll have to rebase and fix some lint issues I think

I think everything is right now :)

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.

4 participants