From 335c97b202b090d2fb6adee4966b58d989f3b8c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20J=C3=A4ckel?= Date: Wed, 30 Aug 2023 11:41:13 +0200 Subject: [PATCH 1/5] Update version for release (#1992) --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 41603e8d4..5e0eb3e79 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,7 +14,7 @@ android { defaultConfig { applicationId "io.gnosis.safe" versionCode getInt("APP_VERSION_CODE", 703) - versionName getKey("APP_VERSION_NAME", "3.8.0") + versionName getKey("APP_VERSION_NAME", "3.9.0") testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // Infura API key From 5a7f1c943e89898c0ad66a8519944330287e3828 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20J=C3=A4ckel?= Date: Thu, 31 Aug 2023 14:09:08 +0200 Subject: [PATCH 2/5] Disable ledger keys for execution (#1999) * Fix color in tx details for pending * Ignore ledger keys when selecting default execution key (until ledger execution is implemented) * Exclude ledger owners from list * Disable execution button if no owners are available * Fix test --- .../gnosis/safe/ui/settings/owner/list/OwnerListViewModel.kt | 2 +- .../ui/transactions/details/TransactionDetailsFragment.kt | 2 +- .../ui/transactions/details/TransactionDetailsViewModel.kt | 4 +++- .../safe/ui/transactions/execution/TxReviewViewModel.kt | 3 +++ .../transactions/details/TransactionDetailsViewModelTest.kt | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/io/gnosis/safe/ui/settings/owner/list/OwnerListViewModel.kt b/app/src/main/java/io/gnosis/safe/ui/settings/owner/list/OwnerListViewModel.kt index a605190bc..8a33e8bb9 100644 --- a/app/src/main/java/io/gnosis/safe/ui/settings/owner/list/OwnerListViewModel.kt +++ b/app/src/main/java/io/gnosis/safe/ui/settings/owner/list/OwnerListViewModel.kt @@ -70,7 +70,7 @@ class OwnerListViewModel .sortedBy { it.name } val acceptedOwners = owners.filter { localOwner -> safe.signingOwners.any { - localOwner.address == it + localOwner.address == it && localOwner.type != Owner.Type.LEDGER_NANO_X } } val balances = rpcClient.getBalances(acceptedOwners.map { it.address }) diff --git a/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsFragment.kt b/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsFragment.kt index f063d719f..79d9e99a1 100644 --- a/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsFragment.kt +++ b/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsFragment.kt @@ -456,7 +456,7 @@ class TransactionDetailsFragment : BaseViewBindingFragment R.color.success TransactionStatus.CANCELLED -> R.color.label_secondary TransactionStatus.FAILED -> R.color.error - TransactionStatus.PENDING -> R.color.label_secondary + TransactionStatus.PENDING -> R.color.warning } @StringRes diff --git a/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsViewModel.kt b/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsViewModel.kt index c773b2449..2a8504c7c 100644 --- a/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsViewModel.kt +++ b/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsViewModel.kt @@ -1,6 +1,7 @@ package io.gnosis.safe.ui.transactions.details import androidx.annotation.VisibleForTesting +import io.gnosis.data.models.AddressInfo import io.gnosis.data.models.Owner import io.gnosis.data.models.Safe import io.gnosis.data.models.TransactionLocal @@ -135,7 +136,8 @@ class TransactionDetailsViewModel executionInfo: DetailedExecutionInfo.MultisigExecutionDetails, localOwners: List ): Boolean { - return localOwners.isNotEmpty() && executionInfo.confirmations.size == executionInfo.confirmationsRequired + val ownersThatCanExecute = localOwners.filter { it.type != Owner.Type.LEDGER_NANO_X && executionInfo.signers.contains(AddressInfo(it.address))} + return ownersThatCanExecute.isNotEmpty() && executionInfo.confirmations.size == executionInfo.confirmationsRequired } @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) diff --git a/app/src/main/java/io/gnosis/safe/ui/transactions/execution/TxReviewViewModel.kt b/app/src/main/java/io/gnosis/safe/ui/transactions/execution/TxReviewViewModel.kt index e0629cdc3..37d430b5a 100644 --- a/app/src/main/java/io/gnosis/safe/ui/transactions/execution/TxReviewViewModel.kt +++ b/app/src/main/java/io/gnosis/safe/ui/transactions/execution/TxReviewViewModel.kt @@ -123,6 +123,9 @@ class TxReviewViewModel rpcClient.getBalances(acceptedOwners.map { it.address }) }.onSuccess { executionKey = acceptedOwners + .filter { + it.type != Owner.Type.LEDGER_NANO_X + } .mapIndexed { index, owner -> owner to it[index] } diff --git a/app/src/test/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsViewModelTest.kt b/app/src/test/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsViewModelTest.kt index 5f1ec4b99..baa4b01ee 100644 --- a/app/src/test/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsViewModelTest.kt +++ b/app/src/test/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsViewModelTest.kt @@ -720,7 +720,7 @@ class TransactionDetailsViewModelTest { txDetails = transactionDetails.toTransactionDetailsViewData( safes = emptyList(), canSign = false, - canExecute = true, + canExecute = false, nextInLine = false, hasOwnerKey = false, owners = listOf(owner) From 914e159ec9295f78540666863db627c10aa05022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20Ja=CC=88ckel?= Date: Thu, 31 Aug 2023 16:29:23 +0200 Subject: [PATCH 3/5] update CGW url --- data/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/build.gradle b/data/build.gradle index 5707b4cca..24519cd6a 100644 --- a/data/build.gradle +++ b/data/build.gradle @@ -38,7 +38,7 @@ android { buildTypes { debug { - buildConfigField ("String", "CLIENT_GATEWAY_URL", '"https://safe-client-nest.staging.5afe.dev/"') + buildConfigField ("String", "CLIENT_GATEWAY_URL", '"https://safe-client.staging.5afe.dev/"') buildConfigField (javaTypes.INT, "CHAIN_ID", "5") buildConfigField (javaTypes.STRING, "CHAIN_TEXT_COLOR", asString("#ffffff")) buildConfigField (javaTypes.STRING, "CHAIN_BACKGROUND_COLOR", asString("#4D99EB")) @@ -49,7 +49,7 @@ android { } profile { - buildConfigField javaTypes.STRING, "CLIENT_GATEWAY_URL", asString(getKey("CLIENT_GATEWAY_URL", "https://safe-client-nest.staging.5afe.dev/")) + buildConfigField javaTypes.STRING, "CLIENT_GATEWAY_URL", asString(getKey("CLIENT_GATEWAY_URL", "https://safe-client.staging.5afe.dev/")) buildConfigField (javaTypes.INT, "CHAIN_ID", "5") buildConfigField (javaTypes.STRING, "CHAIN_TEXT_COLOR", asString("#ffffff")) buildConfigField (javaTypes.STRING, "CHAIN_BACKGROUND_COLOR", asString("#4D99EB")) @@ -71,7 +71,7 @@ android { } internal { - buildConfigField javaTypes.STRING, "CLIENT_GATEWAY_URL", asString(getKey("CLIENT_GATEWAY_URL", "https://safe-client-nest.staging.5afe.dev/")) + buildConfigField javaTypes.STRING, "CLIENT_GATEWAY_URL", asString(getKey("CLIENT_GATEWAY_URL", "https://safe-client.staging.5afe.dev/")) buildConfigField (javaTypes.INT, "CHAIN_ID", "5") buildConfigField (javaTypes.STRING, "CHAIN_TEXT_COLOR", asString("#ffffff")) buildConfigField (javaTypes.STRING, "CHAIN_BACKGROUND_COLOR", asString("#4D99EB")) From 8d2866ed870bdade1912665745dda0cd0e6213e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20Ja=CC=88ckel?= Date: Thu, 31 Aug 2023 19:07:12 +0200 Subject: [PATCH 4/5] Use txId returned by CGW instead of tx hash for up to date results --- .../safe/ui/safe/send_funds/SendAssetReviewViewModel.kt | 8 ++++---- .../ui/transactions/details/TransactionDetailsFragment.kt | 4 ++-- .../gnosis/data/models/transaction/TransactionDetails.kt | 2 ++ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SendAssetReviewViewModel.kt b/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SendAssetReviewViewModel.kt index a76090dfb..fdf36a17f 100644 --- a/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SendAssetReviewViewModel.kt +++ b/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SendAssetReviewViewModel.kt @@ -251,10 +251,10 @@ class SendAssetReviewViewModel SendAssetReviewState( ViewAction.NavigateTo( SendAssetReviewFragmentDirections.actionSendAssetReviewFragmentToSendAssetSuccessFragment( - activeSafe.chain, - safeTxHash, - amountString, - selectedAsset.symbol + chain = activeSafe.chain, + txId = safeTxHash, // to get non cached updates later we need the txId not the hash + amount = amountString, + token = selectedAsset.symbol ) ) ) diff --git a/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsFragment.kt b/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsFragment.kt index 79d9e99a1..fcee95b12 100644 --- a/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsFragment.kt +++ b/app/src/main/java/io/gnosis/safe/ui/transactions/details/TransactionDetailsFragment.kt @@ -70,7 +70,7 @@ class TransactionDetailsFragment : BaseViewBindingFragment Date: Thu, 31 Aug 2023 19:20:02 +0200 Subject: [PATCH 5/5] Added pending step --- .../transactions/details/view/TxConfirmationsView.kt | 11 ++++++++++- app/src/main/res/values/strings.xml | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/gnosis/safe/ui/transactions/details/view/TxConfirmationsView.kt b/app/src/main/java/io/gnosis/safe/ui/transactions/details/view/TxConfirmationsView.kt index 6b2fb14a4..78d19d5fc 100644 --- a/app/src/main/java/io/gnosis/safe/ui/transactions/details/view/TxConfirmationsView.kt +++ b/app/src/main/java/io/gnosis/safe/ui/transactions/details/view/TxConfirmationsView.kt @@ -121,6 +121,9 @@ class TxConfirmationsView @JvmOverloads constructor( TransactionStatus.FAILED -> { addExecutionStep(TxExecutionStep.Type.FAILED) } + TransactionStatus.PENDING -> { + addExecutionStep(TxExecutionStep.Type.PENDING) + } } } @@ -241,7 +244,8 @@ class TxConfirmationsView @JvmOverloads constructor( EXECUTE_WAITING, EXECUTE_READY, EXECUTE_DONE, - REJECTION_CREATED + REJECTION_CREATED, + PENDING } private val binding by lazy { ViewTxConfirmationsExecutionStepBinding.inflate(LayoutInflater.from(context), this) } @@ -297,6 +301,11 @@ class TxConfirmationsView @JvmOverloads constructor( stepTitle.text = resources.getString(R.string.tx_confirmations_rejection_created) stepTitle.setTextColor(ContextCompat.getColor(context, R.color.error)) } + Type.PENDING -> { + stepIcon.setImageResource(R.drawable.ic_tx_confirmations_execute_ready_16dp) + stepTitle.text = resources.getString(R.string.tx_confirmations_pending) + stepTitle.setTextColor(ContextCompat.getColor(context, R.color.primary)) + } } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2406394f4..324f405c2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -466,6 +466,7 @@ Execute (%1$d more confirmation needed) Executed On-chain rejection created + Pending Add owner key Import existing owner key