From b10681a49cae25a2cf85d398be12fb7c502095dc Mon Sep 17 00:00:00 2001 From: XTON wallet Date: Wed, 3 May 2023 20:55:27 +0300 Subject: [PATCH] fixed the issue with an empty version for not deployed wallet --- src/background/accounts.js | 18 +++++++++--------- src/common/tonLib.js | 28 ++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/background/accounts.js b/src/background/accounts.js index c100cf6..0155030 100644 --- a/src/background/accounts.js +++ b/src/background/accounts.js @@ -709,7 +709,7 @@ export const accounts = () => { const TonLibClient = await TonLib.getClient(server); const account = await vault.getAccount(accountAddress); const keyPair = await decrypt(currentPassword, account.encrypted); - return await TonLibClient.walletStateInit(keyPair.public, account.version[server] ? account.version[server] : ""); + return await TonLibClient.walletStateInit(keyPair.public, account.version && account.version[server] ? account.version[server] : ""); }; const addAccountByKeys = async (nickname, keyPair, version) => { @@ -811,7 +811,7 @@ export const accounts = () => { let result; if (txData.params.allBalance) { //@TODO need to be sure, that one-custodial wallet - result = await TonLibClient.calcRunFees(account.version[server], accountAddress, + result = await TonLibClient.calcRunFees(account.version && account.version[server] ? account.version[server]: "", accountAddress, { toAddress: txData.params.destination, amount: 0, @@ -820,7 +820,7 @@ export const accounts = () => { }, keyPair); } else { - result = await TonLibClient.calcRunFees(account.version[server], accountAddress, + result = await TonLibClient.calcRunFees(account.version && account.version[server] ? account.version[server]: "", accountAddress, { toAddress: txData.params.destination, amount: txData.params.amount, @@ -866,7 +866,7 @@ export const accounts = () => { txDataPrepared.stateInit = TonLibClient.oneFromBoc(Unibabel.base64ToBuffer(txData.params.stateInit)); } - result = await TonLibClient.calcRunFees(account.version[server], accountAddress, + result = await TonLibClient.calcRunFees(account.version && account.version[server] ? account.version[server]: "", accountAddress, txDataPrepared, keyPair); @@ -891,7 +891,7 @@ export const accounts = () => { } let result; if (txData.params.allBalance) { - result = await TonLibClient.sendTransaction(account.version[server], accountAddress, bounce, + result = await TonLibClient.sendTransaction(account.version && account.version[server] ? account.version[server]: "", accountAddress, bounce, { toAddress: txData.params.destination, amount: 0, @@ -900,7 +900,7 @@ export const accounts = () => { }, keyPair); } else { - result = await TonLibClient.sendTransaction(account.version[server], accountAddress, bounce, + result = await TonLibClient.sendTransaction(account.version && account.version[server] ? account.version[server]: "", accountAddress, bounce, { toAddress: txData.params.destination, amount: txData.params.amount, @@ -943,7 +943,7 @@ export const accounts = () => { if (txData.params.stateInit) { txDataPrepared.stateInit = TonLibClient.oneFromBoc(Unibabel.base64ToBuffer(txData.params.stateInit)); } - result = await TonLibClient.sendTransaction(account.version[server], accountAddress, false, txDataPrepared, keyPair); + result = await TonLibClient.sendTransaction(account.version && account.version[server] ? account.version[server]: "", accountAddress, false, txDataPrepared, keyPair); return {id: 0, reason: `SubmitRawTransaction for ${txData.params.to} with amount ${txData.params.amount}`}; } catch (exp) { @@ -1166,7 +1166,7 @@ export const accounts = () => { const TonLibClient = await TonLib.getClient(server); const walletAddressOwner = await getTokenType74WalletAddress(server, txData.params.token.address, accountAddress); const JtWallet = TonLibClient.getFtTokenWallet(walletAddressOwner); - const result = await TonLibClient.estimateTransferFtTokenWallet(account.version[server], JtWallet, accountAddress, walletAddressOwner, { + const result = await TonLibClient.estimateTransferFtTokenWallet(account.version && account.version[server] ? account.version[server]: "", JtWallet, accountAddress, walletAddressOwner, { "jettonAmount": txData.params.amount, "toAddress": txData.params.destination, "responseAddress": accountAddress, @@ -1261,7 +1261,7 @@ export const accounts = () => { const walletAddressOwner = await getTokenType74WalletAddress(server, txData.params.token.address, accountAddress); const JtWallet = TonLibClient.getFtTokenWallet(walletAddressOwner); - const result = await TonLibClient.sendTransferFtTokenWallet(account.version[server], JtWallet, accountAddress, walletAddressOwner, { + const result = await TonLibClient.sendTransferFtTokenWallet(account.version && account.version[server] ? account.version[server]: "", JtWallet, accountAddress, walletAddressOwner, { "jettonAmount": txData.params.amount, "toAddress": txData.params.destination, "responseAddress": accountAddress, diff --git a/src/common/tonLib.js b/src/common/tonLib.js index b0926cf..db018a9 100644 --- a/src/common/tonLib.js +++ b/src/common/tonLib.js @@ -83,8 +83,13 @@ class TonLib { } } - async sendTransaction(version, address, bounce, data, keyPair) { + async sendTransaction(_version, address, bounce, data, keyPair) { try { + let version = this.defaultWalletVersion; + if (_version != "" && this.instance.wallet.all[_version]) { + version = _version; + } + const WalletClass = this.instance.wallet.all[version]; const toAddress = (new TonWeb.Address(address)).toString(true, true, false); const walletContract = new WalletClass(this.instance.provider, {address: toAddress}); @@ -295,8 +300,13 @@ class TonLib { } } - async calcRunFees(version, address, data, keyPair = null) { + async calcRunFees(_version, address, data, keyPair = null) { try { + let version = this.defaultWalletVersion; + if (_version != "" && this.instance.wallet.all[_version]) { + version = _version; + } + const WalletClass = this.instance.wallet.all[version]; const toAddress = (new TonWeb.Address(address)).toString(true, true, false); const walletContract = new WalletClass(this.instance.provider, {address: toAddress}); @@ -367,12 +377,17 @@ class TonLib { } } - async estimateTransferFtTokenWallet(version, JtWallet, accountAddress, walletAddressOwner, params, keyPair) { + async estimateTransferFtTokenWallet(_version, JtWallet, accountAddress, walletAddressOwner, params, keyPair) { try { params.toAddress = new TonWeb.Address(params.toAddress); params.responseAddress = new TonWeb.Address(params.responseAddress); params.forwardPayload = Unibabel.utf8ToBuffer(params.forwardPayload); + let version = this.defaultWalletVersion; + if (_version != "" && this.instance.wallet.all[_version]) { + version = _version; + } + const WalletClass = this.instance.wallet.all[version]; const toAddress = (new TonWeb.Address(accountAddress)).toString(true, true, false); const walletContract = new WalletClass(this.instance.provider, {address: toAddress}); @@ -392,12 +407,17 @@ class TonLib { } } - async sendTransferFtTokenWallet(version, JtWallet, accountAddress, walletAddressOwner, params, keyPair) { + async sendTransferFtTokenWallet(_version, JtWallet, accountAddress, walletAddressOwner, params, keyPair) { try { params.toAddress = (new TonWeb.Address(params.toAddress)); params.responseAddress = (new TonWeb.Address(params.responseAddress)); params.forwardPayload = Unibabel.utf8ToBuffer(params.forwardPayload); + let version = this.defaultWalletVersion; + if (_version != "" && this.instance.wallet.all[_version]) { + version = _version; + } + const WalletClass = this.instance.wallet.all[version]; const toAddress = (new TonWeb.Address(accountAddress)).toString(true, true, false); const walletContract = new WalletClass(this.instance.provider, {address: toAddress});