Skip to content

Commit ae3114b

Browse files
cursoragentprithvish
andcommitted
Refactor: Improve Solana wallet data handling and typing
Co-authored-by: prithvish <[email protected]>
1 parent efc9bc0 commit ae3114b

File tree

3 files changed

+29
-14
lines changed

3 files changed

+29
-14
lines changed

apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,11 @@ export default async function TransactionsAnalyticsPage(props: {
8989
managementAccessToken,
9090
page: solanCurrentPage,
9191
limit: pageSize,
92+
projectId: project.id,
9293
})
9394
: { data: { items: [], totalRecords: 0 }, error: null, success: true };
9495

95-
const solanaWallets = solanaAccounts.data?.items as
96-
| SolanaWallet[]
97-
| undefined;
96+
const solanaWallets = solanaAccounts.data?.items;
9897

9998
const initialData = await getTransactionAnalyticsSummary({
10099
clientId: project.publishableKey,
@@ -202,7 +201,7 @@ export default async function TransactionsAnalyticsPage(props: {
202201
teamSlug={params.team_slug}
203202
totalPages={Math.ceil(solanaAccounts.data.totalRecords / pageSize)}
204203
totalRecords={solanaAccounts.data.totalRecords}
205-
wallets={solanaAccounts.data.items as SolanaWallet[]}
204+
wallets={solanaAccounts.data.items}
206205
/>
207206
)}
208207
</div>

apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/solana-wallets/lib/vault.client.ts

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
import type { Project } from "@/api/project/projects";
44
import { NEXT_PUBLIC_THIRDWEB_VAULT_URL } from "@/constants/public-envs";
5+
import type { SolanaWallet } from "../wallet-table/types";
56

6-
interface SolanaAccount {
7+
interface SolanaAccountResponse {
78
publicKey: string;
89
label: string;
910
createdAt: string;
@@ -12,7 +13,7 @@ interface SolanaAccount {
1213

1314
interface ListSolanaAccountsResponse {
1415
result: {
15-
accounts: SolanaAccount[];
16+
accounts: SolanaAccountResponse[];
1617
pagination: {
1718
totalCount: number;
1819
page: number;
@@ -25,15 +26,16 @@ export async function listSolanaAccounts(params: {
2526
managementAccessToken: string;
2627
page?: number;
2728
limit?: number;
29+
projectId?: string;
2830
}): Promise<{
2931
data: {
30-
items: SolanaAccount[];
32+
items: SolanaWallet[];
3133
totalRecords: number;
3234
};
3335
error: Error | null;
3436
success: boolean;
3537
}> {
36-
const { managementAccessToken, page = 1, limit = 100 } = params;
38+
const { managementAccessToken, page = 1, limit = 100, projectId } = params;
3739

3840
try {
3941
const url = new URL(`/v1/solana/accounts`, NEXT_PUBLIC_THIRDWEB_VAULT_URL);
@@ -55,9 +57,24 @@ export async function listSolanaAccounts(params: {
5557

5658
const data = (await response.json()) as ListSolanaAccountsResponse;
5759

60+
// Transform the response to match SolanaWallet type
61+
const wallets: SolanaWallet[] = data.result.accounts.map(
62+
(account, index) => ({
63+
id: `${account.publicKey}-${index}`, // Generate ID from publicKey
64+
publicKey: account.publicKey,
65+
metadata: {
66+
type: "solana-wallet",
67+
projectId: projectId || "",
68+
label: account.label,
69+
},
70+
createdAt: account.createdAt,
71+
updatedAt: account.updatedAt,
72+
}),
73+
);
74+
5875
return {
5976
data: {
60-
items: data.result.accounts,
77+
items: wallets,
6178
totalRecords: data.result.pagination.totalCount,
6279
},
6380
error: null,
@@ -79,7 +96,7 @@ export async function createSolanaAccount(params: {
7996
managementAccessToken: string;
8097
label: string;
8198
}): Promise<{
82-
data: SolanaAccount | null;
99+
data: SolanaAccountResponse | null;
83100
error: Error | null;
84101
success: boolean;
85102
}> {
@@ -103,7 +120,7 @@ export async function createSolanaAccount(params: {
103120
);
104121
}
105122

106-
const data = (await response.json()) as { result: SolanaAccount };
123+
const data = (await response.json()) as { result: SolanaAccountResponse };
107124

108125
return {
109126
data: data.result,

apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/solana-wallets/wallet-table/wallet-table-ui.client.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,8 @@ function SolanaWalletTableRow(props: {
230230
// Get the project Solana wallet public key
231231
const engineCloudService = project.services.find(
232232
(service: { name: string }) => service.name === "engineCloud",
233-
);
234-
const defaultWalletPublicKey =
235-
engineCloudService?.projectSolanaWalletPublicKey;
233+
) as { projectSolanaWalletPublicKey?: string } | undefined;
234+
const defaultWalletPublicKey = engineCloudService?.projectSolanaWalletPublicKey;
236235
const isDefaultWallet =
237236
defaultWalletPublicKey &&
238237
wallet.publicKey.toLowerCase() === defaultWalletPublicKey.toLowerCase();

0 commit comments

Comments
 (0)