diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/index.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/index.tsx
index da1e0cfdff1..bec59030051 100644
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/index.tsx
+++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/index.tsx
@@ -36,6 +36,10 @@ const getUserIdentifier = (accounts: WalletUser["linkedAccounts"]) => {
);
};
+const getExternalWallets = (accounts: WalletUser["linkedAccounts"]) => {
+ return accounts?.filter((account) => account.type === "siwe") || [];
+};
+
const columnHelper = createColumnHelper();
export function InAppWalletUsersPageContent(
@@ -69,6 +73,36 @@ export function InAppWalletUsersPageContent(
header: "Address",
id: "address",
}),
+ columnHelper.accessor("linkedAccounts", {
+ cell: (cell) => {
+ const externalWallets = getExternalWallets(cell.getValue());
+ if (externalWallets.length === 0) {
+ return None;
+ }
+ return (
+
+ {externalWallets.slice(0, 2).map((account) => {
+ const address = account.details?.address as string | undefined;
+ return address ? (
+
+
+
+ ) : null;
+ })}
+ {externalWallets.length > 2 && (
+
+ +{externalWallets.length - 2} more
+
+ )}
+
+ );
+ },
+ header: "External Wallets",
+ id: "external_wallets",
+ }),
columnHelper.accessor("wallets", {
cell: (cell) => {
const value = cell.getValue()[0]?.createdAt;
@@ -172,11 +206,18 @@ export function InAppWalletUsersPageContent(
});
const csv = Papa.unparse(
usersWallets.map((row) => {
+ const externalWallets = getExternalWallets(row.linkedAccounts);
+ const externalWalletAddresses = externalWallets
+ .map((account) => account.details?.address)
+ .filter(Boolean)
+ .join(", ");
+
return {
address: row.wallets[0]?.address || "Uninitialized",
created: row.wallets[0]?.createdAt
? format(new Date(row.wallets[0].createdAt), "MMM dd, yyyy")
: "Wallet not created yet",
+ external_wallets: externalWalletAddresses || "None",
login_methods: row.linkedAccounts.map((acc) => acc.type).join(", "),
user_identifier: getUserIdentifier(row.linkedAccounts),
};
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/searchUsers.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/searchUsers.ts
index 3f60e0ae105..b772bab0c57 100644
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/searchUsers.ts
+++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/searchUsers.ts
@@ -33,6 +33,9 @@ export async function searchUsers(
case "address":
url.searchParams.append("address", query);
break;
+ case "externalWallet":
+ url.searchParams.append("externalWalletAddress", query);
+ break;
}
const response = await fetch(url.toString(), {
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/types.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/types.ts
index 207189d8897..fa825d6a8d1 100644
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/types.ts
+++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/components/types.ts
@@ -1 +1,6 @@
-export type SearchType = "email" | "phone" | "id" | "address";
+export type SearchType =
+ | "email"
+ | "phone"
+ | "id"
+ | "address"
+ | "externalWallet";