From 75585a6df4bef71ba46e2fe58a8026502ff5f50c Mon Sep 17 00:00:00 2001
From: Nikita-Polyakov <polyakov@soramitsu.co.jp>
Date: Sat, 8 Jul 2023 11:17:57 +0300
Subject: [PATCH 1/3] fix ui checks

---
 src/views/BridgeTransaction.vue | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/views/BridgeTransaction.vue b/src/views/BridgeTransaction.vue
index 18cb40f69..b298eeab1 100644
--- a/src/views/BridgeTransaction.vue
+++ b/src/views/BridgeTransaction.vue
@@ -127,15 +127,17 @@
         <template v-else-if="isTxPending">{{ t('bridgeTransaction.pending') }}</template>
         <template v-else-if="isAnotherEvmAddress">{{ t('changeAccountText') }}</template>
         <template v-else-if="!(isSoraToEvm || isValidNetwork)">{{ t('changeNetworkText') }}</template>
-        <template v-else-if="isInsufficientBalance">{{
+        <template v-else-if="txIsUnsigned && isInsufficientBalance">{{
           t('insufficientBalanceText', { tokenSymbol: assetSymbol })
         }}</template>
-        <template v-else-if="isInsufficientXorForFee">{{
+        <template v-else-if="txIsUnsigned && isInsufficientXorForFee">{{
           t('insufficientBalanceText', { tokenSymbol: KnownSymbols.XOR })
         }}</template>
-        <template v-else-if="isInsufficientEvmNativeTokenForFee">{{
-          t('insufficientBalanceText', { tokenSymbol: evmTokenSymbol })
-        }}</template>
+        <template
+          v-else-if="
+            ((txIsUnsigned && !isSoraToEvm) || (!txIsUnsigned && isSoraToEvm)) && isInsufficientEvmNativeTokenForFee
+          "
+        >{{ t('insufficientBalanceText', { tokenSymbol: evmTokenSymbol }) }}</template>
         <template v-else-if="isTxWaiting">{{ t('bridgeTransaction.confirm', { direction: 'metamask' }) }}</template>
         <template v-else-if="isTxFailed">{{ t('retryText') }}</template>
         <template v-else>{{

From 3923caa65108091d046737cc7c1a26d66525159f Mon Sep 17 00:00:00 2001
From: Nikita-Polyakov <polyakov@soramitsu.co.jp>
Date: Sat, 8 Jul 2023 11:32:52 +0300
Subject: [PATCH 2/3] fix computed

---
 src/views/BridgeTransaction.vue | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/views/BridgeTransaction.vue b/src/views/BridgeTransaction.vue
index b298eeab1..80d2abf14 100644
--- a/src/views/BridgeTransaction.vue
+++ b/src/views/BridgeTransaction.vue
@@ -127,17 +127,15 @@
         <template v-else-if="isTxPending">{{ t('bridgeTransaction.pending') }}</template>
         <template v-else-if="isAnotherEvmAddress">{{ t('changeAccountText') }}</template>
         <template v-else-if="!(isSoraToEvm || isValidNetwork)">{{ t('changeNetworkText') }}</template>
-        <template v-else-if="txIsUnsigned && isInsufficientBalance">{{
+        <template v-else-if="isInsufficientBalance">{{
           t('insufficientBalanceText', { tokenSymbol: assetSymbol })
         }}</template>
-        <template v-else-if="txIsUnsigned && isInsufficientXorForFee">{{
+        <template v-else-if="isInsufficientXorForFee">{{
           t('insufficientBalanceText', { tokenSymbol: KnownSymbols.XOR })
         }}</template>
-        <template
-          v-else-if="
-            ((txIsUnsigned && !isSoraToEvm) || (!txIsUnsigned && isSoraToEvm)) && isInsufficientEvmNativeTokenForFee
-          "
-        >{{ t('insufficientBalanceText', { tokenSymbol: evmTokenSymbol }) }}</template>
+        <template v-else-if="isInsufficientEvmNativeTokenForFee">{{
+          t('insufficientBalanceText', { tokenSymbol: evmTokenSymbol })
+        }}</template>
         <template v-else-if="isTxWaiting">{{ t('bridgeTransaction.confirm', { direction: 'metamask' }) }}</template>
         <template v-else-if="isTxFailed">{{ t('retryText') }}</template>
         <template v-else>{{
@@ -392,15 +390,18 @@ export default class BridgeTransaction extends Mixins(
 
     if (!this.asset || !this.amount || !fee) return false;
 
-    return hasInsufficientBalance(this.asset, this.amount, fee, !this.isSoraToEvm);
+    return this.txIsUnsigned && hasInsufficientBalance(this.asset, this.amount, fee, !this.isSoraToEvm);
   }
 
   get isInsufficientXorForFee(): boolean {
-    return hasInsufficientXorForFee(this.xor, this.txSoraNetworkFee);
+    return this.txIsUnsigned && hasInsufficientXorForFee(this.xor, this.txSoraNetworkFee);
   }
 
   get isInsufficientEvmNativeTokenForFee(): boolean {
-    return hasInsufficientEvmNativeTokenForFee(this.externalBalance, this.txEvmNetworkFee);
+    return (
+      ((this.txIsUnsigned && !this.isSoraToEvm) || (!this.txIsUnsigned && this.isSoraToEvm)) &&
+      hasInsufficientEvmNativeTokenForFee(this.externalBalance, this.txEvmNetworkFee)
+    );
   }
 
   get isAnotherEvmAddress(): boolean {

From 8da88fafde3f7d64b5d359f1a33b188795f91cde Mon Sep 17 00:00:00 2001
From: Nikita-Polyakov <polyakov@soramitsu.co.jp>
Date: Sat, 8 Jul 2023 13:11:23 +0300
Subject: [PATCH 3/3] fix check

---
 src/store/assets/actions.ts | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/store/assets/actions.ts b/src/store/assets/actions.ts
index bf496de34..66ddbef0f 100644
--- a/src/store/assets/actions.ts
+++ b/src/store/assets/actions.ts
@@ -21,7 +21,8 @@ async function getEthRegisteredAssets(context: ActionContext<any, any>): Promise
   for (const asset of networkAssets) {
     const soraAddress = asset.address;
     const address = asset.externalAddress || (await rootDispatch.web3.getEvmTokenAddressByAssetId(soraAddress));
-    const decimals = +asset.externalDecimals ?? (await ethersUtil.getAssetDecimals(address));
+    // [TODO] fix js-lib: externalDecimals = 0 by default, what could be with nft
+    const decimals = +asset.externalDecimals || (await ethersUtil.getAssetDecimals(address));
 
     registeredAssets.push({
       [soraAddress]: {