@volr/react 0.1.80 → 0.1.82
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/dist/index.cjs +49 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +49 -30
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -9807,7 +9807,6 @@ function useAutoRecover({
|
|
|
9807
9807
|
return;
|
|
9808
9808
|
}
|
|
9809
9809
|
const refreshedUser = await client.refreshSession();
|
|
9810
|
-
console.log("[Provider] Session refreshed, user:", refreshedUser);
|
|
9811
9810
|
setAccessTokenState(client.getAccessToken());
|
|
9812
9811
|
setRefreshTokenState(client.getRefreshToken());
|
|
9813
9812
|
if (refreshedUser) {
|
|
@@ -9860,7 +9859,6 @@ function useWalletEvents({
|
|
|
9860
9859
|
}
|
|
9861
9860
|
const ethereum = window.ethereum;
|
|
9862
9861
|
const handleAccountsChanged = (accounts) => {
|
|
9863
|
-
console.log("[Provider] accountsChanged event:", accounts);
|
|
9864
9862
|
if (accounts.length === 0) {
|
|
9865
9863
|
console.warn("[Provider] Wallet disconnected, logging out...");
|
|
9866
9864
|
setTimeout(() => logout(), 3e3);
|
|
@@ -10033,17 +10031,25 @@ function VolrProvider({ config, children }) {
|
|
|
10033
10031
|
setError(null);
|
|
10034
10032
|
const keyStorageType = newProvider.keyStorageType;
|
|
10035
10033
|
setProviderState(newProvider);
|
|
10036
|
-
|
|
10037
|
-
|
|
10038
|
-
|
|
10039
|
-
|
|
10040
|
-
setUser(
|
|
10041
|
-
}
|
|
10034
|
+
const userHasCompleteData = user?.keyStorageType === "passkey" && user?.blobUrl && user?.prfInput && user?.id;
|
|
10035
|
+
if (userHasCompleteData) {
|
|
10036
|
+
console.log("[Provider] setProvider: User data already complete, skipping refresh");
|
|
10037
|
+
if (user.keyStorageType !== keyStorageType) {
|
|
10038
|
+
setUser((prev) => ({ ...prev, keyStorageType }));
|
|
10039
|
+
}
|
|
10040
|
+
} else {
|
|
10041
|
+
try {
|
|
10042
|
+
const refreshedUser = await client.refreshSession();
|
|
10043
|
+
if (refreshedUser) {
|
|
10044
|
+
console.log("[Provider] setProvider: User data refreshed:", refreshedUser);
|
|
10045
|
+
setUser(refreshedUser);
|
|
10046
|
+
} else {
|
|
10047
|
+
setUser((prev) => ({ ...prev, keyStorageType }));
|
|
10048
|
+
}
|
|
10049
|
+
} catch (error2) {
|
|
10050
|
+
console.warn("[Provider] setProvider: Failed to refresh user data:", error2);
|
|
10042
10051
|
setUser((prev) => ({ ...prev, keyStorageType }));
|
|
10043
10052
|
}
|
|
10044
|
-
} catch (error2) {
|
|
10045
|
-
console.warn("[Provider] setProvider: Failed to refresh user data:", error2);
|
|
10046
|
-
setUser((prev) => ({ ...prev, keyStorageType }));
|
|
10047
10053
|
}
|
|
10048
10054
|
safeStorage.setItem(STORAGE_KEYS.provider, keyStorageType);
|
|
10049
10055
|
syncRef.current?.broadcast({
|
|
@@ -10294,30 +10300,34 @@ function useRelay() {
|
|
|
10294
10300
|
if (input.chainId === 0) {
|
|
10295
10301
|
throw new Error("chainId cannot be 0");
|
|
10296
10302
|
}
|
|
10297
|
-
|
|
10298
|
-
|
|
10299
|
-
|
|
10300
|
-
|
|
10303
|
+
let invokerAddress = opts.invokerAddress;
|
|
10304
|
+
if (!invokerAddress) {
|
|
10305
|
+
const networkData = await client.get(
|
|
10306
|
+
`/networks/${input.chainId}`
|
|
10307
|
+
);
|
|
10308
|
+
invokerAddress = networkData.invokerAddress;
|
|
10309
|
+
}
|
|
10301
10310
|
if (!invokerAddress) {
|
|
10302
10311
|
throw new Error(
|
|
10303
10312
|
`Invoker address not configured for chainId ${input.chainId}`
|
|
10304
10313
|
);
|
|
10305
10314
|
}
|
|
10306
|
-
const { sessionSig } = await sdkCore.signSession({
|
|
10307
|
-
signer: opts.signer,
|
|
10308
|
-
from: input.from,
|
|
10309
|
-
auth: input.auth,
|
|
10310
|
-
calls: input.calls,
|
|
10311
|
-
invokerAddress: input.from
|
|
10312
|
-
});
|
|
10313
10315
|
if (!opts.rpcClient) {
|
|
10314
10316
|
throw new Error("rpcClient is required for relay");
|
|
10315
10317
|
}
|
|
10316
|
-
const authNonce = await
|
|
10317
|
-
|
|
10318
|
-
|
|
10319
|
-
|
|
10320
|
-
|
|
10318
|
+
const [sessionResult, authNonce] = await Promise.all([
|
|
10319
|
+
// Sign session (EIP-7702: User EOA becomes the verifyingContract)
|
|
10320
|
+
sdkCore.signSession({
|
|
10321
|
+
signer: opts.signer,
|
|
10322
|
+
from: input.from,
|
|
10323
|
+
auth: input.auth,
|
|
10324
|
+
calls: input.calls,
|
|
10325
|
+
invokerAddress: input.from
|
|
10326
|
+
}),
|
|
10327
|
+
// Get auth nonce (sponsored mode)
|
|
10328
|
+
sdkCore.getAuthNonce(opts.rpcClient, input.from, "sponsored")
|
|
10329
|
+
]);
|
|
10330
|
+
const { sessionSig } = sessionResult;
|
|
10321
10331
|
const authorizationTuple = await sdkCore.signAuthorization({
|
|
10322
10332
|
signer: opts.signer,
|
|
10323
10333
|
chainId: input.chainId,
|
|
@@ -18068,6 +18078,7 @@ function createGetRpcUrl(deps) {
|
|
|
18068
18078
|
networkCache.set(chainId, {
|
|
18069
18079
|
rpcUrl: response.rpcUrl,
|
|
18070
18080
|
name: response.name,
|
|
18081
|
+
invokerAddress: response.invokerAddress,
|
|
18071
18082
|
timestamp: Date.now()
|
|
18072
18083
|
});
|
|
18073
18084
|
console.log("[getRpcUrl] RPC URL fetched and cached");
|
|
@@ -18081,18 +18092,21 @@ function createGetNetworkInfo(deps) {
|
|
|
18081
18092
|
if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) {
|
|
18082
18093
|
return {
|
|
18083
18094
|
name: cached.name || `Chain ${chainId}`,
|
|
18084
|
-
rpcUrl: includeRpcUrl ? cached.rpcUrl : void 0
|
|
18095
|
+
rpcUrl: includeRpcUrl ? cached.rpcUrl : void 0,
|
|
18096
|
+
invokerAddress: cached.invokerAddress
|
|
18085
18097
|
};
|
|
18086
18098
|
}
|
|
18087
18099
|
const response = await client.get(`/networks/${chainId}${includeRpcUrl ? "?includeRpcUrl=true" : ""}`);
|
|
18088
18100
|
networkCache.set(chainId, {
|
|
18089
18101
|
name: response.name,
|
|
18090
18102
|
rpcUrl: response.rpcUrl,
|
|
18103
|
+
invokerAddress: response.invokerAddress,
|
|
18091
18104
|
timestamp: Date.now()
|
|
18092
18105
|
});
|
|
18093
18106
|
return {
|
|
18094
18107
|
name: response.name,
|
|
18095
|
-
rpcUrl: includeRpcUrl ? response.rpcUrl : void 0
|
|
18108
|
+
rpcUrl: includeRpcUrl ? response.rpcUrl : void 0,
|
|
18109
|
+
invokerAddress: response.invokerAddress
|
|
18096
18110
|
};
|
|
18097
18111
|
};
|
|
18098
18112
|
}
|
|
@@ -18437,7 +18451,12 @@ async function sendCalls(args) {
|
|
|
18437
18451
|
activeProvider = resolved.activeProvider;
|
|
18438
18452
|
const result = await deps.relay(
|
|
18439
18453
|
{ chainId, from: normalizedFrom, auth, calls: normalizedCalls },
|
|
18440
|
-
{
|
|
18454
|
+
{
|
|
18455
|
+
signer,
|
|
18456
|
+
rpcClient: deps.rpcClient,
|
|
18457
|
+
idempotencyKey,
|
|
18458
|
+
invokerAddress: precheckQuote.invokerAddress
|
|
18459
|
+
}
|
|
18441
18460
|
);
|
|
18442
18461
|
if (result.status === "QUEUED" || result.status === "PENDING") {
|
|
18443
18462
|
return pollTransactionStatus(result.txId, deps.client);
|