@sundaeswap/wallet-lite 0.0.75 → 0.0.77
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/cjs/classes/WalletObserver.class.js +1 -1
- package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
- package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +47 -47
- package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
- package/dist/cjs/react-components/hooks/index.js +11 -0
- package/dist/cjs/react-components/hooks/index.js.map +1 -1
- package/dist/cjs/react-components/hooks/useWalletData.js +95 -0
- package/dist/cjs/react-components/hooks/useWalletData.js.map +1 -0
- package/dist/esm/classes/WalletObserver.class.js +1 -1
- package/dist/esm/classes/WalletObserver.class.js.map +1 -1
- package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +9 -9
- package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
- package/dist/esm/react-components/hooks/index.js +1 -0
- package/dist/esm/react-components/hooks/index.js.map +1 -1
- package/dist/esm/react-components/hooks/useWalletData.js +45 -0
- package/dist/esm/react-components/hooks/useWalletData.js.map +1 -0
- package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
- package/dist/types/react-components/hooks/index.d.ts +1 -0
- package/dist/types/react-components/hooks/index.d.ts.map +1 -1
- package/dist/types/react-components/hooks/useWalletData.d.ts +21 -0
- package/dist/types/react-components/hooks/useWalletData.d.ts.map +1 -0
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/src/classes/WalletObserver.class.ts +1 -1
- package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +14 -14
- package/src/react-components/hooks/index.ts +1 -0
- package/src/react-components/hooks/useWalletData.ts +89 -0
|
@@ -43,6 +43,15 @@ export const useWalletObserverState = observer => {
|
|
|
43
43
|
setIsCip45(false);
|
|
44
44
|
setWillAutoConnect(false);
|
|
45
45
|
}, [observer]);
|
|
46
|
+
const connectWallet = useCallback(async wallet => {
|
|
47
|
+
if (observer.hasActiveConnection() && wallet !== observer.activeWallet) {
|
|
48
|
+
setSwitching(() => true);
|
|
49
|
+
}
|
|
50
|
+
await observer.connectWallet(wallet);
|
|
51
|
+
await syncWallet();
|
|
52
|
+
setSwitching(() => false);
|
|
53
|
+
return observer.api;
|
|
54
|
+
}, [observer, setSwitching]);
|
|
46
55
|
const syncWallet = useCallback(async () => {
|
|
47
56
|
if (observer.isSyncing() || !observer.hasActiveConnection()) {
|
|
48
57
|
return;
|
|
@@ -112,15 +121,6 @@ export const useWalletObserverState = observer => {
|
|
|
112
121
|
throw e;
|
|
113
122
|
}
|
|
114
123
|
}, [observer, disconnect]);
|
|
115
|
-
const connectWallet = useCallback(async wallet => {
|
|
116
|
-
if (observer.hasActiveConnection() && wallet !== observer.activeWallet) {
|
|
117
|
-
setSwitching(() => true);
|
|
118
|
-
}
|
|
119
|
-
await observer.connectWallet(wallet);
|
|
120
|
-
await syncWallet();
|
|
121
|
-
setSwitching(() => false);
|
|
122
|
-
return observer.api;
|
|
123
|
-
}, [observer, setSwitching]);
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
126
|
* Ensure the wallet syncs on connect and disconnect.
|
package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWalletObserverState.js","names":["AssetAmount","useCallback","useEffect","useState","useTransition","WalletBalanceMap","WalletObserver","ADA_ASSET_ID","areAssetMapsEqual","useWalletObserverState","observer","activeWallet","setActiveWallet","adaBalance","setAdaBalance","balance","setBalance","network","setNetwork","usedAddresses","setUsedAddresses","unusedAddresses","setUnusedAddresses","feeAddress","setFeeAddress","utxos","setUtxos","collateral","setCollateral","isCip45","setIsCip45","switching","setSwitching","errorSyncing","setErrorSyncing","isPending","startTransition","willAutoConnect","setWillAutoConnect","Boolean","window","localStorage","getItem","PERSISTENCE_CACHE_KEY","getOptions","persistence","disconnect","undefined","syncWallet","isSyncing","hasActiveConnection","newWallet","includes","prevWallet","freshData","sync","newBalanceMap","balanceMap","newAdaBalance","get","prevBalance","amount","newUsedAddresses","Array","prevValue","JSON","stringify","newUnusedAddresses","newNetwork","newUtxos","prevValueRep","map","v","toCbor","newValueRep","newCollateral","newFeeAddress","e","cause","connectWallet","wallet","api","addEventListener"],"sources":["../../../../../src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts"],"sourcesContent":["import type { TransactionUnspentOutput } from \"@cardano-sdk/core/dist/cjs/Serialization/TransactionUnspentOutput.js\";\nimport { AssetAmount, IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { useCallback, useEffect, useState, useTransition } from \"react\";\n\nimport { WalletBalanceMap } from \"../../../classes/WalletBalanceMap.class.js\";\nimport { WalletObserver } from \"../../../classes/WalletObserver.class.js\";\nimport { ADA_ASSET_ID } from \"../../../constants.js\";\nimport { areAssetMapsEqual } from \"../../../utils/comparisons.js\";\n\n/**\n * Internal use only. The main action that sync WalletObserver api responses with\n * the React context of the WalletObserverProvider.\n *\n * @param {WalletObserver} observer\n */\nexport const useWalletObserverState = <\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,\n>(\n observer: WalletObserver<AssetMetadata>,\n) => {\n const [activeWallet, setActiveWallet] = useState<string>();\n const [adaBalance, setAdaBalance] = useState<AssetAmount<AssetMetadata>>(\n new AssetAmount<AssetMetadata>(0n),\n );\n const [balance, setBalance] = useState<WalletBalanceMap<AssetMetadata>>(\n new WalletBalanceMap<AssetMetadata>(observer),\n );\n const [network, setNetwork] = useState<number | undefined>();\n const [usedAddresses, setUsedAddresses] = useState<string[]>([]);\n const [unusedAddresses, setUnusedAddresses] = useState<string[]>([]);\n const [feeAddress, setFeeAddress] = useState<string | undefined>();\n const [utxos, setUtxos] = useState<TransactionUnspentOutput[]>();\n const [collateral, setCollateral] = useState<TransactionUnspentOutput[]>();\n const [isCip45, setIsCip45] = useState(false);\n const [switching, setSwitching] = useState(false);\n const [errorSyncing, setErrorSyncing] = useState(false);\n const [isPending, startTransition] = useTransition();\n const [willAutoConnect, setWillAutoConnect] = useState(\n Boolean(\n window.localStorage.getItem(WalletObserver.PERSISTENCE_CACHE_KEY) &&\n observer.getOptions().persistence,\n ),\n );\n\n const disconnect = useCallback(() => {\n // Reset observer state.\n observer.disconnect();\n\n // Reset state.\n setAdaBalance(new AssetAmount(0n));\n setBalance(new WalletBalanceMap(observer));\n setUsedAddresses([]);\n setUnusedAddresses([]);\n setActiveWallet(undefined);\n setNetwork(undefined);\n setUtxos(undefined);\n setCollateral(undefined);\n setFeeAddress(undefined);\n setIsCip45(false);\n setWillAutoConnect(false);\n }, [observer]);\n\n const syncWallet = useCallback(async () => {\n if (observer.isSyncing() || !observer.hasActiveConnection()) {\n return;\n }\n\n const newWallet = observer.activeWallet;\n if (!newWallet) {\n disconnect();\n return;\n }\n\n setIsCip45(newWallet.includes(\"p2p\"));\n setActiveWallet((prevWallet) =>\n newWallet === prevWallet ? prevWallet : newWallet,\n );\n\n try {\n const freshData = await observer.sync();\n\n startTransition(() => {\n const newBalanceMap = freshData.balanceMap;\n if (newBalanceMap instanceof WalletBalanceMap) {\n const newAdaBalance = newBalanceMap.get(ADA_ASSET_ID);\n if (newAdaBalance) {\n setAdaBalance((prevBalance) =>\n prevBalance.amount === newAdaBalance.amount\n ? prevBalance\n : newAdaBalance,\n );\n\n setBalance((prevBalance) =>\n areAssetMapsEqual(prevBalance, newBalanceMap)\n ? prevBalance\n : newBalanceMap,\n );\n }\n }\n\n const newUsedAddresses = freshData.usedAddresses;\n if (newUsedAddresses instanceof Array) {\n setUsedAddresses((prevValue) => {\n return JSON.stringify(prevValue) ===\n JSON.stringify(newUsedAddresses)\n ? prevValue\n : newUsedAddresses;\n });\n }\n\n const newUnusedAddresses = freshData.unusedAddresses;\n if (newUnusedAddresses instanceof Array) {\n setUnusedAddresses((prevValue) =>\n JSON.stringify(prevValue) === JSON.stringify(newUnusedAddresses)\n ? prevValue\n : newUnusedAddresses,\n );\n }\n\n const newNetwork = freshData.network;\n if (typeof newNetwork === \"number\") {\n setNetwork((prevValue) =>\n prevValue === newNetwork ? prevValue : newNetwork,\n );\n }\n\n const newUtxos = freshData.utxos;\n if (newUtxos instanceof Array) {\n setUtxos((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = newUtxos?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return newUtxos;\n }\n\n return prevValue;\n });\n }\n\n const newCollateral = freshData.collateral;\n if (newCollateral instanceof Array) {\n setCollateral((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = newCollateral?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return newCollateral;\n }\n\n return prevValue;\n });\n }\n\n const newFeeAddress = freshData.feeAddress;\n if (typeof newFeeAddress === \"string\") {\n setFeeAddress((prevValue) =>\n prevValue === newFeeAddress ? prevValue : newFeeAddress,\n );\n }\n });\n } catch (e) {\n setErrorSyncing(true);\n (e as Error).cause =\n \"The wallet threw an error while the app was trying to sync with it. Please try again or contact your wallet provider.\";\n throw e;\n }\n }, [observer, disconnect]);\n\n const connectWallet = useCallback(\n async (wallet: string) => {\n if (observer.hasActiveConnection() && wallet !== observer.activeWallet) {\n setSwitching(() => true);\n }\n\n await observer.connectWallet(wallet);\n await syncWallet();\n setSwitching(() => false);\n return observer.api;\n },\n [observer, setSwitching],\n );\n\n /**\n * Ensure the wallet syncs on connect and disconnect.\n */\n useEffect(() => {\n window.addEventListener(\"focus\", syncWallet);\n\n return () => {\n window.addEventListener(\"focus\", syncWallet);\n };\n }, [syncWallet]);\n\n return {\n activeWallet,\n adaBalance,\n balance,\n collateral,\n connectWallet,\n disconnect,\n errorSyncing,\n feeAddress,\n isCip45,\n isPending,\n network,\n setActiveWallet,\n setAdaBalance,\n setBalance,\n setCollateral,\n setFeeAddress,\n setIsCip45,\n setNetwork,\n setSwitching,\n setUnusedAddresses,\n setUsedAddresses,\n setUtxos,\n switching,\n syncWallet,\n unusedAddresses,\n usedAddresses,\n utxos,\n willAutoConnect,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useWalletObserverState.js","names":["AssetAmount","useCallback","useEffect","useState","useTransition","WalletBalanceMap","WalletObserver","ADA_ASSET_ID","areAssetMapsEqual","useWalletObserverState","observer","activeWallet","setActiveWallet","adaBalance","setAdaBalance","balance","setBalance","network","setNetwork","usedAddresses","setUsedAddresses","unusedAddresses","setUnusedAddresses","feeAddress","setFeeAddress","utxos","setUtxos","collateral","setCollateral","isCip45","setIsCip45","switching","setSwitching","errorSyncing","setErrorSyncing","isPending","startTransition","willAutoConnect","setWillAutoConnect","Boolean","window","localStorage","getItem","PERSISTENCE_CACHE_KEY","getOptions","persistence","disconnect","undefined","connectWallet","wallet","hasActiveConnection","syncWallet","api","isSyncing","newWallet","includes","prevWallet","freshData","sync","newBalanceMap","balanceMap","newAdaBalance","get","prevBalance","amount","newUsedAddresses","Array","prevValue","JSON","stringify","newUnusedAddresses","newNetwork","newUtxos","prevValueRep","map","v","toCbor","newValueRep","newCollateral","newFeeAddress","e","cause","addEventListener"],"sources":["../../../../../src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts"],"sourcesContent":["import type { TransactionUnspentOutput } from \"@cardano-sdk/core/dist/cjs/Serialization/TransactionUnspentOutput.js\";\nimport { AssetAmount, IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { useCallback, useEffect, useState, useTransition } from \"react\";\n\nimport { WalletBalanceMap } from \"../../../classes/WalletBalanceMap.class.js\";\nimport { WalletObserver } from \"../../../classes/WalletObserver.class.js\";\nimport { ADA_ASSET_ID } from \"../../../constants.js\";\nimport { areAssetMapsEqual } from \"../../../utils/comparisons.js\";\n\n/**\n * Internal use only. The main action that sync WalletObserver api responses with\n * the React context of the WalletObserverProvider.\n *\n * @param {WalletObserver} observer\n */\nexport const useWalletObserverState = <\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,\n>(\n observer: WalletObserver<AssetMetadata>,\n) => {\n const [activeWallet, setActiveWallet] = useState<string>();\n const [adaBalance, setAdaBalance] = useState<AssetAmount<AssetMetadata>>(\n new AssetAmount<AssetMetadata>(0n),\n );\n const [balance, setBalance] = useState<WalletBalanceMap<AssetMetadata>>(\n new WalletBalanceMap<AssetMetadata>(observer),\n );\n const [network, setNetwork] = useState<number | undefined>();\n const [usedAddresses, setUsedAddresses] = useState<string[]>([]);\n const [unusedAddresses, setUnusedAddresses] = useState<string[]>([]);\n const [feeAddress, setFeeAddress] = useState<string | undefined>();\n const [utxos, setUtxos] = useState<TransactionUnspentOutput[]>();\n const [collateral, setCollateral] = useState<TransactionUnspentOutput[]>();\n const [isCip45, setIsCip45] = useState(false);\n const [switching, setSwitching] = useState(false);\n const [errorSyncing, setErrorSyncing] = useState(false);\n const [isPending, startTransition] = useTransition();\n const [willAutoConnect, setWillAutoConnect] = useState(\n Boolean(\n window.localStorage.getItem(WalletObserver.PERSISTENCE_CACHE_KEY) &&\n observer.getOptions().persistence,\n ),\n );\n\n const disconnect = useCallback(() => {\n // Reset observer state.\n observer.disconnect();\n\n // Reset state.\n setAdaBalance(new AssetAmount(0n));\n setBalance(new WalletBalanceMap(observer));\n setUsedAddresses([]);\n setUnusedAddresses([]);\n setActiveWallet(undefined);\n setNetwork(undefined);\n setUtxos(undefined);\n setCollateral(undefined);\n setFeeAddress(undefined);\n setIsCip45(false);\n setWillAutoConnect(false);\n }, [observer]);\n\n const connectWallet = useCallback(\n async (wallet: string) => {\n if (observer.hasActiveConnection() && wallet !== observer.activeWallet) {\n setSwitching(() => true);\n }\n\n await observer.connectWallet(wallet);\n await syncWallet();\n setSwitching(() => false);\n return observer.api;\n },\n [observer, setSwitching],\n );\n\n const syncWallet = useCallback(async () => {\n if (observer.isSyncing() || !observer.hasActiveConnection()) {\n return;\n }\n\n const newWallet = observer.activeWallet;\n if (!newWallet) {\n disconnect();\n return;\n }\n\n setIsCip45(newWallet.includes(\"p2p\"));\n setActiveWallet((prevWallet) =>\n newWallet === prevWallet ? prevWallet : newWallet,\n );\n\n try {\n const freshData = await observer.sync();\n\n startTransition(() => {\n const newBalanceMap = freshData.balanceMap;\n if (newBalanceMap instanceof WalletBalanceMap) {\n const newAdaBalance = newBalanceMap.get(ADA_ASSET_ID);\n if (newAdaBalance) {\n setAdaBalance((prevBalance) =>\n prevBalance.amount === newAdaBalance.amount\n ? prevBalance\n : newAdaBalance,\n );\n\n setBalance((prevBalance) =>\n areAssetMapsEqual(prevBalance, newBalanceMap)\n ? prevBalance\n : newBalanceMap,\n );\n }\n }\n\n const newUsedAddresses = freshData.usedAddresses;\n if (newUsedAddresses instanceof Array) {\n setUsedAddresses((prevValue) => {\n return JSON.stringify(prevValue) ===\n JSON.stringify(newUsedAddresses)\n ? prevValue\n : newUsedAddresses;\n });\n }\n\n const newUnusedAddresses = freshData.unusedAddresses;\n if (newUnusedAddresses instanceof Array) {\n setUnusedAddresses((prevValue) =>\n JSON.stringify(prevValue) === JSON.stringify(newUnusedAddresses)\n ? prevValue\n : newUnusedAddresses,\n );\n }\n\n const newNetwork = freshData.network;\n if (typeof newNetwork === \"number\") {\n setNetwork((prevValue) =>\n prevValue === newNetwork ? prevValue : newNetwork,\n );\n }\n\n const newUtxos = freshData.utxos;\n if (newUtxos instanceof Array) {\n setUtxos((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = newUtxos?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return newUtxos;\n }\n\n return prevValue;\n });\n }\n\n const newCollateral = freshData.collateral;\n if (newCollateral instanceof Array) {\n setCollateral((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = newCollateral?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return newCollateral;\n }\n\n return prevValue;\n });\n }\n\n const newFeeAddress = freshData.feeAddress;\n if (typeof newFeeAddress === \"string\") {\n setFeeAddress((prevValue) =>\n prevValue === newFeeAddress ? prevValue : newFeeAddress,\n );\n }\n });\n } catch (e) {\n setErrorSyncing(true);\n (e as Error).cause =\n \"The wallet threw an error while the app was trying to sync with it. Please try again or contact your wallet provider.\";\n throw e;\n }\n }, [observer, disconnect]);\n\n /**\n * Ensure the wallet syncs on connect and disconnect.\n */\n useEffect(() => {\n window.addEventListener(\"focus\", syncWallet);\n\n return () => {\n window.addEventListener(\"focus\", syncWallet);\n };\n }, [syncWallet]);\n\n return {\n activeWallet,\n adaBalance,\n balance,\n collateral,\n connectWallet,\n disconnect,\n errorSyncing,\n feeAddress,\n isCip45,\n isPending,\n network,\n setActiveWallet,\n setAdaBalance,\n setBalance,\n setCollateral,\n setFeeAddress,\n setIsCip45,\n setNetwork,\n setSwitching,\n setUnusedAddresses,\n setUsedAddresses,\n setUtxos,\n switching,\n syncWallet,\n unusedAddresses,\n usedAddresses,\n utxos,\n willAutoConnect,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/react-components/hooks/index.ts"],"sourcesContent":["export * from \"./useAvailableExtensions.js\";\nexport * from \"./useWalletHandles.js\";\nexport * from \"./useWalletLoadingState.js\";\nexport * from \"./useWalletObserver.js\";\nexport * from \"./useWalletPeerConnect.js\";\n"],"mappings":"AAAA,cAAc,6BAA6B;AAC3C,cAAc,uBAAuB;AACrC,cAAc,4BAA4B;AAC1C,cAAc,wBAAwB;AACtC,cAAc,2BAA2B","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/react-components/hooks/index.ts"],"sourcesContent":["export * from \"./useAvailableExtensions.js\";\nexport * from \"./useWalletData.js\";\nexport * from \"./useWalletHandles.js\";\nexport * from \"./useWalletLoadingState.js\";\nexport * from \"./useWalletObserver.js\";\nexport * from \"./useWalletPeerConnect.js\";\n"],"mappings":"AAAA,cAAc,6BAA6B;AAC3C,cAAc,oBAAoB;AAClC,cAAc,uBAAuB;AACrC,cAAc,4BAA4B;AAC1C,cAAc,wBAAwB;AACtC,cAAc,2BAA2B","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { useCallback, useMemo, useState } from "react";
|
|
2
|
+
import { useWalletObserver } from "./useWalletObserver";
|
|
3
|
+
export const useWalletData = () => {
|
|
4
|
+
const state = useWalletObserver();
|
|
5
|
+
const [signedData, setSignedData] = useState();
|
|
6
|
+
const signData = useCallback(async ({
|
|
7
|
+
signingAddress,
|
|
8
|
+
payload
|
|
9
|
+
}) => {
|
|
10
|
+
if (!state.observer.api) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const [{
|
|
14
|
+
Cardano
|
|
15
|
+
}, {
|
|
16
|
+
Ed25519Signature
|
|
17
|
+
}, {
|
|
18
|
+
COSESign1,
|
|
19
|
+
COSEKey,
|
|
20
|
+
Int,
|
|
21
|
+
BigNum,
|
|
22
|
+
Label
|
|
23
|
+
}] = await Promise.all([import("@cardano-sdk/core"), import("@cardano-sdk/crypto"), import("@emurgo/cardano-message-signing-nodejs")]);
|
|
24
|
+
const response = await state.observer.api.signData(Buffer.from(Cardano.Address.fromBech32(signingAddress).toBytes()).toString("hex"), Buffer.from(typeof payload === "string" ? payload : JSON.stringify(payload, null, 0), "utf-8").toString("hex"));
|
|
25
|
+
const coseSign1 = COSESign1.from_bytes(new Uint8Array(Buffer.from(response.signature, "hex")));
|
|
26
|
+
const keySign = COSEKey.from_bytes(new Uint8Array(Buffer.from(response.key, "hex")));
|
|
27
|
+
const labelInt = Int.new_negative(BigNum.from_str("2"));
|
|
28
|
+
const data = {
|
|
29
|
+
payload: Buffer.from(coseSign1.signed_data().to_bytes()).toString("hex"),
|
|
30
|
+
signature: Ed25519Signature.fromBytes(coseSign1.signature()).hex(),
|
|
31
|
+
key: Buffer.from(keySign.header(Label.new_int(labelInt))?.as_bytes() || []).toString("hex"),
|
|
32
|
+
rawData: {
|
|
33
|
+
cborKey: response.key,
|
|
34
|
+
cborSignature: response.signature
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
setSignedData(data);
|
|
38
|
+
return data;
|
|
39
|
+
}, [state.observer.api]);
|
|
40
|
+
return useMemo(() => ({
|
|
41
|
+
signData,
|
|
42
|
+
signedData
|
|
43
|
+
}), [signData, signedData]);
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=useWalletData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWalletData.js","names":["useCallback","useMemo","useState","useWalletObserver","useWalletData","state","signedData","setSignedData","signData","signingAddress","payload","observer","api","Cardano","Ed25519Signature","COSESign1","COSEKey","Int","BigNum","Label","Promise","all","response","Buffer","from","Address","fromBech32","toBytes","toString","JSON","stringify","coseSign1","from_bytes","Uint8Array","signature","keySign","key","labelInt","new_negative","from_str","data","signed_data","to_bytes","fromBytes","hex","header","new_int","as_bytes","rawData","cborKey","cborSignature"],"sources":["../../../../src/react-components/hooks/useWalletData.ts"],"sourcesContent":["import { Cip30WalletApi } from \"@cardano-sdk/dapp-connector\";\nimport { IAssetAmountMetadata } from \"@sundaeswap/asset\";\n\nimport { useCallback, useMemo, useState } from \"react\";\nimport { useWalletObserver } from \"./useWalletObserver\";\n\nexport interface ISignedData {\n payload: string;\n signature: string;\n key: string;\n rawData: {\n cborKey: string;\n cborSignature: string;\n };\n}\n\nexport interface ISignDataParams<T = object | string> {\n payload: T;\n signingAddress: string;\n connectedWallet: Cip30WalletApi;\n}\n\nexport const useWalletData = <\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,\n>() => {\n const state = useWalletObserver<AssetMetadata>();\n const [signedData, setSignedData] = useState<ISignedData>();\n\n const signData = useCallback(\n async ({ signingAddress, payload }: ISignDataParams) => {\n if (!state.observer.api) {\n return;\n }\n\n const [\n { Cardano },\n { Ed25519Signature },\n { COSESign1, COSEKey, Int, BigNum, Label },\n ] = await Promise.all([\n import(\"@cardano-sdk/core\"),\n import(\"@cardano-sdk/crypto\"),\n import(\"@emurgo/cardano-message-signing-nodejs\"),\n ]);\n\n const response = await state.observer.api.signData(\n Buffer.from(\n Cardano.Address.fromBech32(signingAddress).toBytes(),\n ).toString(\"hex\"),\n Buffer.from(\n typeof payload === \"string\"\n ? payload\n : JSON.stringify(payload, null, 0),\n \"utf-8\",\n ).toString(\"hex\"),\n );\n\n const coseSign1 = COSESign1.from_bytes(\n new Uint8Array(Buffer.from(response.signature, \"hex\")),\n );\n const keySign = COSEKey.from_bytes(\n new Uint8Array(Buffer.from(response.key, \"hex\")),\n );\n const labelInt = Int.new_negative(BigNum.from_str(\"2\"));\n\n const data: ISignedData = {\n payload: Buffer.from(coseSign1.signed_data().to_bytes()).toString(\n \"hex\",\n ),\n signature: Ed25519Signature.fromBytes(coseSign1.signature()).hex(),\n key: Buffer.from(\n keySign.header(Label.new_int(labelInt))?.as_bytes() || [],\n ).toString(\"hex\"),\n rawData: { cborKey: response.key, cborSignature: response.signature },\n };\n\n setSignedData(data);\n return data;\n },\n [state.observer.api],\n );\n\n return useMemo(\n () => ({\n signData,\n signedData,\n }),\n [signData, signedData],\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWalletObserverState.d.ts","sourceRoot":"","sources":["../../../../../src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sEAAsE,CAAC;AACrH,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAI1E;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,gFAGvB,eAAe,aAAa,CAAC;;;;;
|
|
1
|
+
{"version":3,"file":"useWalletObserverState.d.ts","sourceRoot":"","sources":["../../../../../src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sEAAsE,CAAC;AACrH,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAI1E;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,gFAGvB,eAAe,aAAa,CAAC;;;;;4BA6CtB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;CA+JxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react-components/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react-components/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Cip30WalletApi } from "@cardano-sdk/dapp-connector";
|
|
2
|
+
import { IAssetAmountMetadata } from "@sundaeswap/asset";
|
|
3
|
+
export interface ISignedData {
|
|
4
|
+
payload: string;
|
|
5
|
+
signature: string;
|
|
6
|
+
key: string;
|
|
7
|
+
rawData: {
|
|
8
|
+
cborKey: string;
|
|
9
|
+
cborSignature: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface ISignDataParams<T = object | string> {
|
|
13
|
+
payload: T;
|
|
14
|
+
signingAddress: string;
|
|
15
|
+
connectedWallet: Cip30WalletApi;
|
|
16
|
+
}
|
|
17
|
+
export declare const useWalletData: <AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata>() => {
|
|
18
|
+
signData: ({ signingAddress, payload }: ISignDataParams) => Promise<ISignedData | undefined>;
|
|
19
|
+
signedData: ISignedData | undefined;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=useWalletData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWalletData.d.ts","sourceRoot":"","sources":["../../../../src/react-components/hooks/useWalletData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAKzD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM;IAClD,OAAO,EAAE,CAAC,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,cAAc,CAAC;CACjC;AAED,eAAO,MAAM,aAAa;4CAOc,eAAe;;CA2DtD,CAAC"}
|