Skip to content

Commit 000d716

Browse files
author
Jade Hamilton
committed
feat: do auto from airdrop
1 parent 2ced951 commit 000d716

File tree

3 files changed

+169
-6
lines changed

3 files changed

+169
-6
lines changed

examples/ui-demo/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
"@account-kit/infra": "^4.2.0",
1717
"@account-kit/logging": "^4.2.0",
1818
"@account-kit/react": "^4.2.0",
19+
"@metaplex-foundation/umi": "^1.2.0",
20+
"@metaplex-foundation/umi-bundle-defaults": "^1.2.0",
21+
"@metaplex-foundation/umi-rpc-web3js": "^1.2.0",
1922
"@radix-ui/react-popover": "^1.0.7",
2023
"@radix-ui/react-select": "^2.1.2",
2124
"@radix-ui/react-switch": "^1.0.3",

examples/ui-demo/src/components/small-cards/SolanaNftCard.tsx

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { useToast } from "@/hooks/useToast";
22
import { useSolanaTransaction } from "@account-kit/react";
33
import {
4+
Connection,
45
Keypair,
56
LAMPORTS_PER_SOL,
67
PublicKey,
78
SystemProgram,
89
} from "@solana/web3.js";
9-
10+
import { sol } from "@metaplex-foundation/umi";
1011
import {
1112
ExtensionType,
1213
LENGTH_SIZE,
@@ -29,7 +30,7 @@ import { useState } from "react";
2930
import { useQuery, useQueryClient } from "@tanstack/react-query";
3031
import { UserAddressTooltip } from "../user-connection-avatar/UserAddressLink";
3132
import { ExternalLinkIcon } from "lucide-react";
32-
33+
import { createUmi } from "@metaplex-foundation/umi-bundle-defaults";
3334
type TransactionState = "idle" | "signing" | "sponsoring" | "complete";
3435
async function PK<T>(t: T) {
3536
return t;
@@ -171,6 +172,22 @@ export const SolanaNftCard = () => {
171172
}
172173
};
173174

175+
async function fundSol() {
176+
try {
177+
const publicKey = solanaSigner?.address;
178+
if (!publicKey) throw new Error("No public key found");
179+
const umi = createUmi(new Connection("https://api.devnet.solana.com"));
180+
await umi.rpc.airdrop(publicKey as any, sol(0.5));
181+
await new Promise((resolve) => setTimeout(resolve, 1000));
182+
await queryClient.invalidateQueries({
183+
queryKey: ["solanaBalance", solanaSigner?.address],
184+
});
185+
} catch (error) {
186+
console.log(error);
187+
window.open("https://faucet.solana.com/", "_blank");
188+
}
189+
}
190+
174191
const imageSlot = (
175192
<div className="w-full h-full bg-[#DCFCE7] flex justify-center items-center relative">
176193
<Image
@@ -249,7 +266,7 @@ export const SolanaNftCard = () => {
249266

250267
const nextButton =
251268
balance < 0.05 ? (
252-
<Button className="mt-auto w-full" onClick={openToSol}>
269+
<Button className="mt-auto w-full" onClick={fundSol}>
253270
Get SOL
254271
</Button>
255272
) : (
@@ -276,6 +293,3 @@ export const SolanaNftCard = () => {
276293
/>
277294
);
278295
};
279-
function openToSol() {
280-
window.open("https://faucet.solana.com/", "_blank");
281-
}

yarn.lock

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4092,6 +4092,135 @@
40924092
superstruct "^1.0.3"
40934093
uuid "^9.0.1"
40944094

4095+
"@metaplex-foundation/umi-bundle-defaults@^1.2.0":
4096+
version "1.2.0"
4097+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-bundle-defaults/-/umi-bundle-defaults-1.2.0.tgz#5f895cd3c9bbcd374a22733a2248654d4589d481"
4098+
integrity sha512-xbBxnvsADoC/L40HOvWWnrfE1q+7FCSwZ+LsYi3dWn8A93FhcI2gpxZ+Uqy+LzHDmGmuipdECbTRFdSBLMulBA==
4099+
dependencies:
4100+
"@metaplex-foundation/umi-downloader-http" "^1.2.0"
4101+
"@metaplex-foundation/umi-eddsa-web3js" "^1.0.1"
4102+
"@metaplex-foundation/umi-http-fetch" "^1.2.0"
4103+
"@metaplex-foundation/umi-program-repository" "^1.2.0"
4104+
"@metaplex-foundation/umi-rpc-chunk-get-accounts" "^1.2.0"
4105+
"@metaplex-foundation/umi-rpc-web3js" "^1.2.0"
4106+
"@metaplex-foundation/umi-serializer-data-view" "^1.2.0"
4107+
"@metaplex-foundation/umi-transaction-factory-web3js" "^1.2.0"
4108+
4109+
"@metaplex-foundation/umi-downloader-http@^1.2.0":
4110+
version "1.2.0"
4111+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-downloader-http/-/umi-downloader-http-1.2.0.tgz#067c57e71ac4d7d14736776374e60164c58a7438"
4112+
integrity sha512-voEu9BFePmPGkucZCIVDOGkkvBMuzkeHjkvmSP3E2i0YT5299HryR8sr7i9G4uNwKF/FIVdTw1qQnW61cpS2qQ==
4113+
4114+
"@metaplex-foundation/umi-eddsa-web3js@^1.0.1":
4115+
version "1.1.1"
4116+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-eddsa-web3js/-/umi-eddsa-web3js-1.1.1.tgz#a60ed2461c7f7c2a96d048cf7183a3b1faa308a1"
4117+
integrity sha512-rL22HATY7W02DqJLdBKZ8jedhMtd7iKReIFNPXLGnVeUpDwxXaqWPySZxZ+2TjY6f+Idoq2g2TpPCUGND/iOeA==
4118+
dependencies:
4119+
"@metaplex-foundation/umi-web3js-adapters" "1.1.1"
4120+
"@noble/curves" "^1.0.0"
4121+
yaml "^2.7.0"
4122+
4123+
"@metaplex-foundation/umi-http-fetch@^1.2.0":
4124+
version "1.2.0"
4125+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-http-fetch/-/umi-http-fetch-1.2.0.tgz#109b7a1f5dc6deff61baa932a5de26a695117508"
4126+
integrity sha512-rbM97PPCAmjbR90wnSCTxJFkCUIKR++gS5lIm+ZNZ96XrjvOrFURZpSYloyDGvXRNgF44eTYWDYIDLy5zmI2JQ==
4127+
dependencies:
4128+
node-fetch "^2.6.7"
4129+
4130+
"@metaplex-foundation/umi-options@^1.2.0":
4131+
version "1.2.0"
4132+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-options/-/umi-options-1.2.0.tgz#934fae509b15de9a02d8c06315a7fc24defe35bd"
4133+
integrity sha512-dNEfhDg9PUoosU46SnmB8PzdhgAF7qJ0RUkn5keLKU2s0Xy2DKZVtdaELTfMZZckhaDvOzRTKdphTRrEwIjbyw==
4134+
4135+
"@metaplex-foundation/umi-program-repository@^1.2.0":
4136+
version "1.2.0"
4137+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-program-repository/-/umi-program-repository-1.2.0.tgz#c770fbe20dc491118bab94436a5fb5766c17b600"
4138+
integrity sha512-mbsE0BPmqv3cMfk/jn+EKoUDJHbUieFcp8o2eRSkVBJhjXqkfLJgJ8s3koBn8vv5mcmavEBDqPYNqJQs93je0g==
4139+
4140+
"@metaplex-foundation/umi-public-keys@^1.2.0":
4141+
version "1.2.0"
4142+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-public-keys/-/umi-public-keys-1.2.0.tgz#ce970035b0975ca6728cc85dd084163b328898e8"
4143+
integrity sha512-UZISKLcrsAQ3M17JCkNIXtacoKHpSNEgXHGcxyJp7zfJkdLDq5Qlvd7KeyZoYC7A7XuA3lAlVY14qhhIwC5p5w==
4144+
dependencies:
4145+
"@metaplex-foundation/umi-serializers-encodings" "^1.2.0"
4146+
4147+
"@metaplex-foundation/umi-rpc-chunk-get-accounts@^1.2.0":
4148+
version "1.2.0"
4149+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-chunk-get-accounts/-/umi-rpc-chunk-get-accounts-1.2.0.tgz#46ce2b03ee6f7c106d178104c5a3579bbd58ed83"
4150+
integrity sha512-j5eSFmilDxIjw/uudZh6cvwIpwwp1vjW0XBFB7SLCDzsAHn4SaEq2j+Xwn3cvjKLBB0haJqHlMG9x35gXqBkqg==
4151+
4152+
"@metaplex-foundation/umi-rpc-web3js@^1.2.0":
4153+
version "1.2.0"
4154+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-web3js/-/umi-rpc-web3js-1.2.0.tgz#5f664628756d0f7ca4a92aa14640e23433eb33e4"
4155+
integrity sha512-nMWJA/v8gnhA3D2iBHSHWyS02YAL9zIhE8gxWufk56GY1fTo/jBp8HQrxI4PZH0E8A1fGnBZSU0SkL4lRm7Ljw==
4156+
dependencies:
4157+
"@metaplex-foundation/umi-web3js-adapters" "^1.2.0"
4158+
4159+
"@metaplex-foundation/umi-serializer-data-view@^1.2.0":
4160+
version "1.2.0"
4161+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializer-data-view/-/umi-serializer-data-view-1.2.0.tgz#1f0794537f651a8ea8c1f3a24d447ef63a79da4b"
4162+
integrity sha512-3w9WQzfrq851cIyvzcbEslJEL4oah3r/9Y/A2zyUwCsri5/3s/G0CcHgHPaS6/cvpyYybqBJjyJKMcGiVxzs8Q==
4163+
4164+
"@metaplex-foundation/umi-serializers-core@^1.2.0":
4165+
version "1.2.0"
4166+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-core/-/umi-serializers-core-1.2.0.tgz#6efd22ac44f8f531f8decfcb3ed3a4c843a62004"
4167+
integrity sha512-9scqhjkjW8tJ+/q1veh73jQjo9vvgTN5iN4OfOYFMtFVTT8/y2AVxGmniV/DbQC5wIgx7WTZkAnJmqOMs2904Q==
4168+
4169+
"@metaplex-foundation/umi-serializers-encodings@^1.2.0":
4170+
version "1.2.0"
4171+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-encodings/-/umi-serializers-encodings-1.2.0.tgz#59283ccd7c364e8ed701d61484e7361a9c22bd4f"
4172+
integrity sha512-Yo3TPI9ei8Z5eTJ1UeT12+pYaQ1zMSn57/M/3r4WAOTFtTCOuKsDRKg8eBQCpBuffH8yGUbRs0poy1n25IzeNg==
4173+
dependencies:
4174+
"@metaplex-foundation/umi-serializers-core" "^1.2.0"
4175+
4176+
"@metaplex-foundation/umi-serializers-numbers@^1.2.0":
4177+
version "1.2.0"
4178+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-numbers/-/umi-serializers-numbers-1.2.0.tgz#9d9b3af100b3026311731947954d9f53d814bc62"
4179+
integrity sha512-ZBVb498GHYlfB+1JzOcczJ1LrCYWr0IiiXjeEAf+64mSSp3IFwK7D3rjL6RZ05bjxBzuWDJVRzI+mFVFC9UgtQ==
4180+
dependencies:
4181+
"@metaplex-foundation/umi-serializers-core" "^1.2.0"
4182+
4183+
"@metaplex-foundation/umi-serializers@^1.2.0":
4184+
version "1.2.0"
4185+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers/-/umi-serializers-1.2.0.tgz#1038d609cc2a5037c210e4d96760b317eff9e931"
4186+
integrity sha512-7ivgqVP6ZouN13EBN5aMirjoX2x0Ja7IuzrBeIa8YYrxGcy7YQp+fUj4YCPtMClzsETgJ5jL8EZnZPpZX4dxaQ==
4187+
dependencies:
4188+
"@metaplex-foundation/umi-options" "^1.2.0"
4189+
"@metaplex-foundation/umi-public-keys" "^1.2.0"
4190+
"@metaplex-foundation/umi-serializers-core" "^1.2.0"
4191+
"@metaplex-foundation/umi-serializers-encodings" "^1.2.0"
4192+
"@metaplex-foundation/umi-serializers-numbers" "^1.2.0"
4193+
4194+
"@metaplex-foundation/umi-transaction-factory-web3js@^1.2.0":
4195+
version "1.2.0"
4196+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-transaction-factory-web3js/-/umi-transaction-factory-web3js-1.2.0.tgz#c595ed6520162e00ffe45c150e4fc59b0bd32c03"
4197+
integrity sha512-CDpx6KSYOEonWsHJEVUfZTzu3g0ElclUNgeAXhLyKzimS1fd7FvAkbFom6egQz6ZPuqGv/5ZTHQv37UxoGy+Zg==
4198+
dependencies:
4199+
"@metaplex-foundation/umi-web3js-adapters" "^1.2.0"
4200+
4201+
"@metaplex-foundation/umi-web3js-adapters@1.1.1":
4202+
version "1.1.1"
4203+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-web3js-adapters/-/umi-web3js-adapters-1.1.1.tgz#5afc9568ea3c4811ff5b1cbff16462c5eb33200d"
4204+
integrity sha512-UXP2aY3ce59nSxsVJ4sFLtGCHpesqLTxTag2yI6grCXe0dEz+1kONMn0XFRLcYgiSKOcptJSoJWbILlHnUsWDg==
4205+
dependencies:
4206+
buffer "^6.0.3"
4207+
4208+
"@metaplex-foundation/umi-web3js-adapters@^1.2.0":
4209+
version "1.2.0"
4210+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-web3js-adapters/-/umi-web3js-adapters-1.2.0.tgz#6114aed3831d32644e0a14c5c9506707e0446d5e"
4211+
integrity sha512-kKfsva8aoHTZXHbet6U/dV/va+hSFoVpqLiKFoUg3HV2Cp5IgdLXo2PH4/iN6AlE+S+a0S3+jt/7gat2rsskuw==
4212+
dependencies:
4213+
buffer "^6.0.3"
4214+
4215+
"@metaplex-foundation/umi@^1.2.0":
4216+
version "1.2.0"
4217+
resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi/-/umi-1.2.0.tgz#905ce9efb4c5baa3ab451cd2ca8545ebdc76b791"
4218+
integrity sha512-SIcDO8O9gRYL2C5ntsedVfpRBICK7ZoMB5ap8P5N2TEJ/QC205UxDzhdQsImdWQG1DQ7XJsDXWiiFzccpFZcSg==
4219+
dependencies:
4220+
"@metaplex-foundation/umi-options" "^1.2.0"
4221+
"@metaplex-foundation/umi-public-keys" "^1.2.0"
4222+
"@metaplex-foundation/umi-serializers" "^1.2.0"
4223+
40954224
"@motionone/animation@^10.15.1", "@motionone/animation@^10.16.3":
40964225
version "10.16.3"
40974226
resolved "https://registry.npmjs.org/@motionone/animation/-/animation-10.16.3.tgz"
@@ -4308,6 +4437,13 @@
43084437
dependencies:
43094438
"@noble/hashes" "1.6.0"
43104439

4440+
"@noble/curves@^1.0.0":
4441+
version "1.9.0"
4442+
resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.0.tgz#13e0ca8be4a0ce66c113693a94514e5599f40cfc"
4443+
integrity sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==
4444+
dependencies:
4445+
"@noble/hashes" "1.8.0"
4446+
43114447
"@noble/curves@^1.3.0":
43124448
version "1.3.0"
43134449
resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz"
@@ -4359,6 +4495,11 @@
43594495
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.1.tgz#5738f6d765710921e7a751e00c20ae091ed8db0f"
43604496
integrity sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==
43614497

4498+
"@noble/hashes@1.8.0":
4499+
version "1.8.0"
4500+
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a"
4501+
integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==
4502+
43624503
"@nodelib/fs.scandir@2.1.5":
43634504
version "2.1.5"
43644505
resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
@@ -27406,6 +27547,11 @@ yaml@^2.2.2:
2740627547
resolved "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz"
2740727548
integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==
2740827549

27550+
yaml@^2.7.0:
27551+
version "2.7.1"
27552+
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.1.tgz#44a247d1b88523855679ac7fa7cda6ed7e135cf6"
27553+
integrity sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==
27554+
2740927555
yargs-parser@21.1.1, yargs-parser@^21.1.1:
2741027556
version "21.1.1"
2741127557
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"

0 commit comments

Comments
 (0)