Updated on 2026-08-14
This commit is contained in:
parent
f91ba3f7d3
commit
9709893da7
12 changed files with 89 additions and 73 deletions
|
|
@ -6,8 +6,8 @@ internal sealed class SprinklrUrl {
|
|||
class Prod(userId: String, baseUrl: String, appId: String) : SprinklrUrl() {
|
||||
private val locale = java.util.Locale.getDefault().language
|
||||
|
||||
override val url: String = "$baseUrl/page?" +
|
||||
"appId=$appId" +
|
||||
override val url: String = "$baseUrl/page" +
|
||||
"?appId=$appId" +
|
||||
"&device=$Device" +
|
||||
"&enableClose=$CloseEnabled" +
|
||||
"&zoom=$ZoomEnabled" +
|
||||
|
|
|
|||
|
|
@ -2,23 +2,26 @@ package com.tangem.tap.features.sprinklr.ui
|
|||
|
||||
import android.os.Bundle
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.activity.viewModels
|
||||
import androidx.compose.foundation.layout.imePadding
|
||||
import androidx.compose.foundation.layout.systemBarsPadding
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.fragment.app.viewModels
|
||||
import com.tangem.core.analytics.Analytics
|
||||
import com.tangem.core.ui.fragments.ComposeFragment
|
||||
import com.tangem.core.ui.fragments.ComposeActivity
|
||||
import com.tangem.tap.common.analytics.events.Chat
|
||||
|
||||
internal class SprinklrFragment : ComposeFragment<SprinklrScreenState>() {
|
||||
internal class SprinklrActivity : ComposeActivity<SprinklrScreenState>() {
|
||||
private val viewModel by viewModels<SprinklrViewModel>()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
Analytics.send(Chat.ScreenOpened())
|
||||
viewModel.setNavigateBackCallback {
|
||||
this.finish()
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
|
@ -24,7 +24,6 @@ internal class SprinklrViewModel : ViewModel(), StoreSubscriber<SprinklrState> {
|
|||
prevState.copy(
|
||||
initialUrl = state.url,
|
||||
sprinklrDomains = state.sprinklrDomains,
|
||||
onNavigateBack = this::navigateBack,
|
||||
onNewUrl = { updateWebContentOrOpenExternalUrl(it) },
|
||||
)
|
||||
}
|
||||
|
|
@ -34,6 +33,14 @@ internal class SprinklrViewModel : ViewModel(), StoreSubscriber<SprinklrState> {
|
|||
store.unsubscribe(this)
|
||||
}
|
||||
|
||||
fun setNavigateBackCallback(callback: () -> Unit) {
|
||||
stateInternal.update { prevState ->
|
||||
prevState.copy(
|
||||
onNavigateBack = callback,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun subscribeToStoreChanges() {
|
||||
store.subscribe(this) { appState ->
|
||||
appState.skip { old, new -> old.sprinklrState == new.sprinklrState }
|
||||
|
|
@ -41,10 +48,6 @@ internal class SprinklrViewModel : ViewModel(), StoreSubscriber<SprinklrState> {
|
|||
}
|
||||
}
|
||||
|
||||
private fun navigateBack() {
|
||||
store.dispatchOnMain(NavigationAction.PopBackTo())
|
||||
}
|
||||
|
||||
private fun WebContent.updateWebContentOrOpenExternalUrl(url: String): WebContent {
|
||||
return if (isExternalUrl(url)) {
|
||||
store.dispatchOnMain(NavigationAction.OpenUrl(url))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue