From 3e73b6f79ce336bc6a151311f4dce2448b12ea23 Mon Sep 17 00:00:00 2001 From: tyleroooo Date: Wed, 16 Oct 2024 14:58:24 -0400 Subject: [PATCH] fix: ack vault terms (#714) --- build.gradle.kts | 2 +- .../vault/VaultDepositWithdrawForm.kt | 15 ++++++++++++++ .../state/manager/Environment.kt | 3 +++ .../functional/vault/VaultFormTests.kt | 20 +++++++++++++++++++ .../tests/payloads/AbacusMockData.kt | 1 + v4_abacus.podspec | 2 +- 6 files changed, 41 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 62fe5de61..15d9adf5c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -52,7 +52,7 @@ allprojects { } group = "exchange.dydx.abacus" -version = "1.12.30" +version = "1.12.31" repositories { google() diff --git a/src/commonMain/kotlin/exchange.dydx.abacus/functional/vault/VaultDepositWithdrawForm.kt b/src/commonMain/kotlin/exchange.dydx.abacus/functional/vault/VaultDepositWithdrawForm.kt index a4defabe7..0d0e1936c 100644 --- a/src/commonMain/kotlin/exchange.dydx.abacus/functional/vault/VaultDepositWithdrawForm.kt +++ b/src/commonMain/kotlin/exchange.dydx.abacus/functional/vault/VaultDepositWithdrawForm.kt @@ -24,6 +24,7 @@ data class VaultFormData( val action: VaultFormAction, val amount: Double?, val acknowledgedSlippage: Boolean, + val acknowledgedTerms: Boolean, val inConfirmationStep: Boolean, ) @@ -164,6 +165,13 @@ internal class VaultFormValidationErrors( titleKey = "APP.VAULTS.ACKNOWLEDGE_HIGH_SLIPPAGE", ) + fun mustAckTerms() = createError( + code = "MUST_ACK_TERMS", + type = ErrorType.error, + fields = listOf("acknowledgeTerms"), + titleKey = "APP.VAULTS.ACKNOWLEDGE_MEGAVAULT_TERMS", + ) + fun vaultAccountMissing() = createError( code = "VAULT_ACCOUNT_MISSING", type = ErrorType.error, @@ -206,6 +214,7 @@ data class VaultWithdrawData( @Serializable data class VaultFormSummaryData( val needSlippageAck: Boolean?, + val needTermsAck: Boolean?, val marginUsage: Double?, val freeCollateral: Double?, val vaultBalance: Double?, @@ -328,6 +337,7 @@ object VaultDepositWithdrawFormValidator { 0.0 } val needSlippageAck = slippagePercent >= SLIPPAGE_PERCENT_ACK && formData.inConfirmationStep + val needTermsAck = formData.action == VaultFormAction.DEPOSIT && formData.inConfirmationStep // Perform validation checks and populate errors list if (accountData == null) { @@ -354,6 +364,10 @@ object VaultDepositWithdrawFormValidator { } } + if (needTermsAck && !formData.acknowledgedTerms) { + errors.add(vaultFormValidationErrors.mustAckTerms()) + } + when (formData.action) { VaultFormAction.DEPOSIT -> { if (postOpFreeCollateral != null && postOpFreeCollateral < 0) { @@ -424,6 +438,7 @@ object VaultDepositWithdrawFormValidator { // Prepare summary data val summaryData = VaultFormSummaryData( needSlippageAck = needSlippageAck, + needTermsAck = needTermsAck, marginUsage = postOpMarginUsage, freeCollateral = postOpFreeCollateral, vaultBalance = postOpVaultBalance, diff --git a/src/commonMain/kotlin/exchange.dydx.abacus/state/manager/Environment.kt b/src/commonMain/kotlin/exchange.dydx.abacus/state/manager/Environment.kt index 06864aacf..ed40b7b7e 100644 --- a/src/commonMain/kotlin/exchange.dydx.abacus/state/manager/Environment.kt +++ b/src/commonMain/kotlin/exchange.dydx.abacus/state/manager/Environment.kt @@ -78,6 +78,7 @@ data class EnvironmentLinks( val blogs: String?, val help: String?, val vaultLearnMore: String?, + val vaultTos: String?, val launchIncentive: String?, val statusPage: String?, val withdrawalGateLearnMore: String?, @@ -102,6 +103,7 @@ data class EnvironmentLinks( val statusPage = parser.asString(data["statusPage"]) val withdrawalGateLearnMore = parser.asString(data["withdrawalGateLearnMore"]) val equityTiersLearnMore = parser.asString(data["equityTiersLearnMore"]) + val vaultTos = parser.asString(data["vaultTos"]) return EnvironmentLinks( tos, privacy, @@ -113,6 +115,7 @@ data class EnvironmentLinks( blogs, help, vaultLearnMore, + vaultTos, launchIncentive, statusPage, withdrawalGateLearnMore, diff --git a/src/commonTest/kotlin/exchange.dydx.abacus/functional/vault/VaultFormTests.kt b/src/commonTest/kotlin/exchange.dydx.abacus/functional/vault/VaultFormTests.kt index 93ed1829e..9aecd973b 100644 --- a/src/commonTest/kotlin/exchange.dydx.abacus/functional/vault/VaultFormTests.kt +++ b/src/commonTest/kotlin/exchange.dydx.abacus/functional/vault/VaultFormTests.kt @@ -133,6 +133,7 @@ class VaultFormTests { action = VaultFormAction.DEPOSIT, amount = 100.0, acknowledgedSlippage = true, + acknowledgedTerms = true, inConfirmationStep = true, ), accountData = VaultFormAccountData( @@ -160,6 +161,7 @@ class VaultFormTests { ), summaryData = VaultFormSummaryData( needSlippageAck = false, + needTermsAck = true, marginUsage = 0.5263157894736843, freeCollateral = 900.0, vaultBalance = 600.0, @@ -179,6 +181,7 @@ class VaultFormTests { action = VaultFormAction.WITHDRAW, amount = 100.0, acknowledgedSlippage = true, + acknowledgedTerms = false, inConfirmationStep = true, ), accountData = VaultFormAccountData( @@ -212,6 +215,7 @@ class VaultFormTests { ), summaryData = VaultFormSummaryData( needSlippageAck = false, + needTermsAck = false, marginUsage = 0.4766444232602478, freeCollateral = 1098.0, vaultBalance = 400.0, @@ -232,6 +236,7 @@ class VaultFormTests { action = VaultFormAction.WITHDRAW, amount = 100.0, acknowledgedSlippage = true, + acknowledgedTerms = false, inConfirmationStep = true, ), accountData = VaultFormAccountData( @@ -259,6 +264,7 @@ class VaultFormTests { submissionData = null, summaryData = VaultFormSummaryData( needSlippageAck = false, + needTermsAck = false, marginUsage = 0.4766444232602478, freeCollateral = 1098.0, vaultBalance = 400.0, @@ -278,6 +284,7 @@ class VaultFormTests { action = VaultFormAction.WITHDRAW, amount = 600.0, acknowledgedSlippage = false, + acknowledgedTerms = false, inConfirmationStep = true, ), accountData = VaultFormAccountData( @@ -306,6 +313,7 @@ class VaultFormTests { submissionData = null, summaryData = VaultFormSummaryData( needSlippageAck = true, + needTermsAck = false, marginUsage = 0.4, freeCollateral = 1500.0, vaultBalance = -100.0, @@ -325,6 +333,7 @@ class VaultFormTests { action = VaultFormAction.DEPOSIT, amount = 10.0, acknowledgedSlippage = false, + acknowledgedTerms = false, inConfirmationStep = false, ), accountData = VaultFormAccountData( @@ -348,6 +357,7 @@ class VaultFormTests { submissionData = null, summaryData = VaultFormSummaryData( needSlippageAck = false, + needTermsAck = false, marginUsage = 0.5025125628140703, freeCollateral = 990.0, vaultBalance = 1010.0, @@ -367,6 +377,7 @@ class VaultFormTests { action = VaultFormAction.DEPOSIT, amount = 100.0, acknowledgedSlippage = true, + acknowledgedTerms = true, inConfirmationStep = true, ), accountData = VaultFormAccountData( @@ -391,6 +402,7 @@ class VaultFormTests { ), summaryData = VaultFormSummaryData( needSlippageAck = false, + needTermsAck = true, marginUsage = 0.5263157894736843, freeCollateral = 900.0, vaultBalance = 100.0, @@ -410,6 +422,7 @@ class VaultFormTests { action = VaultFormAction.WITHDRAW, amount = 10.0, acknowledgedSlippage = false, + acknowledgedTerms = false, inConfirmationStep = false, ), accountData = VaultFormAccountData( @@ -436,6 +449,7 @@ class VaultFormTests { submissionData = null, summaryData = VaultFormSummaryData( needSlippageAck = false, + needTermsAck = false, marginUsage = 0.49751243781094523, freeCollateral = 1010.0, vaultBalance = 990.0, @@ -455,6 +469,7 @@ class VaultFormTests { action = VaultFormAction.WITHDRAW, amount = 10.0, acknowledgedSlippage = false, + acknowledgedTerms = false, inConfirmationStep = false, ), accountData = VaultFormAccountData( @@ -486,6 +501,7 @@ class VaultFormTests { ), summaryData = VaultFormSummaryData( needSlippageAck = false, + needTermsAck = false, marginUsage = 0.49751243781094523, freeCollateral = 1010.0, vaultBalance = 990.0, @@ -505,6 +521,7 @@ class VaultFormTests { action = VaultFormAction.WITHDRAW, amount = 6.0, acknowledgedSlippage = false, + acknowledgedTerms = false, inConfirmationStep = false, ), accountData = VaultFormAccountData( @@ -531,6 +548,7 @@ class VaultFormTests { submissionData = null, summaryData = VaultFormSummaryData( needSlippageAck = false, + needTermsAck = false, marginUsage = 0.4985044865403788, freeCollateral = 1006.0, vaultBalance = 994.0, @@ -550,6 +568,7 @@ class VaultFormTests { action = VaultFormAction.WITHDRAW, amount = 500.0, acknowledgedSlippage = true, + acknowledgedTerms = false, inConfirmationStep = true, ), accountData = VaultFormAccountData( @@ -583,6 +602,7 @@ class VaultFormTests { ), summaryData = VaultFormSummaryData( needSlippageAck = true, + needTermsAck = false, marginUsage = 0.41666666666666663, freeCollateral = 1400.0, vaultBalance = 0.0, diff --git a/src/commonTest/kotlin/exchange.dydx.abacus/tests/payloads/AbacusMockData.kt b/src/commonTest/kotlin/exchange.dydx.abacus/tests/payloads/AbacusMockData.kt index fb9792217..e6d6f2b6e 100644 --- a/src/commonTest/kotlin/exchange.dydx.abacus/tests/payloads/AbacusMockData.kt +++ b/src/commonTest/kotlin/exchange.dydx.abacus/tests/payloads/AbacusMockData.kt @@ -82,6 +82,7 @@ class AbacusMockData { blogs = "https://www.dydx.foundation/blog", help = "https://help.dydx.exchange/", vaultLearnMore = "https://help.dydx.exchange/", + vaultTos = "https://help.dydx.exchange/", launchIncentive = "https://dydx.exchange/v4-launch-incentive", statusPage = "https://status.v4testnet.dydx.exchange/", withdrawalGateLearnMore = "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665", diff --git a/v4_abacus.podspec b/v4_abacus.podspec index eed1e4150..a20fa3785 100644 --- a/v4_abacus.podspec +++ b/v4_abacus.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'v4_abacus' - spec.version = '1.12.30' + spec.version = '1.12.31' spec.homepage = 'https://github.com/dydxprotocol/v4-abacus' spec.source = { :http=> ''} spec.authors = ''