Updated on 2026-08-14

This commit is contained in:
Tangem 2025-10-06 14:30:09 +05:00
parent d84c61dc58
commit 4c8c06416f
21 changed files with 620 additions and 91 deletions

View file

@ -41,47 +41,32 @@ internal class YieldSupply(
private fun createDevEnvironment(): ApiEnvironmentConfig = ApiEnvironmentConfig(
environment = ApiEnvironment.DEV,
baseUrl = "[REDACTED_ENV_URL]",
headers = createHeaders(ApiEnvironment.DEV),
headers = createHeaders(),
)
private fun createStageEnvironment(): ApiEnvironmentConfig = ApiEnvironmentConfig(
environment = ApiEnvironment.STAGE,
baseUrl = "[REDACTED_ENV_URL]",
headers = createHeaders(ApiEnvironment.STAGE),
headers = createHeaders(),
)
private fun createMockedEnvironment(): ApiEnvironmentConfig = ApiEnvironmentConfig(
environment = ApiEnvironment.MOCK,
baseUrl = "[REDACTED_ENV_URL]",
headers = createHeaders(ApiEnvironment.MOCK),
headers = createHeaders(),
)
private fun createProdEnvironment(): ApiEnvironmentConfig = ApiEnvironmentConfig(
environment = ApiEnvironment.PROD,
baseUrl = "https://yield.tangem.org/",
headers = createHeaders(ApiEnvironment.PROD),
headers = createHeaders(),
)
private fun createHeaders(apiEnvironment: ApiEnvironment) = buildMap {
put(
key = "Authorization",
value = ProviderSuspend {
"Bearer " + environmentConfigStorage.getConfigSync().yieldModuleApiKey
},
)
put(key = "api-key", value = ProviderSuspend { getApiKey(apiEnvironment) })
private fun createHeaders() = buildMap {
put(key = "api-key", value = ProviderSuspend {
environmentConfigStorage.getConfigSync().yieldModuleApiKey.orEmpty()
})
putAll(from = RequestHeader.AppVersionPlatformHeaders(appVersionProvider, appInfoProvider).values)
putAll(from = RequestHeader.AuthenticationHeader(authProvider).values)
}
private fun getApiKey(apiEnvironment: ApiEnvironment): String {
return when (apiEnvironment) {
ApiEnvironment.MOCK,
ApiEnvironment.DEV,
ApiEnvironment.DEV_2,
-> environmentConfigStorage.getConfigSync().tangemApiKeyDev
ApiEnvironment.STAGE -> environmentConfigStorage.getConfigSync().tangemApiKeyStage
ApiEnvironment.PROD -> environmentConfigStorage.getConfigSync().tangemApiKey
} ?: error("No tangem tech api config provided")
}
}

View file

@ -198,8 +198,7 @@ internal class ProdApiConfigsManagerTest {
environment = ApiEnvironment.PROD,
baseUrl = "https://yield.tangem.org/",
headers = mapOf(
"Authorization" to ProviderSuspend { "Bearer " + MockEnvironmentConfigStorage.YIELD_MODULE_KEY },
"api-key" to ProviderSuspend { MockEnvironmentConfigStorage.TANGEM_API_KEY },
"api-key" to ProviderSuspend { MockEnvironmentConfigStorage.YIELD_MODULE_KEY },
"card_id" to ProviderSuspend { APP_CARD_ID },
"card_public_key" to ProviderSuspend { APP_CARD_PUBLIC_KEY },
"version" to ProviderSuspend { VERSION_NAME },

View file

@ -1266,8 +1266,12 @@
<string name="unlock_wallet_description_full">Используйте %s или отсканируйте карту/кольцо, чтобы получить доступ к своему кошельку</string>
<string name="unsupported_wc_version">Соединение не удалось: это dApp использует Wallet Connect версии 1.0, которая не поддерживается. Убедитесь, что dApp поддерживает Wallet Connect версии 2.0 для успешного подключения.</string>
<string name="user_push_notification_agreement_argument_one">Будьте в курсе новых функций и новостей</string>
<string name="user_push_notification_agreement_argument_one_subtitle">Мгновенные уведомления о транзакциях, обменах и важных обновлениях.</string>
<string name="user_push_notification_agreement_argument_one_title">Уведомления о транзакциях</string>
<string name="user_push_notification_agreement_argument_three">Получайте уведомления о входящих транзакциях</string>
<string name="user_push_notification_agreement_argument_two">Узнавайте первым о новых акциях</string>
<string name="user_push_notification_agreement_argument_two_subtitle">Ранний доступ к новым функциям и эксклюзивным предложениям.</string>
<string name="user_push_notification_agreement_argument_two_title">Новые функции и важные новости</string>
<string name="user_push_notification_agreement_header">Хотите использовать Push-уведомления?</string>
<string name="user_wallet_list_add_button">Добавить новый кошелек</string>
<string name="user_wallet_list_delete_prompt">Вы уверены, что хотите забыть этот кошелек?</string>

View file

@ -1743,6 +1743,7 @@
<string name="yield_module_approve_sheet_title">Confirm approval</string>
<string name="yield_module_balance_info_sheet_subtitle">Text about your money in balance [PLACEHOLDER]</string>
<string name="yield_module_balance_info_sheet_title">Your %s is deposited in Aave</string>
<string name="yield_module_chart_loading_error">Unable to load chart...</string>
<string name="yield_module_deposit_error_notification_title">The amount received, %1$s %2$s was not deposited to Aave.</string>
<string name="yield_module_earn_badge">Earn %1$s%%</string>
<string name="yield_module_earn_sheet_available_title">Available</string>
@ -1760,6 +1761,7 @@
<string name="yield_module_fee_policy_sheet_max_fee_title">Maximum fee</string>
<string name="yield_module_fee_policy_sheet_title">Fee policy</string>
<string name="yield_module_high_fee_error">Network fee is too high right now. Waiting until it falls below your limit.</string>
<string name="yield_module_historical_returns">Historical returns</string>
<string name="yield_module_main_view_approve_notification_description">Write description here. In one, two or three lines will be awesome. [PLACEHOLDER]</string>
<string name="yield_module_main_view_approve_notification_title">Some token approve needed</string>
<string name="yield_module_network_fee_unreachable_notification_description">Check your network connection</string>
@ -1790,6 +1792,7 @@
<string name="yield_module_stop_earning">Stop earning</string>
<string name="yield_module_stop_earning_sheet_description">Turning off will withdraw your funds from Aave, return them to %s in your wallet, and stop earning rewards.</string>
<string name="yield_module_stop_earning_sheet_fee_note">The network fee will be deducted from the amount you withdraw.</string>
<string name="yield_module_supply_apr">Supply APR</string>
<string name="yield_module_token_details_earn_notification_apy">APY</string>
<string name="yield_module_token_details_earn_notification_description">Make your money work — earn interest on your balance.</string>
<string name="yield_module_token_details_earn_notification_earning_on_your_balance_title">Earning on your balance</string>

View file

@ -5,9 +5,12 @@ import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.animateColorAsState
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.material3.ripple
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
@ -82,7 +85,11 @@ fun Label(state: LabelUM, modifier: Modifier = Modifier) {
imageVector = ImageVector.vectorResource(wrappedIcon),
tint = iconColor,
contentDescription = null,
modifier = Modifier.size(16.dp),
modifier = Modifier.size(16.dp).clickable(
interactionSource = remember { MutableInteractionSource() },
indication = ripple(bounded = false),
onClick = { state.onIconClick?.invoke() },
),
)
}
}

View file

@ -2,7 +2,7 @@ package com.tangem.utils
import java.util.Locale
object TangemLinks {
object TangemBlogUrlBuilder {
private const val RU_LOCALE = "ru"
private const val EN_LOCALE = "en"