Updated on 2026-08-14

This commit is contained in:
Tangem 2026-07-15 14:51:10 +03:00
parent 1cfaf5a283
commit 23f864b18d
25 changed files with 304 additions and 1 deletions

View file

@ -0,0 +1,21 @@
plugins {
alias(deps.plugins.android.library)
alias(deps.plugins.kotlin.android)
id("configuration")
}
android {
namespace = "com.tangem.features.polymarket.api"
}
dependencies {
/** Core */
implementation(projects.core.decompose)
implementation(projects.core.ui)
/** Domain */
implementation(projects.domain.models)
/** Compose */
implementation(deps.compose.runtime)
}

View file

@ -0,0 +1,14 @@
package com.tangem.features.polymarket.api
import com.tangem.core.decompose.factory.ComponentFactory
import com.tangem.core.ui.decompose.ComposableContentComponent
import com.tangem.domain.models.wallet.UserWalletId
interface PolymarketComponent : ComposableContentComponent {
data class Params(
val userWalletId: UserWalletId,
)
interface Factory : ComponentFactory<Params, PolymarketComponent>
}

View file

@ -0,0 +1,5 @@
package com.tangem.features.polymarket.api
interface PolymarketFeatureToggles {
val isPolymarketEnabled: Boolean
}

View file

@ -0,0 +1,32 @@
plugins {
alias(deps.plugins.android.library)
alias(deps.plugins.kotlin.android)
alias(deps.plugins.kotlin.kapt)
alias(deps.plugins.hilt.android)
id("configuration")
}
android {
namespace = "com.tangem.features.polymarket.impl"
}
dependencies {
/** Feature */
implementation(projects.features.polymarket.api)
/** Core */
implementation(projects.core.configToggles)
implementation(projects.core.decompose)
implementation(projects.core.ui)
/** Compose */
implementation(deps.compose.foundation)
implementation(deps.compose.runtime)
implementation(deps.compose.material3)
implementation(deps.compose.ui)
/** DI */
implementation(deps.hilt.android)
kapt(deps.hilt.kapt)
}

View file

@ -0,0 +1,35 @@
package com.tangem.features.polymarket.impl
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.features.polymarket.api.PolymarketComponent
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
internal class DefaultPolymarketComponent @AssistedInject constructor(
@Assisted appComponentContext: AppComponentContext,
@Assisted private val params: PolymarketComponent.Params,
) : PolymarketComponent, AppComponentContext by appComponentContext {
@Composable
override fun Content(modifier: Modifier) {
// TODO([REDACTED_TASK_KEY]): real Polymarket prediction account UI
Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
Text(text = params.userWalletId.stringValue)
}
}
@AssistedFactory
interface Factory : PolymarketComponent.Factory {
override fun create(
context: AppComponentContext,
params: PolymarketComponent.Params,
): DefaultPolymarketComponent
}
}

View file

@ -0,0 +1,32 @@
package com.tangem.features.polymarket.impl.di
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
import com.tangem.features.polymarket.api.PolymarketComponent
import com.tangem.features.polymarket.api.PolymarketFeatureToggles
import com.tangem.features.polymarket.impl.DefaultPolymarketComponent
import com.tangem.features.polymarket.impl.featuretoggles.DefaultPolymarketFeatureToggles
import dagger.Binds
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
internal interface PolymarketBindsModule {
@Binds
@Singleton
fun providePolymarketComponentFactory(impl: DefaultPolymarketComponent.Factory): PolymarketComponent.Factory
}
@Module
@InstallIn(SingletonComponent::class)
internal object PolymarketFeatureTogglesModule {
@Provides
@Singleton
fun providePolymarketFeatureToggles(featureTogglesManager: FeatureTogglesManager): PolymarketFeatureToggles {
return DefaultPolymarketFeatureToggles(featureTogglesManager = featureTogglesManager)
}
}

View file

@ -0,0 +1,13 @@
package com.tangem.features.polymarket.impl.featuretoggles
import com.tangem.core.configtoggle.FeatureToggles
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
import com.tangem.features.polymarket.api.PolymarketFeatureToggles
import javax.inject.Inject
internal class DefaultPolymarketFeatureToggles @Inject constructor(
private val featureTogglesManager: FeatureTogglesManager,
) : PolymarketFeatureToggles {
override val isPolymarketEnabled: Boolean
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.AND_16204_POLYMARKET_ENABLED)
}