Skip to content

Commit b015153

Browse files
committed
Add Solana network selection to wallets table
Introduces a network selector for Solana (mainnet/devnet) in the server wallets table, passing the selected network to wallet row and balance components. Also updates the create Solana wallet button styling for consistency.
1 parent cfd93ea commit b015153

File tree

2 files changed

+47
-8
lines changed

2 files changed

+47
-8
lines changed

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

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ import {
4040
PaginationNext,
4141
PaginationPrevious,
4242
} from "@/components/ui/pagination";
43+
import {
44+
Select,
45+
SelectContent,
46+
SelectItem,
47+
SelectTrigger,
48+
SelectValue,
49+
} from "@/components/ui/select";
4350
import { Skeleton } from "@/components/ui/skeleton";
4451
import { Switch } from "@/components/ui/switch";
4552
import {
@@ -102,6 +109,9 @@ export function ServerWalletsTable(props: ServerWalletsTableProps) {
102109

103110
const [activeChain, setActiveChain] = useState<WalletChain>("evm");
104111
const [selectedChainId, setSelectedChainId] = useState<number>(1);
112+
const [selectedSolanaChain, setSelectedSolanaChain] = useState<
113+
"solana:mainnet" | "solana:devnet"
114+
>("solana:mainnet");
105115
const [showSmartAccount, setShowSmartAccount] = useState(false);
106116
const queryClient = useQueryClient();
107117

@@ -148,11 +158,33 @@ export function ServerWalletsTable(props: ServerWalletsTableProps) {
148158
</>
149159
)}
150160
{activeChain === "solana" && (
151-
<CreateSolanaWallet
152-
project={project}
153-
teamSlug={teamSlug}
154-
disabled={solanaPermissionError}
155-
/>
161+
<>
162+
<CreateSolanaWallet
163+
project={project}
164+
teamSlug={teamSlug}
165+
disabled={solanaPermissionError}
166+
/>
167+
<Select
168+
value={selectedSolanaChain}
169+
onValueChange={(value) =>
170+
setSelectedSolanaChain(
171+
value as "solana:mainnet" | "solana:devnet",
172+
)
173+
}
174+
>
175+
<SelectTrigger className="w-fit min-w-[180px] rounded-full bg-background hover:bg-accent/50">
176+
<SelectValue placeholder="Select network" />
177+
</SelectTrigger>
178+
<SelectContent className="rounded-xl">
179+
<SelectItem value="solana:mainnet" className="rounded-lg">
180+
Solana Mainnet
181+
</SelectItem>
182+
<SelectItem value="solana:devnet" className="rounded-lg">
183+
Solana Devnet
184+
</SelectItem>
185+
</SelectContent>
186+
</Select>
187+
</>
156188
)}
157189
</div>
158190

@@ -282,6 +314,7 @@ export function ServerWalletsTable(props: ServerWalletsTableProps) {
282314
teamSlug={teamSlug}
283315
client={client}
284316
authToken={authToken}
317+
chainId={selectedSolanaChain}
285318
/>
286319
))}
287320
</TableBody>
@@ -512,12 +545,14 @@ function SolanaWalletRow({
512545
teamSlug,
513546
client,
514547
authToken,
548+
chainId,
515549
}: {
516550
wallet: SolanaWallet;
517551
project: Project;
518552
teamSlug: string;
519553
client: ThirdwebClient;
520554
authToken: string;
555+
chainId: "solana:mainnet" | "solana:devnet";
521556
}) {
522557
const engineService = project.services.find(
523558
(s) => s.name === "engineCloud",
@@ -557,6 +592,7 @@ function SolanaWalletRow({
557592
publicKey={wallet.publicKey}
558593
authToken={authToken}
559594
clientId={project.publishableKey}
595+
chainId={chainId}
560596
/>
561597
</TableCell>
562598

@@ -753,20 +789,23 @@ function SolanaWalletBalance({
753789
publicKey,
754790
authToken,
755791
clientId,
792+
chainId,
756793
}: {
757794
publicKey: string;
758795
authToken: string;
759796
clientId: string;
797+
chainId: "solana:mainnet" | "solana:devnet";
760798
}) {
761799
const balance = useQuery({
762800
queryFn: async () => {
763801
return await fetchSolanaBalance({
764802
publicKey,
765803
authToken,
766804
clientId,
805+
chainId,
767806
});
768807
},
769-
queryKey: ["solanaWalletBalance", publicKey],
808+
queryKey: ["solanaWalletBalance", publicKey, chainId],
770809
});
771810

772811
if (balance.isFetching) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ export function CreateSolanaWallet(props: {
7070
<Dialog open={open} onOpenChange={setOpen}>
7171
<DialogTrigger asChild>
7272
<Button
73-
variant="default"
74-
className="gap-2 rounded-full bg-foreground hover:bg-foreground/90"
73+
variant="outline"
74+
className="gap-1.5 rounded-full bg-background text-foreground"
7575
disabled={props.disabled}
7676
>
7777
<PlusIcon className="size-4" />

0 commit comments

Comments
 (0)