Updated on 2026-08-14
This commit is contained in:
commit
714eb51ce5
34 changed files with 345 additions and 114 deletions
|
|
@ -2,7 +2,10 @@ package com.tangem.core.analytics.models.event
|
|||
|
||||
import com.tangem.core.analytics.models.AnalyticsEvent
|
||||
import com.tangem.core.analytics.models.AnalyticsParam
|
||||
import com.tangem.core.analytics.models.AnalyticsParam.Key.ACTION
|
||||
import com.tangem.core.analytics.models.AnalyticsParam.Key.BLOCKCHAIN
|
||||
import com.tangem.core.analytics.models.AnalyticsParam.Key.ERROR_CODE
|
||||
import com.tangem.core.analytics.models.AnalyticsParam.Key.STATE
|
||||
import com.tangem.core.analytics.models.AnalyticsParam.Key.TOKEN_PARAM
|
||||
|
||||
/**
|
||||
|
|
@ -108,6 +111,21 @@ sealed class MainScreenAnalyticsEvent(
|
|||
event = "Hot Token Error",
|
||||
params = mapOf(ERROR_CODE to errorCode),
|
||||
)
|
||||
|
||||
data class ApyClicked(
|
||||
val token: String,
|
||||
val blockchain: String,
|
||||
val action: String,
|
||||
val state: String,
|
||||
) : MainScreenAnalyticsEvent(
|
||||
event = "APY Clicked",
|
||||
params = mapOf(
|
||||
TOKEN_PARAM to token,
|
||||
BLOCKCHAIN to blockchain,
|
||||
ACTION to action,
|
||||
STATE to state,
|
||||
),
|
||||
)
|
||||
// endregion
|
||||
|
||||
companion object {
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import com.tangem.datasource.api.tangemTech.models.YieldSupplyMarketTokenDto
|
|||
import com.tangem.datasource.api.tangemTech.models.YieldTokenChartResponse
|
||||
import retrofit2.http.Body
|
||||
import retrofit2.http.GET
|
||||
import retrofit2.http.Header
|
||||
import retrofit2.http.POST
|
||||
import retrofit2.http.Path
|
||||
import retrofit2.http.Query
|
||||
|
|
@ -34,6 +35,7 @@ interface YieldSupplyApi {
|
|||
@POST("api/v1/module/activate")
|
||||
suspend fun activateYieldModule(
|
||||
@Body body: YieldSupplyChangeTokenStatusBody,
|
||||
@Header("userWalletId") userWalletId: String,
|
||||
): ApiResponse<YieldModuleStatusResponse>
|
||||
|
||||
@POST("api/v1/module/deactivate")
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.tangem.core.ui.components.token.internal
|
|||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
|
|
@ -60,7 +61,11 @@ private fun ContentTitle(state: TokenTitleState.Content, modifier: Modifier = Mo
|
|||
YieldSupplyApyLabel(
|
||||
apy = state.earnApy,
|
||||
isActive = state.earnApyIsActive,
|
||||
modifier = Modifier.align(alignment = Alignment.CenterVertically),
|
||||
modifier = Modifier
|
||||
.align(alignment = Alignment.CenterVertically)
|
||||
.clickable {
|
||||
state.onApyLabelClick?.invoke()
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,9 @@ sealed class TokenItemState {
|
|||
/** Callback which will be called when an item is long clicked */
|
||||
abstract val onItemLongClick: ((TokenItemState) -> Unit)?
|
||||
|
||||
/** Callback which will be called when an apy label is clicked */
|
||||
abstract val onApyLabelClick: ((TokenItemState) -> Unit)?
|
||||
|
||||
/**
|
||||
* Loading token state
|
||||
*
|
||||
|
|
@ -58,6 +61,7 @@ sealed class TokenItemState {
|
|||
override val subtitle2State: Subtitle2State = Subtitle2State.Loading
|
||||
override val onItemClick: ((TokenItemState) -> Unit)? = null
|
||||
override val onItemLongClick: ((TokenItemState) -> Unit)? = null
|
||||
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -73,6 +77,7 @@ sealed class TokenItemState {
|
|||
override val subtitle2State: Subtitle2State = Subtitle2State.Locked
|
||||
override val onItemClick: ((TokenItemState) -> Unit)? = null
|
||||
override val onItemLongClick: ((TokenItemState) -> Unit)? = null
|
||||
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -96,6 +101,7 @@ sealed class TokenItemState {
|
|||
override val subtitle2State: Subtitle2State?,
|
||||
override val onItemClick: ((TokenItemState) -> Unit)?,
|
||||
override val onItemLongClick: ((TokenItemState) -> Unit)?,
|
||||
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null,
|
||||
) : TokenItemState()
|
||||
|
||||
/**
|
||||
|
|
@ -116,6 +122,7 @@ sealed class TokenItemState {
|
|||
override val fiatAmountState: FiatAmountState? = null
|
||||
override val onItemClick: ((TokenItemState) -> Unit)? = null
|
||||
override val onItemLongClick: ((TokenItemState) -> Unit)? = null
|
||||
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -133,6 +140,7 @@ sealed class TokenItemState {
|
|||
override val iconState: CurrencyIconState,
|
||||
override val titleState: TitleState,
|
||||
override val subtitleState: SubtitleState? = null,
|
||||
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null,
|
||||
override val onItemClick: ((TokenItemState) -> Unit)?,
|
||||
override val onItemLongClick: ((TokenItemState) -> Unit)?,
|
||||
) : TokenItemState() {
|
||||
|
|
@ -159,6 +167,7 @@ sealed class TokenItemState {
|
|||
override val fiatAmountState: FiatAmountState? = null
|
||||
override val subtitle2State: Subtitle2State? = null
|
||||
override val onItemClick: ((TokenItemState) -> Unit)? = null
|
||||
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null
|
||||
}
|
||||
|
||||
@Immutable
|
||||
|
|
@ -170,6 +179,7 @@ sealed class TokenItemState {
|
|||
val isAvailable: Boolean = true,
|
||||
val earnApy: TextReference? = null,
|
||||
val earnApyIsActive: Boolean = false,
|
||||
val onApyLabelClick: (() -> Unit)? = null,
|
||||
) : TitleState()
|
||||
|
||||
data object Loading : TitleState()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue