@coin-voyage/crypto 2.0.0 → 2.0.1

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.
@@ -6,15 +6,20 @@ export function useSolanaTransaction() {
6
6
  const { connection } = useConnection();
7
7
  const wallet = useWallet();
8
8
  const execute = async (params) => {
9
+ if (!wallet.connected && wallet.wallet) {
10
+ try {
11
+ await wallet.connect();
12
+ }
13
+ catch {
14
+ throw new Error("Wallet not connected. Please reconnect your wallet and try again.");
15
+ }
16
+ }
9
17
  const { fromAddress, toAddress, amount, token } = params;
10
18
  let transaction = new Transaction();
11
19
  const senderPubKey = new PublicKey(fromAddress);
12
20
  const receiverPubKey = new PublicKey(toAddress);
13
21
  const instructions = [
14
- // add priority fees
15
- ComputeBudgetProgram.setComputeUnitPrice({
16
- microLamports: 1000000
17
- })
22
+ ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 1000000 })
18
23
  ];
19
24
  const value = BigInt(amount);
20
25
  // Native SOL transfer
@@ -40,14 +45,39 @@ export function useSolanaTransaction() {
40
45
  senderPubKey, // from's owner
41
46
  value, token.decimals));
42
47
  }
43
- const { context: { slot: minContextSlot }, value: { blockhash } } = await connection.getLatestBlockhashAndContext();
48
+ const { context: { slot: minContextSlot }, value: { blockhash, lastValidBlockHeight } } = await connection.getLatestBlockhashAndContext();
44
49
  transaction.feePayer = senderPubKey;
45
50
  transaction.recentBlockhash = blockhash;
46
51
  transaction.instructions = instructions;
47
- return await wallet.sendTransaction(transaction, connection, {
52
+ const signature = await wallet.sendTransaction(transaction, connection, {
48
53
  minContextSlot
49
54
  });
55
+ return waitForTransactionConfirmation(signature, connection, lastValidBlockHeight);
50
56
  };
51
57
  return { execute };
52
58
  }
59
+ async function waitForTransactionConfirmation(signature, connection, lastValidBlockHeight) {
60
+ const maxRetries = 30;
61
+ const retryDelay = 2000;
62
+ for (let i = 0; i < maxRetries; i++) {
63
+ const { value: statuses } = await connection.getSignatureStatuses([signature]);
64
+ const status = statuses[0];
65
+ if (status) {
66
+ if (status.err) {
67
+ throw new Error(`Transaction failed: ${JSON.stringify(status.err)}`);
68
+ }
69
+ if (status.confirmationStatus === "processed" ||
70
+ status.confirmationStatus === "confirmed" ||
71
+ status.confirmationStatus === "finalized") {
72
+ return signature;
73
+ }
74
+ }
75
+ // Check if blockhash expired
76
+ const blockHeight = await connection.getBlockHeight();
77
+ if (blockHeight > lastValidBlockHeight) {
78
+ throw new Error("Transaction expired. Please try again.");
79
+ }
80
+ await new Promise(resolve => setTimeout(resolve, retryDelay));
81
+ }
82
+ }
53
83
  //# sourceMappingURL=use-solana-transaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-solana-transaction.js","sourceRoot":"","sources":["../../src/solana/use-solana-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,oBAAoB,EACpB,SAAS,EACT,aAAa,EACb,WAAW,EACX,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,UAAU,oBAAoB;IAGlC,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,OAAO,GAAG,KAAK,EAAE,MAA0B,EAAE,EAAE;QACnD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QACzD,IAAI,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QAEpC,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QAEhD,MAAM,YAAY,GAA6B;YAC7C,oBAAoB;YACpB,oBAAoB,CAAC,mBAAmB,CAAC;gBACvC,aAAa,EAAE,OAAS;aACzB,CAAC;SACH,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE7B,sBAAsB;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,YAAY,CAAC,IAAI,CACf,aAAa,CAAC,QAAQ,CAAC;gBACrB,UAAU,EAAE,YAAY;gBACxB,QAAQ,EAAE,cAAc;gBACxB,QAAQ,EAAE,KAAK;aAChB,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE1C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChD,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;gBACpD,yBAAyB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC;aACtD,CAAC,CAAA;YAEF,MAAM,+BAA+B,GAAG,MAAM,iCAAiC,CAC7E,UAAU,EACV,YAAY,EACZ,IAAI,EACJ,cAAc,CACf,CAAC;YACF,IAAI,+BAA+B,YAAY,sBAAsB,EAAE,CAAC;gBACtE,YAAY,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACrD,CAAC;YAED,YAAY,CAAC,IAAI,CACf,gCAAgC,CAC9B,QAAQ,EAAE,OAAO;YACjB,IAAI,EACJ,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,eAAe;YAC7B,KAAK,EACL,KAAK,CAAC,QAAQ,CACf,CACF,CAAC;QACJ,CAAC;QAED,MAAM,EACJ,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EACjC,KAAK,EAAE,EAAE,SAAS,EAAE,EACrB,GAAG,MAAM,UAAU,CAAC,4BAA4B,EAAE,CAAC;QAEpD,WAAW,CAAC,QAAQ,GAAG,YAAY,CAAC;QACpC,WAAW,CAAC,eAAe,GAAG,SAAS,CAAC;QACxC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;QAExC,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE;YAC3D,cAAc;SACf,CAAC,CAAC;IACL,CAAC,CAAA;IAED,OAAO,EAAE,OAAO,EAAE,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"use-solana-transaction.js","sourceRoot":"","sources":["../../src/solana/use-solana-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,oBAAoB,EAEpB,SAAS,EACT,aAAa,EACb,WAAW,EACX,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,UAAU,oBAAoB;IAGlC,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,OAAO,GAAG,KAAK,EAAE,MAA0B,EAAE,EAAE;QACnD,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QACzD,IAAI,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QAEpC,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QAEhD,MAAM,YAAY,GAA6B;YAC7C,oBAAoB,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,OAAS,EAAE,CAAC;SACvE,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE7B,sBAAsB;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,YAAY,CAAC,IAAI,CACf,aAAa,CAAC,QAAQ,CAAC;gBACrB,UAAU,EAAE,YAAY;gBACxB,QAAQ,EAAE,cAAc;gBACxB,QAAQ,EAAE,KAAK;aAChB,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE1C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChD,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;gBACpD,yBAAyB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC;aACtD,CAAC,CAAA;YAEF,MAAM,+BAA+B,GAAG,MAAM,iCAAiC,CAC7E,UAAU,EACV,YAAY,EACZ,IAAI,EACJ,cAAc,CACf,CAAC;YACF,IAAI,+BAA+B,YAAY,sBAAsB,EAAE,CAAC;gBACtE,YAAY,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACrD,CAAC;YAED,YAAY,CAAC,IAAI,CACf,gCAAgC,CAC9B,QAAQ,EAAE,OAAO;YACjB,IAAI,EACJ,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,eAAe;YAC7B,KAAK,EACL,KAAK,CAAC,QAAQ,CACf,CACF,CAAC;QACJ,CAAC;QAED,MAAM,EACJ,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EACjC,KAAK,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE,EAC3C,GAAG,MAAM,UAAU,CAAC,4BAA4B,EAAE,CAAC;QAEpD,WAAW,CAAC,QAAQ,GAAG,YAAY,CAAC;QACpC,WAAW,CAAC,eAAe,GAAG,SAAS,CAAC;QACxC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;QAExC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE;YACtE,cAAc;SACf,CAAC,CAAC;QAEH,OAAO,8BAA8B,CAAC,SAAS,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;IACrF,CAAC,CAAA;IAED,OAAO,EAAE,OAAO,EAAE,CAAA;AACpB,CAAC;AAED,KAAK,UAAU,8BAA8B,CAAC,SAAiB,EAAE,UAAsB,EAAE,oBAA4B;IACnH,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,UAAU,GAAG,IAAI,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,IAAI,MAAM,CAAC,kBAAkB,KAAK,WAAW;gBAC3C,MAAM,CAAC,kBAAkB,KAAK,WAAW;gBACzC,MAAM,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;gBAC5C,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;QACtD,IAAI,WAAW,GAAG,oBAAoB,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@coin-voyage/crypto",
3
3
  "description": "Crypto utilities for Coin Voyage",
4
- "version": "2.0.0",
4
+ "version": "2.0.1",
5
5
  "private": false,
6
6
  "sideEffects": false,
7
7
  "author": "Lars <lars@coinvoyage.io>",