@phantom/react-sdk 1.0.0 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -4
- package/dist/index.js +14 -15
- package/dist/index.mjs +14 -15
- package/package.json +10 -10
package/README.md
CHANGED
|
@@ -792,7 +792,8 @@ function SolanaOperations() {
|
|
|
792
792
|
const connection = new Connection("https://api.mainnet-beta.solana.com");
|
|
793
793
|
const { blockhash } = await connection.getLatestBlockhash();
|
|
794
794
|
|
|
795
|
-
const fromAddress =
|
|
795
|
+
const fromAddress = solana.publicKey;
|
|
796
|
+
if (!fromAddress) throw new Error("Not connected");
|
|
796
797
|
const transferInstruction = SystemProgram.transfer({
|
|
797
798
|
fromPubkey: new PublicKey(fromAddress),
|
|
798
799
|
toPubkey: new PublicKey(toAddress),
|
|
@@ -833,7 +834,7 @@ function SolanaOperations() {
|
|
|
833
834
|
- `signTransaction(transaction)` - Sign without sending
|
|
834
835
|
- `signAndSendTransaction(transaction)` - Sign and send
|
|
835
836
|
- `switchNetwork(network)` - Switch between mainnet/devnet
|
|
836
|
-
- `
|
|
837
|
+
- `publicKey` - Current public key (or `null` if disconnected)
|
|
837
838
|
- `isConnected` - Connection status
|
|
838
839
|
- `isAvailable` - Provider availability (see note below)
|
|
839
840
|
|
|
@@ -1163,7 +1164,8 @@ function SolanaExample() {
|
|
|
1163
1164
|
const { blockhash } = await connection.getLatestBlockhash();
|
|
1164
1165
|
|
|
1165
1166
|
// Create transfer instruction
|
|
1166
|
-
const fromAddress =
|
|
1167
|
+
const fromAddress = solana.publicKey;
|
|
1168
|
+
if (!fromAddress) throw new Error("Not connected");
|
|
1167
1169
|
const transferInstruction = SystemProgram.transfer({
|
|
1168
1170
|
fromPubkey: new PublicKey(fromAddress),
|
|
1169
1171
|
toPubkey: new PublicKey(toAddress),
|
|
@@ -1209,7 +1211,8 @@ function SolanaKitExample() {
|
|
|
1209
1211
|
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
|
|
1210
1212
|
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
|
|
1211
1213
|
|
|
1212
|
-
const userPublicKey =
|
|
1214
|
+
const userPublicKey = solana.publicKey;
|
|
1215
|
+
if (!userPublicKey) throw new Error("Not connected");
|
|
1213
1216
|
const transactionMessage = pipe(
|
|
1214
1217
|
createTransactionMessage({ version: 0 }),
|
|
1215
1218
|
tx => setTransactionMessageFeePayer(address(userPublicKey), tx),
|
package/dist/index.js
CHANGED
|
@@ -210,20 +210,14 @@ function useDiscoveredWallets() {
|
|
|
210
210
|
try {
|
|
211
211
|
setIsLoading(true);
|
|
212
212
|
setError(null);
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
setIsLoading(false);
|
|
217
|
-
} else {
|
|
218
|
-
await sdk.discoverWallets();
|
|
219
|
-
const discoveredWallets = sdk.getDiscoveredWallets();
|
|
220
|
-
setWallets(discoveredWallets);
|
|
221
|
-
setIsLoading(false);
|
|
222
|
-
}
|
|
213
|
+
await sdk.discoverWallets();
|
|
214
|
+
const discoveredWallets = sdk.getDiscoveredWallets();
|
|
215
|
+
setWallets(discoveredWallets);
|
|
223
216
|
} catch (err) {
|
|
224
217
|
const error2 = err instanceof Error ? err : new Error("Failed to fetch discovered wallets");
|
|
225
218
|
setError(error2);
|
|
226
219
|
setWallets([]);
|
|
220
|
+
} finally {
|
|
227
221
|
setIsLoading(false);
|
|
228
222
|
}
|
|
229
223
|
}, [sdk]);
|
|
@@ -318,7 +312,8 @@ function ConnectModalContent({
|
|
|
318
312
|
const isConnectingState = baseConnect.isConnecting || isConnecting;
|
|
319
313
|
const errorState = baseConnect.error ? baseConnect.error.message : error;
|
|
320
314
|
const showDivider = !(allowedProviders.length === 1 && allowedProviders.includes("injected"));
|
|
321
|
-
const
|
|
315
|
+
const isInjectedOnly = allowedProviders.length === 1 && allowedProviders.includes("injected");
|
|
316
|
+
const shouldShowOtherWalletsButton = !isInjectedOnly && discoveredWallets.length > 2;
|
|
322
317
|
const walletsToShowInline = shouldShowOtherWalletsButton ? [] : discoveredWallets;
|
|
323
318
|
const connectWithAuthProvider = (0, import_react5.useCallback)(
|
|
324
319
|
async (provider, walletId) => {
|
|
@@ -587,7 +582,7 @@ function ConnectModalContent({
|
|
|
587
582
|
] })
|
|
588
583
|
}
|
|
589
584
|
),
|
|
590
|
-
allowedProviders.includes("injected") && (isExtensionInstalled.isInstalled || discoveredWallets.length > 0) &&
|
|
585
|
+
allowedProviders.includes("injected") && (isExtensionInstalled.isInstalled || discoveredWallets.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
|
|
591
586
|
showDivider && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: dividerStyle, children: [
|
|
592
587
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: dividerLineStyle }),
|
|
593
588
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: dividerTextStyle, children: "OR" }),
|
|
@@ -839,9 +834,10 @@ function PhantomProvider({ children, config, debugConfig, theme, appIcon, appNam
|
|
|
839
834
|
try {
|
|
840
835
|
setIsConnected(true);
|
|
841
836
|
setIsConnecting(false);
|
|
842
|
-
setUser(data);
|
|
843
837
|
const addrs = await sdk.getAddresses();
|
|
844
838
|
setAddresses(addrs);
|
|
839
|
+
const normalizedUser = data ?? { addresses: addrs };
|
|
840
|
+
setUser(normalizedUser);
|
|
845
841
|
} catch (err) {
|
|
846
842
|
console.error("Error connecting:", err);
|
|
847
843
|
try {
|
|
@@ -854,11 +850,14 @@ function PhantomProvider({ children, config, debugConfig, theme, appIcon, appNam
|
|
|
854
850
|
const handleConnectError = (errorData) => {
|
|
855
851
|
setIsConnecting(false);
|
|
856
852
|
setIsConnected(false);
|
|
857
|
-
const isAutoConnectNoSession = errorData
|
|
853
|
+
const isAutoConnectNoSession = errorData?.source === "auto-connect" && (errorData?.error === "No valid session found" || errorData?.error === "No trusted connections available");
|
|
858
854
|
if (isAutoConnectNoSession) {
|
|
859
855
|
setErrors((prev) => ({ ...prev, connect: void 0 }));
|
|
860
856
|
} else {
|
|
861
|
-
setErrors((prev) => ({
|
|
857
|
+
setErrors((prev) => ({
|
|
858
|
+
...prev,
|
|
859
|
+
connect: new Error(errorData?.error || "Connection failed")
|
|
860
|
+
}));
|
|
862
861
|
}
|
|
863
862
|
setAddresses([]);
|
|
864
863
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -161,20 +161,14 @@ function useDiscoveredWallets() {
|
|
|
161
161
|
try {
|
|
162
162
|
setIsLoading(true);
|
|
163
163
|
setError(null);
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
setIsLoading(false);
|
|
168
|
-
} else {
|
|
169
|
-
await sdk.discoverWallets();
|
|
170
|
-
const discoveredWallets = sdk.getDiscoveredWallets();
|
|
171
|
-
setWallets(discoveredWallets);
|
|
172
|
-
setIsLoading(false);
|
|
173
|
-
}
|
|
164
|
+
await sdk.discoverWallets();
|
|
165
|
+
const discoveredWallets = sdk.getDiscoveredWallets();
|
|
166
|
+
setWallets(discoveredWallets);
|
|
174
167
|
} catch (err) {
|
|
175
168
|
const error2 = err instanceof Error ? err : new Error("Failed to fetch discovered wallets");
|
|
176
169
|
setError(error2);
|
|
177
170
|
setWallets([]);
|
|
171
|
+
} finally {
|
|
178
172
|
setIsLoading(false);
|
|
179
173
|
}
|
|
180
174
|
}, [sdk]);
|
|
@@ -269,7 +263,8 @@ function ConnectModalContent({
|
|
|
269
263
|
const isConnectingState = baseConnect.isConnecting || isConnecting;
|
|
270
264
|
const errorState = baseConnect.error ? baseConnect.error.message : error;
|
|
271
265
|
const showDivider = !(allowedProviders.length === 1 && allowedProviders.includes("injected"));
|
|
272
|
-
const
|
|
266
|
+
const isInjectedOnly = allowedProviders.length === 1 && allowedProviders.includes("injected");
|
|
267
|
+
const shouldShowOtherWalletsButton = !isInjectedOnly && discoveredWallets.length > 2;
|
|
273
268
|
const walletsToShowInline = shouldShowOtherWalletsButton ? [] : discoveredWallets;
|
|
274
269
|
const connectWithAuthProvider = useCallback3(
|
|
275
270
|
async (provider, walletId) => {
|
|
@@ -538,7 +533,7 @@ function ConnectModalContent({
|
|
|
538
533
|
] })
|
|
539
534
|
}
|
|
540
535
|
),
|
|
541
|
-
allowedProviders.includes("injected") && (isExtensionInstalled.isInstalled || discoveredWallets.length > 0) &&
|
|
536
|
+
allowedProviders.includes("injected") && (isExtensionInstalled.isInstalled || discoveredWallets.length > 0) && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
542
537
|
showDivider && /* @__PURE__ */ jsxs("div", { style: dividerStyle, children: [
|
|
543
538
|
/* @__PURE__ */ jsx2("div", { style: dividerLineStyle }),
|
|
544
539
|
/* @__PURE__ */ jsx2("span", { style: dividerTextStyle, children: "OR" }),
|
|
@@ -790,9 +785,10 @@ function PhantomProvider({ children, config, debugConfig, theme, appIcon, appNam
|
|
|
790
785
|
try {
|
|
791
786
|
setIsConnected(true);
|
|
792
787
|
setIsConnecting(false);
|
|
793
|
-
setUser(data);
|
|
794
788
|
const addrs = await sdk.getAddresses();
|
|
795
789
|
setAddresses(addrs);
|
|
790
|
+
const normalizedUser = data ?? { addresses: addrs };
|
|
791
|
+
setUser(normalizedUser);
|
|
796
792
|
} catch (err) {
|
|
797
793
|
console.error("Error connecting:", err);
|
|
798
794
|
try {
|
|
@@ -805,11 +801,14 @@ function PhantomProvider({ children, config, debugConfig, theme, appIcon, appNam
|
|
|
805
801
|
const handleConnectError = (errorData) => {
|
|
806
802
|
setIsConnecting(false);
|
|
807
803
|
setIsConnected(false);
|
|
808
|
-
const isAutoConnectNoSession = errorData
|
|
804
|
+
const isAutoConnectNoSession = errorData?.source === "auto-connect" && (errorData?.error === "No valid session found" || errorData?.error === "No trusted connections available");
|
|
809
805
|
if (isAutoConnectNoSession) {
|
|
810
806
|
setErrors((prev) => ({ ...prev, connect: void 0 }));
|
|
811
807
|
} else {
|
|
812
|
-
setErrors((prev) => ({
|
|
808
|
+
setErrors((prev) => ({
|
|
809
|
+
...prev,
|
|
810
|
+
connect: new Error(errorData?.error || "Connection failed")
|
|
811
|
+
}));
|
|
813
812
|
}
|
|
814
813
|
setAddresses([]);
|
|
815
814
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phantom/react-sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/phantom/phantom-connect-sdk",
|
|
@@ -31,31 +31,31 @@
|
|
|
31
31
|
"prettier": "prettier --write \"src/**/*.{ts,tsx}\""
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@phantom/browser-sdk": "^1.0.
|
|
35
|
-
"@phantom/chain-interfaces": "^1.0.
|
|
36
|
-
"@phantom/constants": "^1.0.
|
|
37
|
-
"@phantom/wallet-sdk-ui": "^1.0.
|
|
34
|
+
"@phantom/browser-sdk": "^1.0.3",
|
|
35
|
+
"@phantom/chain-interfaces": "^1.0.3",
|
|
36
|
+
"@phantom/constants": "^1.0.3",
|
|
37
|
+
"@phantom/wallet-sdk-ui": "^1.0.3"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@testing-library/dom": "^10.4.0",
|
|
41
41
|
"@testing-library/jest-dom": "^6.9.1",
|
|
42
42
|
"@testing-library/react": "^16.3.0",
|
|
43
43
|
"@types/jest": "^29.5.14",
|
|
44
|
-
"@types/react": "^19.1
|
|
45
|
-
"@types/react-dom": "^19.1
|
|
44
|
+
"@types/react": "^19.0.1",
|
|
45
|
+
"@types/react-dom": "^19.0.1",
|
|
46
46
|
"eslint": "8.53.0",
|
|
47
47
|
"jest": "^29.7.0",
|
|
48
48
|
"jest-environment-jsdom": "^29.7.0",
|
|
49
49
|
"prettier": "^3.5.2",
|
|
50
|
-
"react": "19.0.
|
|
51
|
-
"react-dom": "19.0.
|
|
50
|
+
"react": "19.0.1",
|
|
51
|
+
"react-dom": "19.0.1",
|
|
52
52
|
"rimraf": "^6.0.1",
|
|
53
53
|
"ts-jest": "^29",
|
|
54
54
|
"tsup": "^6.7.0",
|
|
55
55
|
"typescript": "^5.0.4"
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
|
-
"react": ">=19.0.
|
|
58
|
+
"react": ">=19.0.1"
|
|
59
59
|
},
|
|
60
60
|
"publishConfig": {
|
|
61
61
|
"directory": "_release/package"
|