Skip to content

Add external wallet filter and display #7669

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

joaquim-verges
Copy link
Member

@joaquim-verges joaquim-verges commented Jul 22, 2025

<!--

## title your PR with this format: "[Dashboard] Feature: Add External Wallet Search and Display"

## Notes for the reviewer

This PR introduces a new filter option for "External Wallet" on the `/wallets/users` page.
It allows searching users by their external wallet address (passed as `externalWalletAddress` to the `/list` endpoint).
Additionally, it displays linked external wallet addresses (specifically `siwe` type accounts) in the user list table, detailed search results, and includes them in the CSV export.

## How to test

1.  Navigate to the `/wallets/users` page in the dashboard.
2.  **Test Search Filter:**
    *   Select "External Wallet" from the search dropdown.
    *   Enter a known external wallet address associated with a user.
    *   Verify that the search results correctly filter and display the user(s).
    *   Click on a user in the search results to confirm the external wallet address is shown in the detailed card.
3.  **Test Table Display:**
    *   Observe the new "External Wallets" column in the main user table.
    *   Verify that users with linked SIWE accounts display their external wallet addresses (up to 2, with "+X more" for additional).
    *   Verify that users without external wallets show "None".
4.  **Test CSV Export:**
    *   Click the "Export CSV" button.
    *   Open the downloaded CSV file and confirm the presence of an "external_wallets" column containing the addresses.

-->

Open Background Agent:
Web · Cursor

Slack Thread

Learn more about Background Agents


PR-Codex overview

This PR introduces support for handling external wallet addresses in the user search functionality within the dashboard. It adds new types, updates the UI to display external wallets, and modifies search parameters to include external wallet queries.

Detailed summary

  • Added SearchType with a new option for "externalWallet".
  • Updated AdvancedSearchInput.tsx to include an option for "External Wallet".
  • Modified searchUsers.ts to append externalWalletAddress to the search URL.
  • Implemented logic in SearchResults.tsx to display external wallet addresses from linkedAccounts.
  • Created getExternalWallets function to filter linkedAccounts by type "siwe".
  • Updated InAppWalletUsersPageContent to show external wallets in the UI.
  • Enhanced CSV export to include external wallet addresses.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

Summary by CodeRabbit

  • New Features

    • Added "External Wallet" as a selectable search type in user search.
    • Users' external wallet addresses are now displayed in user details and as a new column in the users table.
    • CSV export now includes external wallet addresses.
  • Enhancements

    • Search now supports querying users by external wallet address.

@joaquim-verges joaquim-verges requested review from a team as code owners July 22, 2025 00:02
Copy link

changeset-bot bot commented Jul 22, 2025

⚠️ No Changeset found

Latest commit: fce5dea

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link

vercel bot commented Jul 22, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
thirdweb-www ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jul 22, 2025 3:42am
4 Skipped Deployments
Name Status Preview Comments Updated (UTC)
docs-v2 ⬜️ Skipped (Inspect) Jul 22, 2025 3:42am
nebula ⬜️ Skipped (Inspect) Jul 22, 2025 3:42am
thirdweb_playground ⬜️ Skipped (Inspect) Jul 22, 2025 3:42am
wallet-ui ⬜️ Skipped (Inspect) Jul 22, 2025 3:42am

Copy link
Contributor

coderabbitai bot commented Jul 22, 2025

Walkthrough

The changes add support for searching, displaying, and exporting users' external wallet addresses (specifically accounts of type "siwe") in the dashboard's wallet user management section. This includes UI updates to search options, result rendering, table columns, CSV export, and type definitions to accommodate the new "externalWallet" search type and data field.

Changes

File(s) Change Summary
.../AdvancedSearchInput.tsx, .../types.ts Added "External Wallet" as a new selectable search type in the UI dropdown; updated SearchType type to include "externalWallet".
.../searchUsers.ts Updated searchUsers to support the new "externalWallet" search type by appending the appropriate query parameter to requests.
.../SearchResults.tsx Enhanced user details card to extract and display external wallet addresses (type "siwe") under a new "External Wallets" section, using the existing WalletAddress component.
.../index.tsx Added helper getExternalWallets, new "External Wallets" column in the users table (showing up to two addresses, with "+N more" if applicable), and updated CSV export to include all external wallet addresses as a comma-separated string or "None" if empty.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant AdvancedSearchInput
    participant searchUsers
    participant Backend
    participant SearchResults

    User->>AdvancedSearchInput: Selects "External Wallet" search type and enters address
    AdvancedSearchInput->>searchUsers: Calls with searchType="externalWallet" and query
    searchUsers->>Backend: Sends request with ?externalWalletAddress=query
    Backend-->>searchUsers: Returns matching users
    searchUsers-->>SearchResults: Passes user data
    SearchResults->>SearchResults: Extracts external wallet accounts
    SearchResults-->>User: Displays users with external wallet addresses
Loading

Estimated code review effort

3 (~45 minutes)


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 81e6683 and fce5dea.

📒 Files selected for processing (3)
  • apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/SearchResults.tsx (2 hunks)
  • apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/index.tsx (3 hunks)
  • apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/types.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/SearchResults.tsx
  • apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/types.ts
  • apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/index.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: Size
  • GitHub Check: E2E Tests (pnpm, esbuild)
  • GitHub Check: Unit Tests
  • GitHub Check: E2E Tests (pnpm, vite)
  • GitHub Check: E2E Tests (pnpm, webpack)
  • GitHub Check: Build Packages
  • GitHub Check: Lint Packages
  • GitHub Check: Analyze (javascript)
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

graphite-app bot commented Jul 22, 2025

How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • merge-queue - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

@github-actions github-actions bot added the Dashboard Involves changes to the Dashboard. label Jul 22, 2025
Copy link

codecov bot commented Jul 22, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 56.39%. Comparing base (aac187a) to head (fce5dea).
Report is 2 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #7669   +/-   ##
=======================================
  Coverage   56.39%   56.39%           
=======================================
  Files         908      908           
  Lines       58244    58244           
  Branches     4224     4224           
=======================================
  Hits        32844    32844           
  Misses      25290    25290           
  Partials      110      110           
Flag Coverage Δ
packages 56.39% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Contributor

github-actions bot commented Jul 22, 2025

size-limit report 📦

Path Size Loading time (3g) Running time (snapdragon) Total time
thirdweb (esm) 63.23 KB (0%) 1.3 s (0%) 487 ms (+60.57% 🔺) 1.8 s
thirdweb (cjs) 353.45 KB (0%) 7.1 s (0%) 2.5 s (+2.56% 🔺) 9.6 s
thirdweb (minimal + tree-shaking) 5.7 KB (0%) 114 ms (0%) 147 ms (+684.01% 🔺) 261 ms
thirdweb/chains (tree-shaking) 526 B (0%) 11 ms (0%) 158 ms (+2367.09% 🔺) 169 ms
thirdweb/react (minimal + tree-shaking) 19.59 KB (0%) 392 ms (0%) 187 ms (+275.62% 🔺) 579 ms

@vercel vercel bot temporarily deployed to Preview – wallet-ui July 22, 2025 03:34 Inactive
@vercel vercel bot temporarily deployed to Preview – nebula July 22, 2025 03:34 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb_playground July 22, 2025 03:34 Inactive
@vercel vercel bot temporarily deployed to Preview – docs-v2 July 22, 2025 03:34 Inactive
@joaquim-verges joaquim-verges merged commit c0e7ae9 into main Jul 22, 2025
23 of 24 checks passed
@joaquim-verges joaquim-verges deleted the cursor/add-external-wallet-filter-and-display-9ff2 branch July 22, 2025 03:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Dashboard Involves changes to the Dashboard.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants