diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/ApproveTxBottomSheetDialogFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/ApproveTxBottomSheetDialogFragment.java
index 78530037e0e..ba5d2ccddde 100644
--- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/ApproveTxBottomSheetDialogFragment.java
+++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/ApproveTxBottomSheetDialogFragment.java
@@ -11,6 +11,8 @@ import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.Looper;
+import android.text.Spanned;
+import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -34,9 +36,7 @@ import org.chromium.brave_wallet.mojom.AccountInfo;
import org.chromium.brave_wallet.mojom.AssetRatioService;
import org.chromium.brave_wallet.mojom.BlockchainRegistry;
import org.chromium.brave_wallet.mojom.BlockchainToken;
-import org.chromium.brave_wallet.mojom.BraveWalletConstants;
import org.chromium.brave_wallet.mojom.BraveWalletService;
-import org.chromium.brave_wallet.mojom.CoinType;
import org.chromium.brave_wallet.mojom.JsonRpcService;
import org.chromium.brave_wallet.mojom.KeyringService;
import org.chromium.brave_wallet.mojom.NetworkInfo;
@@ -52,7 +52,7 @@ import org.chromium.chrome.browser.crypto_wallet.util.ParsedTransaction;
import org.chromium.chrome.browser.crypto_wallet.util.TokenUtils;
import org.chromium.chrome.browser.crypto_wallet.util.TransactionUtils;
import org.chromium.chrome.browser.crypto_wallet.util.Utils;
-import org.chromium.chrome.browser.crypto_wallet.util.WalletUtils;
+import org.chromium.chrome.browser.util.TabUtils;
import org.chromium.url.GURL;
import java.util.ArrayList;
@@ -212,7 +212,22 @@ public class ApproveTxBottomSheetDialogFragment extends BottomSheetDialogFragmen
assert jsonRpcService != null && keyringService != null;
TextView networkName = view.findViewById(R.id.network_name);
-
+ TextView txType = view.findViewById(R.id.tx_type);
+ if (mTxInfo.txType
+ == TransactionType
+ .SOLANA_SPL_TOKEN_TRANSFER_WITH_ASSOCIATED_TOKEN_ACCOUNT_CREATION) {
+ TextView associatedSplTokenInfo =
+ view.findViewById(R.id.tv_approve_dialog_additional_details);
+ associatedSplTokenInfo.setVisibility(View.VISIBLE);
+ Spanned associatedSPLTokenAccountInfo =
+ Utils.createSpanForSurroundedPhrase(getContext(),
+ R.string.brave_wallet_confirm_transaction_account_creation_fee, (v) -> {
+ TabUtils.openUrlInNewTab(false, Utils.BRAVE_SUPPORT_URL);
+ TabUtils.bringChromeTabbedActivityToTheTop(getActivity());
+ });
+ associatedSplTokenInfo.setMovementMethod(LinkMovementMethod.getInstance());
+ associatedSplTokenInfo.setText(associatedSPLTokenAccountInfo);
+ }
mCoinType = TransactionUtils.getCoinFromTxDataUnion(mTxInfo.txDataUnion);
jsonRpcService.getNetwork(mCoinType, selectedNetwork -> {
networkName.setText(selectedNetwork.chainName);
diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxDetailsFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxDetailsFragment.java
index 0035131950d..95273e18f69 100644
--- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxDetailsFragment.java
+++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxDetailsFragment.java
@@ -73,6 +73,18 @@ public class TxDetailsFragment extends Fragment {
functionType = getResources().getString(
R.string.wallet_details_function_type_erc721transfer);
break;
+ case TransactionType.SOLANA_SYSTEM_TRANSFER:
+ functionType = getResources().getString(
+ R.string.wallet_details_function_type_solana_system_transfer);
+ break;
+ case TransactionType.SOLANA_SPL_TOKEN_TRANSFER:
+ functionType = getResources().getString(
+ R.string.wallet_details_function_type_spl_token_transfer);
+ break;
+ case TransactionType.SOLANA_SPL_TOKEN_TRANSFER_WITH_ASSOCIATED_TOKEN_ACCOUNT_CREATION:
+ functionType = getResources().getString(
+ R.string.wallet_details_function_type_solana_spl_token_transfer_with_associated_token_account_creation);
+ break;
default:
break;
}
diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxFragment.java
index 692ff55fbba..146fa35daef 100644
--- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxFragment.java
+++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxFragment.java
@@ -27,6 +27,7 @@ import androidx.fragment.app.Fragment;
import org.chromium.brave_wallet.mojom.AccountInfo;
import org.chromium.brave_wallet.mojom.AssetPriceTimeframe;
import org.chromium.brave_wallet.mojom.BlockchainToken;
+import org.chromium.brave_wallet.mojom.CoinType;
import org.chromium.brave_wallet.mojom.EthTxManagerProxy;
import org.chromium.brave_wallet.mojom.NetworkInfo;
import org.chromium.brave_wallet.mojom.TransactionInfo;
@@ -111,6 +112,9 @@ public class TxFragment extends Fragment {
setupView(view);
View advanceSettingContainer = view.findViewById(R.id.fragment_tx_tv_advance_setting);
+ advanceSettingContainer.setVisibility(
+ isAdvanceSettingEnabled(mSelectedNetwork) ? View.VISIBLE : View.INVISIBLE);
+
advanceSettingContainer.setOnClickListener(v -> {
Intent toAdvanceTxSetting =
new Intent(requireActivity(), AdvanceTxSettingActivity.class);
@@ -121,6 +125,7 @@ public class TxFragment extends Fragment {
});
TextView editGasFee = view.findViewById(R.id.edit_gas_fee);
+ editGasFee.setVisibility(isEditTxEnabled(mSelectedNetwork) ? View.VISIBLE : View.INVISIBLE);
editGasFee.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -434,4 +439,12 @@ public class TxFragment extends Fragment {
}
}
}
+
+ private boolean isEditTxEnabled(NetworkInfo selectedNetwork) {
+ return selectedNetwork.coin == CoinType.ETH;
+ }
+
+ private boolean isAdvanceSettingEnabled(NetworkInfo selectedNetwork) {
+ return isEditTxEnabled(selectedNetwork);
+ }
}
diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java b/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java
index bcf6f2d4461..0e62b0de3fe 100644
--- a/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java
+++ b/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java
@@ -1307,8 +1307,8 @@ public class Utils {
Spannable spannable = new SpannableString(AndroidUtils.formatHTML(htmlString));
URLSpan[] spans = spannable.getSpans(0, spannable.length(), URLSpan.class);
for (URLSpan urlSpan : spans) {
- NoUnderlineClickableSpan linkSpan = new NoUnderlineClickableSpan(context,
- R.color.brave_theme_color, (view) -> { onClickListener.onClick(view); });
+ NoUnderlineClickableSpan linkSpan = new NoUnderlineClickableSpan(
+ context, (view) -> { onClickListener.onClick(view); });
int spanStart = spannable.getSpanStart(urlSpan);
int spanEnd = spannable.getSpanEnd(urlSpan);
spannable.setSpan(linkSpan, spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
diff --git a/android/java/res/layout/approve_tx_bottom_sheet.xml b/android/java/res/layout/approve_tx_bottom_sheet.xml
index 66fd04886fc..3f218f9a956 100644
--- a/android/java/res/layout/approve_tx_bottom_sheet.xml
+++ b/android/java/res/layout/approve_tx_bottom_sheet.xml
@@ -130,6 +130,20 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/amount_asset" />
+
+
@android:color/white
#C2C4CF
#272733
+ #453e2d
#84889C
diff --git a/android/java/res/values/brave_colors.xml b/android/java/res/values/brave_colors.xml
index f7b05e0067c..95819313352 100644
--- a/android/java/res/values/brave_colors.xml
+++ b/android/java/res/values/brave_colors.xml
@@ -28,6 +28,7 @@
@android:color/black
@android:color/black
#E1E3E4
+ #F0F2FF
#868E96
diff --git a/browser/ui/android/strings/android_brave_strings.grd b/browser/ui/android/strings/android_brave_strings.grd
index 9e50af14bce..d1252edda4b 100644
--- a/browser/ui/android/strings/android_brave_strings.grd
+++ b/browser/ui/android/strings/android_brave_strings.grd
@@ -2471,6 +2471,15 @@ If you don't accept this request, VPN will not reconnect and your internet conne
ERC20Approve
+
+ SolanaSystemTransfer
+
+
+ SPLTokenTransfer
+
+
+ SolanaSPLTokenTransferWithAssociatedTokenAccountCreation
+
%1$sAccount1 sent %2$s0.0444 %3$sETH ($%4$s10.00) - %5$s2021-11-12 08:38pm
@@ -3065,6 +3074,9 @@ If you don't accept this request, VPN will not reconnect and your internet conne
Not a valid SOL address
+
+ The associated token account does not exist yet. A small amount of SOL will be spent to create and fund it.%1$sLearn more%2$s
+