diff --git a/app/src/main/java/com/tangem/tap/common/extensions/Navigation.kt b/app/src/main/java/com/tangem/tap/common/extensions/Navigation.kt index 588342e8f7..bb69887342 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/Navigation.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/Navigation.kt @@ -11,7 +11,6 @@ import com.tangem.tap.features.disclaimer.ui.DisclaimerFragment import com.tangem.tap.features.home.HomeFragment import com.tangem.tap.features.send.ui.SendFragment import com.tangem.tap.features.wallet.ui.WalletFragment -import com.tangem.tap.features.wallet.ui.topup.TopUpFragment import com.tangem.wallet.R fun FragmentActivity.openFragment(screen: AppScreen, addToBackStack: Boolean = true) { @@ -40,7 +39,6 @@ private fun fragmentFactory(screen: AppScreen): Fragment { return when (screen) { AppScreen.Home -> HomeFragment() AppScreen.Wallet -> WalletFragment() - AppScreen.TopUp -> TopUpFragment() AppScreen.Send -> SendFragment() AppScreen.Details -> DetailsFragment() AppScreen.DetailsConfirm -> DetailsConfirmFragment() diff --git a/app/src/main/java/com/tangem/tap/common/redux/navigation/NavigationState.kt b/app/src/main/java/com/tangem/tap/common/redux/navigation/NavigationState.kt index 33d2b18a16..5edfad540b 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/navigation/NavigationState.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/navigation/NavigationState.kt @@ -9,4 +9,4 @@ data class NavigationState( val activity: WeakReference? = null ) : StateType -enum class AppScreen { Home, Wallet, TopUp, Send, Details, DetailsConfirm, DetailsSecurity, Disclaimer } \ No newline at end of file +enum class AppScreen { Home, Wallet, Send, Details, DetailsConfirm, DetailsSecurity, Disclaimer } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/domain/TopUpHelper.kt b/app/src/main/java/com/tangem/tap/domain/TopUpHelper.kt index 07f93a949b..7494073c72 100644 --- a/app/src/main/java/com/tangem/tap/domain/TopUpHelper.kt +++ b/app/src/main/java/com/tangem/tap/domain/TopUpHelper.kt @@ -10,20 +10,20 @@ import javax.crypto.spec.SecretKeySpec class TopUpHelper { companion object { - const val REDIRECT_URL = "https://success.tangem.com" +// const val REDIRECT_URL = "https://success.tangem.com" private const val BASE_URL = "https://buy.moonpay.io" private const val API_KEY_PATH = "?apiKey=" private const val CURRENCY_PATH = "¤cyCode=" private const val WALLET_ADDRESS_PATH = "&walletAddress=" - private const val REDIRECT_URL_PATH = "&redirectUrl=" +// private const val REDIRECT_URL_PATH = "&redirectUrl=" private const val SIGNATURE_PATH = "&signature=" fun getUrl(cryptoCurrencyName: CryptoCurrencyName, walletAddress: String): String { val originalQuery = API_KEY_PATH + TapConfig.moonPayApiKey.urlEncode() + CURRENCY_PATH + cryptoCurrencyName.urlEncode() + - WALLET_ADDRESS_PATH + walletAddress.urlEncode() + - REDIRECT_URL_PATH + REDIRECT_URL.urlEncode() + WALLET_ADDRESS_PATH + walletAddress.urlEncode() +// REDIRECT_URL_PATH + REDIRECT_URL.urlEncode() val signature = createSignature(originalQuery, TapConfig.moonPayApiSecretKey) return BASE_URL + originalQuery + SIGNATURE_PATH + signature.urlEncode() diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt index 34414e9381..c836b1ee09 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt @@ -16,7 +16,6 @@ import com.tangem.tap.domain.extensions.minimalAmount import com.tangem.tap.features.send.redux.* import com.tangem.tap.features.send.redux.FeeAction.RequestFee import com.tangem.tap.features.send.redux.states.SendButtonState -import com.tangem.tap.features.wallet.redux.WalletAction import com.tangem.tap.scope import com.tangem.tap.tangemSdk import kotlinx.coroutines.Dispatchers @@ -99,7 +98,6 @@ private fun sendTransaction( FirebaseAnalyticsHandler.triggerEvent(AnalyticsEvent.TRANSACTION_IS_SENT, card) dispatch(SendAction.SendSuccess) dispatch(GlobalAction.UpdateWalletSignedHashes(result.data.walletSignedHashes)) - dispatch(WalletAction.UpdateWallet) dispatch(NavigationAction.PopBackTo()) } is Result.Failure -> { diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt index 5ac957f1f4..e129bf08b3 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt @@ -89,8 +89,6 @@ sealed class WalletAction : Action { object EmptyWallet : WalletAction() sealed class TopUpAction : WalletAction() { - data class TopUp(val context: Context, val toolbarColor: Int?) : TopUpAction() - data class Start(val url: String, val redirectUrl: String) : TopUpAction() - data class Finish(val topUpCompleted: Boolean) : TopUpAction() + data class TopUp(val context: Context, val toolbarColor: Int) : TopUpAction() } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletMiddleware.kt index 71d07e315d..d1ea1faa17 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletMiddleware.kt @@ -2,6 +2,7 @@ package com.tangem.tap.features.wallet.redux import android.content.Intent import android.net.Uri +import androidx.browser.customtabs.CustomTabsIntent import androidx.core.content.ContextCompat import com.tangem.blockchain.common.* import com.tangem.blockchain.extensions.SimpleResult @@ -34,7 +35,6 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.rekotlin.Action import org.rekotlin.Middleware -import timber.log.Timber class WalletMiddleware { private val topUpMiddleware = TopUpMiddleware() @@ -73,7 +73,9 @@ class WalletMiddleware { } } is WalletAction.UpdateWallet -> { - scope.launch { store.state.globalState.tapWalletManager.updateWallet() } + if (store.state.walletState.state == ProgressState.Done) { + scope.launch { store.state.globalState.tapWalletManager.updateWallet() } + } } is WalletAction.UpdateWallet.Success -> setupWalletUpdate(action.wallet) is WalletAction.LoadWallet.Success -> { @@ -257,16 +259,10 @@ private class TopUpMiddleware { store.state.walletState.currencyData.currencySymbol!!, store.state.walletState.addressData!!.address ) - Timber.d(url) - store.dispatch(WalletAction.TopUpAction.Start(url, TopUpHelper.REDIRECT_URL)) - store.dispatch(NavigationAction.NavigateTo(AppScreen.TopUp)) - } - is WalletAction.TopUpAction.Start -> { - - } - is WalletAction.TopUpAction.Finish -> { - if (action.topUpCompleted) store.dispatch(WalletAction.UpdateWallet) - store.dispatch(NavigationAction.PopBackTo()) + val customTabsIntent = CustomTabsIntent.Builder() + .setToolbarColor(action.toolbarColor) + .build() + customTabsIntent.launchUrl(action.context, Uri.parse(url)); } } } diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt index 358fe8cffc..10fc1610b8 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt @@ -116,7 +116,11 @@ private fun internalReduce(action: Action, state: AppState): WalletState { ), topUpState = TopUpState(false) ) - is WalletAction.UpdateWallet -> newState = newState.copy(updatingWallet = true) + is WalletAction.UpdateWallet -> { + if (store.state.walletState.state == ProgressState.Done) { + newState = newState.copy(updatingWallet = true) + } + } is WalletAction.UpdateWallet.ScheduleUpdatingWallet -> newState = newState.copy(updatingWallet = true) is WalletAction.UpdateWallet.Success -> { @@ -219,9 +223,6 @@ private fun internalReduce(action: Action, state: AppState): WalletState { private fun handleTopUpActions(action: WalletAction.TopUpAction, state: TopUpState): TopUpState { return when (action) { is WalletAction.TopUpAction.TopUp -> state - is WalletAction.TopUpAction.Start -> - state.copy(url = action.url, redirectUrl = action.redirectUrl) - is WalletAction.TopUpAction.Finish -> state.copy(url = null) } } diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt index 25f00a2e49..2be04ad3c9 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt @@ -61,6 +61,7 @@ class WalletFragment : Fragment(R.layout.fragment_wallet), StoreSubscriber { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - activity?.onBackPressedDispatcher?.addCallback(this, object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - store.dispatch(NavigationAction.PopBackTo()) - } - }) - val inflater = TransitionInflater.from(requireContext()) - enterTransition = inflater.inflateTransition(R.transition.slide_right) - exitTransition = inflater.inflateTransition(R.transition.fade) - } - - override fun onStart() { - super.onStart() - store.subscribe(this) { state -> - state.skipRepeats { oldState, newState -> - oldState.walletState == newState.walletState - }.select { it.walletState } - } - } - - override fun onStop() { - super.onStop() - store.unsubscribe(this) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - web_view.settings.javaScriptEnabled = true - - toolbar.setNavigationOnClickListener { - store.dispatch(NavigationAction.PopBackTo()) - } - - } - - override fun newState(state: WalletState) { - if (activity == null) return - - if (state.topUpState.url != null) { - web_view.webViewClient = TopUpWebViewClient(progress_bar, state.topUpState.redirectUrl) - web_view.loadUrl(state.topUpState.url) - } - } - -} diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/topup/TopUpWebViewClient.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/topup/TopUpWebViewClient.kt deleted file mode 100644 index d728b16128..0000000000 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/topup/TopUpWebViewClient.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.tangem.tap.features.wallet.ui.topup - -import android.webkit.WebView -import android.webkit.WebViewClient -import android.widget.ProgressBar -import com.tangem.tap.common.extensions.hide -import com.tangem.tap.common.extensions.show -import com.tangem.tap.features.wallet.redux.WalletAction -import com.tangem.tap.store - -class TopUpWebViewClient( - private val progressBar: ProgressBar, private val redirectUrl: String? -) : WebViewClient() { - override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { - if (redirectUrl != null && url.contains(redirectUrl)) { - store.dispatch(WalletAction.TopUpAction.Finish(true)) - return true - } - view.loadUrl(url) - return true - } - - override fun onPageFinished(view: WebView, url: String) { - super.onPageFinished(view, url) - progressBar.hide() - } - - init { - progressBar.show() - } -} \ No newline at end of file