Updated on 2026-08-14

This commit is contained in:
Tangem 2022-12-26 15:06:51 +04:00
parent d1798a2c49
commit 6dee2eeed7
112 changed files with 2146 additions and 1562 deletions

View file

@ -9,9 +9,19 @@ sealed class DisclaimerAction : Action {
val type: DisclaimerType,
) : DisclaimerAction()
data class Show(val onAcceptCallback: VoidCallback? = null) : DisclaimerAction()
data class Show(
val onAcceptCallback: VoidCallback? = null,
val onDismissCallback: VoidCallback? = null,
) : DisclaimerAction()
data class AcceptDisclaimer(val type: DisclaimerType) : DisclaimerAction()
internal data class UpdateState(val type: DisclaimerType, val accepted: Boolean) : DisclaimerAction()
internal data class SetOnAcceptCallback(val onAcceptCallback: VoidCallback? = null) : DisclaimerAction()
internal data class SetCallbacks(
val onAcceptCallback: VoidCallback? = null,
val onDismissCallback: VoidCallback? = null,
) : DisclaimerAction()
object OnBackPressed : DisclaimerAction()
}

View file

@ -28,7 +28,7 @@ private fun handleDisclaimerMiddleware(action: Action, appState: AppState) {
}
is DisclaimerAction.Show -> {
handleUpdateState = state.type.createUpdateState()
store.dispatch(DisclaimerAction.SetOnAcceptCallback(action.onAcceptCallback))
store.dispatch(DisclaimerAction.SetCallbacks(action.onAcceptCallback, action.onDismissCallback))
store.dispatch(NavigationAction.NavigateTo(AppScreen.Disclaimer))
}
is DisclaimerAction.AcceptDisclaimer -> {
@ -36,7 +36,13 @@ private fun handleDisclaimerMiddleware(action: Action, appState: AppState) {
handleUpdateState = action.type.createUpdateState()
store.dispatch(NavigationAction.PopBackTo())
state.onAcceptCallback?.invoke()
store.dispatch(DisclaimerAction.SetOnAcceptCallback(null))
store.dispatch(DisclaimerAction.SetCallbacks(null, null))
}
is DisclaimerAction.OnBackPressed -> {
state.onDismissCallback?.invoke()
store.dispatch(DisclaimerAction.SetCallbacks(null, null))
store.dispatch(NavigationAction.PopBackTo())
}
}
}

View file

@ -19,8 +19,9 @@ private fun internalReduce(action: Action, state: AppState): DisclaimerState {
type = action.type,
accepted = action.accepted,
)
is DisclaimerAction.SetOnAcceptCallback -> disclaimerState.copy(
is DisclaimerAction.SetCallbacks -> disclaimerState.copy(
onAcceptCallback = action.onAcceptCallback,
onDismissCallback = action.onDismissCallback,
)
else -> disclaimerState
}

View file

@ -11,6 +11,7 @@ data class DisclaimerState(
val accepted: Boolean = false,
val type: DisclaimerType = DisclaimerType.Tangem,
val onAcceptCallback: VoidCallback? = null,
val onDismissCallback: VoidCallback? = null,
) : StateType
sealed class DisclaimerType(

View file

@ -4,6 +4,8 @@ import android.os.Bundle
import android.view.View
import androidx.transition.TransitionInflater
import by.kirich1409.viewbindingdelegate.viewBinding
import com.tangem.core.ui.fragments.setStatusBarColor
import com.tangem.tap.common.extensions.configureSettings
import com.tangem.tap.common.extensions.hide
import com.tangem.tap.common.redux.AppState
import com.tangem.tap.features.BaseFragment
@ -32,6 +34,7 @@ class DisclaimerFragment : BaseFragment(R.layout.fragment_disclaimer), StoreSubs
override fun onStart() {
super.onStart()
setStatusBarColor(R.color.backgroundLightGray)
store.subscribe(subscriber = this) { state ->
state
.skipRepeats { oldState, newState -> oldState.disclaimerState == newState.disclaimerState }
@ -65,4 +68,8 @@ class DisclaimerFragment : BaseFragment(R.layout.fragment_disclaimer), StoreSubs
webView.loadUrl(state.type.uri.toString())
}
override fun handleOnBackPressed() {
store.dispatch(DisclaimerAction.OnBackPressed)
}
}