Skip to content

Commit

Permalink
feat(staking): AND-6805 earning tab - pt 1 (#4158)
Browse files Browse the repository at this point in the history
  • Loading branch information
dserrano-bc committed Nov 29, 2022
1 parent 0fc928a commit f80e780
Show file tree
Hide file tree
Showing 77 changed files with 712 additions and 222 deletions.
Expand Up @@ -47,6 +47,7 @@ import com.blockchain.payments.googlepay.manager.request.BillingAddressParameter
import com.blockchain.payments.googlepay.manager.request.GooglePayRequestBuilder
import com.blockchain.payments.googlepay.manager.request.defaultAllowedAuthMethods
import com.blockchain.payments.googlepay.manager.request.defaultAllowedCardNetworks
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import com.blockchain.presentation.koin.scopedInject
import com.blockchain.utils.secondsToDays
import com.blockchain.utils.unsafeLazy
Expand Down Expand Up @@ -77,7 +78,6 @@ import piuk.blockchain.android.simplebuy.sheets.SimpleBuyCancelOrderBottomSheet
import piuk.blockchain.android.ui.base.ErrorButtonCopies
import piuk.blockchain.android.ui.base.ErrorDialogData
import piuk.blockchain.android.ui.base.ErrorSlidingBottomDialog
import piuk.blockchain.android.ui.customviews.BlockchainListDividerDecor
import piuk.blockchain.android.urllinks.ORDER_PRICE_EXPLANATION
import piuk.blockchain.android.urllinks.PRIVATE_KEY_EXPLANATION
import piuk.blockchain.android.urllinks.TRADING_ACCOUNT_LOCKS
Expand Down
Expand Up @@ -9,6 +9,7 @@ import com.blockchain.componentlib.viewextensions.visibleIf
import com.blockchain.domain.fiatcurrencies.FiatCurrenciesService
import com.blockchain.domain.paymentmethods.model.CardRejectionState
import com.blockchain.domain.paymentmethods.model.PaymentMethod
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import com.blockchain.presentation.koin.scopedInject
import com.blockchain.utils.unsafeLazy
import info.blockchain.balance.FiatCurrency
Expand All @@ -24,7 +25,6 @@ import piuk.blockchain.android.simplebuy.toAnalyticsString
import piuk.blockchain.android.simplebuy.toPaymentTypeAnalyticsString
import piuk.blockchain.android.ui.adapters.AdapterDelegatesManager
import piuk.blockchain.android.ui.adapters.DelegationAdapter
import piuk.blockchain.android.ui.customviews.BlockchainListDividerDecor
import piuk.blockchain.android.ui.resources.AssetResources

class PaymentMethodChooserBottomSheet : SlidingModalBottomDialog<SimpleBuyPaymentMethodChooserBinding>() {
Expand Down
Expand Up @@ -20,6 +20,7 @@ import com.blockchain.componentlib.viewextensions.visible
import com.blockchain.core.price.historic.HistoricRateFetcher
import com.blockchain.logging.RemoteLogger
import com.blockchain.preferences.CurrencyPrefs
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import com.blockchain.presentation.koin.scopedInject
import com.google.android.material.snackbar.Snackbar
import info.blockchain.balance.AssetInfo
Expand All @@ -35,7 +36,6 @@ import piuk.blockchain.android.databinding.FragmentActivitiesBinding
import piuk.blockchain.android.ui.activity.adapter.ActivitiesDelegateAdapter
import piuk.blockchain.android.ui.activity.detail.CryptoActivityDetailsBottomSheet
import piuk.blockchain.android.ui.activity.detail.FiatActivityDetailsBottomSheet
import piuk.blockchain.android.ui.customviews.BlockchainListDividerDecor
import piuk.blockchain.android.ui.customviews.account.AccountSelectSheet
import piuk.blockchain.android.ui.home.HomeScreenMviFragment
import piuk.blockchain.android.ui.home.WalletClientAnalytics
Expand Down
Expand Up @@ -28,6 +28,7 @@ import com.blockchain.earn.domain.models.interest.InterestState
import com.blockchain.earn.domain.models.staking.StakingState
import com.blockchain.nabu.datamanagers.OrderState
import com.blockchain.nabu.datamanagers.RecurringBuyFailureReason
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import com.blockchain.presentation.koin.scopedInject
import com.google.android.material.snackbar.Snackbar
import info.blockchain.balance.AssetInfo
Expand All @@ -45,7 +46,6 @@ import piuk.blockchain.android.support.SupportCentreActivity
import piuk.blockchain.android.ui.activity.ActivityType
import piuk.blockchain.android.ui.activity.detail.adapter.ActivityDetailsDelegateAdapter
import piuk.blockchain.android.ui.brokerage.BuySellFragment
import piuk.blockchain.android.ui.customviews.BlockchainListDividerDecor
import piuk.blockchain.android.ui.recurringbuy.RecurringBuyAnalytics
import piuk.blockchain.android.ui.resources.AssetResources
import piuk.blockchain.android.ui.transactionflow.analytics.DepositAnalytics
Expand Down
Expand Up @@ -13,6 +13,7 @@ import com.blockchain.domain.paymentmethods.model.MobilePaymentType
import com.blockchain.domain.paymentmethods.model.PaymentMethodDetails
import com.blockchain.nabu.datamanagers.TransactionState
import com.blockchain.nabu.datamanagers.TransactionType
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import com.blockchain.presentation.koin.scopedInject
import com.blockchain.utils.toFormattedString
import com.blockchain.utils.unsafeLazy
Expand All @@ -22,7 +23,6 @@ import kotlinx.coroutines.launch
import piuk.blockchain.android.R
import piuk.blockchain.android.databinding.DialogSheetActivityDetailsBinding
import piuk.blockchain.android.ui.activity.detail.adapter.FiatDetailsSheetAdapter
import piuk.blockchain.android.ui.customviews.BlockchainListDividerDecor

class FiatActivityDetailsBottomSheet : SlidingModalBottomDialog<DialogSheetActivityDetailsBinding>() {
private val model: FiatActivityDetailsModel by scopedInject()
Expand Down
Expand Up @@ -15,6 +15,7 @@ import com.blockchain.coincore.impl.CryptoNonCustodialAccount
import com.blockchain.componentlib.alert.BlockchainSnackbar
import com.blockchain.componentlib.alert.SnackbarType
import com.blockchain.componentlib.databinding.ToolbarGeneralBinding
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import com.blockchain.presentation.koin.scopedInject
import com.blockchain.utils.consume
import com.blockchain.utils.unsafeLazy
Expand All @@ -29,7 +30,6 @@ import piuk.blockchain.android.databinding.ActivityAddressesBinding
import piuk.blockchain.android.ui.addresses.adapter.AccountAdapter
import piuk.blockchain.android.ui.addresses.adapter.AccountListItem
import piuk.blockchain.android.ui.base.MvpActivity
import piuk.blockchain.android.ui.customviews.BlockchainListDividerDecor
import piuk.blockchain.android.ui.customviews.SecondPasswordDialog
import piuk.blockchain.android.ui.scan.QrExpected
import piuk.blockchain.android.ui.scan.QrScanActivity
Expand Down
Expand Up @@ -8,13 +8,13 @@ import androidx.recyclerview.widget.RecyclerView
import com.blockchain.commonarch.presentation.base.SlidingModalBottomDialog
import com.blockchain.commonarch.presentation.mvi.MviBottomSheet
import com.blockchain.componentlib.viewextensions.visibleIf
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import com.blockchain.presentation.koin.scopedInject
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import piuk.blockchain.android.databinding.AuthNewLoginSheetBinding
import piuk.blockchain.android.ui.auth.newlogin.AuthNewLoginBrowserInfo
import piuk.blockchain.android.ui.auth.newlogin.AuthNewLoginIpAddress
import piuk.blockchain.android.ui.auth.newlogin.AuthNewLoginLocation
import piuk.blockchain.android.ui.customviews.BlockchainListDividerDecor
import piuk.blockchain.android.ui.login.LoginAnalytics

class AuthNewLoginSheet :
Expand Down
Expand Up @@ -16,6 +16,7 @@ import com.blockchain.commonarch.presentation.mvi_v2.NavigationRouter
import com.blockchain.commonarch.presentation.mvi_v2.bindViewModel
import com.blockchain.componentlib.alert.BlockchainSnackbar
import com.blockchain.componentlib.alert.SnackbarType
import com.blockchain.earn.interest.InterestSummarySheet
import com.blockchain.earn.staking.StakingSummaryBottomSheet
import com.blockchain.earn.staking.viewmodel.StakingError
import com.blockchain.extensions.enumValueOfOrNull
Expand All @@ -41,7 +42,6 @@ import piuk.blockchain.android.ui.dashboard.coinview.interstitials.AccountExplai
import piuk.blockchain.android.ui.dashboard.coinview.interstitials.NoBalanceActionBottomSheet
import piuk.blockchain.android.ui.dashboard.coinview.recurringbuy.RecurringBuyDetailsSheet
import piuk.blockchain.android.ui.dashboard.sheets.KycUpgradeNowSheet
import piuk.blockchain.android.ui.interest.InterestSummarySheet
import piuk.blockchain.android.ui.kyc.navhost.KycNavHostActivity
import piuk.blockchain.android.ui.recurringbuy.onboarding.RecurringBuyOnboardingActivity
import piuk.blockchain.android.ui.transactionflow.analytics.CoinViewSellClickedEvent
Expand Down Expand Up @@ -393,6 +393,14 @@ class CoinViewActivityV2 :
}

override fun goToInterestDeposit(toAccount: BlockchainAccount) {
analytics.logEvent(
CoinViewAnalytics.RewardsWithdrawOrAddClicked(
origin = LaunchOrigin.COIN_VIEW,
currency = (toAccount as CryptoAccount).currency.networkTicker,
type = CoinViewAnalytics.Companion.Type.ADD
)
)

startActivity(
TransactionFlowActivity.newIntent(
context = this,
Expand All @@ -403,6 +411,14 @@ class CoinViewActivityV2 :
}

override fun goToInterestWithdraw(fromAccount: BlockchainAccount) {
analytics.logEvent(
CoinViewAnalytics.RewardsWithdrawOrAddClicked(
origin = LaunchOrigin.COIN_VIEW,
currency = (fromAccount as CryptoAccount).currency.networkTicker,
type = CoinViewAnalytics.Companion.Type.WITHDRAW
)
)

startActivity(
TransactionFlowActivity.newIntent(
context = this,
Expand All @@ -425,31 +441,30 @@ class CoinViewActivityV2 :
}

override fun launchStakingWithdrawal(currency: Currency) {
// TODO - disabled for now
// TODO(dserrano) - STAKING - not yet implemented
}

override fun launchStakingDeposit(currency: Currency) {
viewModel.onIntent(CoinviewIntent.LaunchStakingDepositFlow(currency))
}

override fun goToStakingActivity(currency: Currency) {
override fun goToStakingAccountActivity(currency: Currency) {
viewModel.onIntent(CoinviewIntent.LaunchStakingActivity(currency))
}

override fun showStakingLoadingError(error: StakingError) {
override fun showStakingLoadingError(error: StakingError) =
BlockchainSnackbar.make(
view = window.decorView.rootView,
message = when (error) {
StakingError.UnknownAsset -> getString(
R.string.staking_summary_sheet_error_unknown_asset, args.networkTicker
is StakingError.UnknownAsset -> getString(
R.string.staking_summary_sheet_error_unknown_asset, error.assetTicker
)
StakingError.Other -> getString(R.string.staking_summary_sheet_error_other)
StakingError.None -> getString(R.string.empty)
},
duration = Snackbar.LENGTH_SHORT,
type = SnackbarType.Error
).show()
}

override fun onSheetClosed() {}
// host calls/
Expand Down
Expand Up @@ -10,6 +10,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.blockchain.coincore.TrendingPair
import com.blockchain.componentlib.viewextensions.gone
import com.blockchain.componentlib.viewextensions.visible
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import io.reactivex.rxjava3.disposables.CompositeDisposable
import io.reactivex.rxjava3.kotlin.plusAssign
import io.reactivex.rxjava3.kotlin.subscribeBy
Expand Down
Expand Up @@ -20,6 +20,7 @@ import com.blockchain.commonarch.presentation.base.ActivityIndicator
import com.blockchain.commonarch.presentation.base.trackProgress
import com.blockchain.componentlib.button.ButtonState
import com.blockchain.domain.paymentmethods.model.FundsLocks
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.disposables.CompositeDisposable
Expand All @@ -35,7 +36,6 @@ import piuk.blockchain.android.databinding.ItemAccountSelectGroupBinding
import piuk.blockchain.android.ui.adapters.AdapterDelegate
import piuk.blockchain.android.ui.adapters.AdapterDelegatesManager
import piuk.blockchain.android.ui.adapters.DelegationAdapter
import piuk.blockchain.android.ui.customviews.BlockchainListDividerDecor
import piuk.blockchain.android.ui.customviews.IntroHeaderView
import piuk.blockchain.android.util.context

Expand Down
Expand Up @@ -28,11 +28,13 @@ import com.blockchain.componentlib.viewextensions.visible
import com.blockchain.componentlib.viewextensions.visibleIf
import com.blockchain.domain.common.model.PromotionStyleInfo
import com.blockchain.domain.referral.model.ReferralInfo
import com.blockchain.earn.interest.InterestSummarySheet
import com.blockchain.extensions.minus
import com.blockchain.logging.MomentEvent
import com.blockchain.logging.MomentLogger
import com.blockchain.preferences.CurrencyPrefs
import com.blockchain.preferences.DashboardPrefs
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import com.blockchain.presentation.koin.scopedInject
import com.blockchain.utils.unsafeLazy
import com.blockchain.walletmode.WalletMode
Expand Down Expand Up @@ -61,7 +63,6 @@ import piuk.blockchain.android.ui.coinview.presentation.CoinViewActivityV2.Compa
import piuk.blockchain.android.ui.cowboys.CowboysAnalytics
import piuk.blockchain.android.ui.cowboys.CowboysFlowActivity
import piuk.blockchain.android.ui.cowboys.FlowStep
import piuk.blockchain.android.ui.customviews.BlockchainListDividerDecor
import piuk.blockchain.android.ui.customviews.BlockedDueToSanctionsSheet
import piuk.blockchain.android.ui.customviews.KycBenefitsBottomSheet
import piuk.blockchain.android.ui.customviews.VerifyIdentityNumericBenefitItem
Expand Down Expand Up @@ -96,7 +97,6 @@ import piuk.blockchain.android.ui.dataremediation.QuestionnaireSheet
import piuk.blockchain.android.ui.home.HomeScreenMviFragment
import piuk.blockchain.android.ui.home.MainActivity
import piuk.blockchain.android.ui.home.WalletClientAnalytics
import piuk.blockchain.android.ui.interest.InterestSummarySheet
import piuk.blockchain.android.ui.linkbank.BankAuthActivity
import piuk.blockchain.android.ui.linkbank.BankAuthSource
import piuk.blockchain.android.ui.linkbank.alias.BankAliasLinkContract
Expand Down
Expand Up @@ -2,6 +2,7 @@ package piuk.blockchain.android.ui.dashboard.announcements.rule

import androidx.annotation.VisibleForTesting
import com.blockchain.analytics.Analytics
import com.blockchain.earn.EarnAnalytics
import com.blockchain.walletmode.WalletMode
import io.reactivex.rxjava3.core.Single
import org.koin.core.component.KoinComponent
Expand All @@ -12,7 +13,6 @@ import piuk.blockchain.android.ui.dashboard.announcements.AnnouncementRule
import piuk.blockchain.android.ui.dashboard.announcements.DismissRecorder
import piuk.blockchain.android.ui.dashboard.announcements.DismissRule
import piuk.blockchain.android.ui.dashboard.announcements.StandardAnnouncementCard
import piuk.blockchain.android.ui.transactionflow.analytics.EarnAnalytics

class InterestAvailableAnnouncement(
dismissRecorder: DismissRecorder
Expand Down
Expand Up @@ -46,11 +46,13 @@ import com.blockchain.componentlib.viewextensions.visible
import com.blockchain.core.price.HistoricalRateList
import com.blockchain.core.price.HistoricalTimeSpan
import com.blockchain.core.price.Prices24HrWithDelta
import com.blockchain.earn.interest.InterestSummarySheet
import com.blockchain.extensions.enumValueOfOrNull
import com.blockchain.nabu.BlockedReason
import com.blockchain.nabu.models.data.RecurringBuy
import com.blockchain.nabu.models.data.RecurringBuyState
import com.blockchain.preferences.LocalSettingsPrefs
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import com.blockchain.presentation.koin.scopedInject
import com.blockchain.wallet.DefaultLabels
import com.blockchain.walletmode.WalletMode
Expand All @@ -72,15 +74,13 @@ import piuk.blockchain.android.simplebuy.SimpleBuyActivity
import piuk.blockchain.android.simplebuy.SimpleBuySyncFactory
import piuk.blockchain.android.support.SupportCentreActivity
import piuk.blockchain.android.ui.coinview.presentation.CoinViewActivityV2.Companion.ACCOUNT_FOR_ACTIVITY
import piuk.blockchain.android.ui.customviews.BlockchainListDividerDecor
import piuk.blockchain.android.ui.customviews.BlockedDueToSanctionsSheet
import piuk.blockchain.android.ui.dashboard.coinview.accounts.AccountsAdapterDelegate
import piuk.blockchain.android.ui.dashboard.coinview.interstitials.AccountActionsBottomSheet
import piuk.blockchain.android.ui.dashboard.coinview.interstitials.AccountExplainerBottomSheet
import piuk.blockchain.android.ui.dashboard.coinview.interstitials.NoBalanceActionBottomSheet
import piuk.blockchain.android.ui.dashboard.coinview.recurringbuy.RecurringBuyDetailsSheet
import piuk.blockchain.android.ui.dashboard.sheets.KycUpgradeNowSheet
import piuk.blockchain.android.ui.interest.InterestSummarySheet
import piuk.blockchain.android.ui.kyc.navhost.KycNavHostActivity
import piuk.blockchain.android.ui.recurringbuy.RecurringBuyAnalytics
import piuk.blockchain.android.ui.recurringbuy.onboarding.RecurringBuyOnboardingActivity
Expand Down
Expand Up @@ -37,6 +37,7 @@ import com.blockchain.componentlib.tag.TagType
import com.blockchain.componentlib.tag.TagViewState
import com.blockchain.componentlib.theme.AppTheme
import com.blockchain.componentlib.theme.Grey300
import com.blockchain.earn.EarnAnalytics
import com.blockchain.nabu.BlockedReason
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
Expand All @@ -49,7 +50,6 @@ import piuk.blockchain.android.R
import piuk.blockchain.android.ui.dashboard.assetdetails.AssetDetailsAnalytics
import piuk.blockchain.android.ui.dashboard.assetdetails.assetActionEvent
import piuk.blockchain.android.ui.dashboard.coinview.CoinViewAnalytics
import piuk.blockchain.android.ui.transactionflow.analytics.EarnAnalytics
import piuk.blockchain.android.ui.transfer.analytics.TransferAnalyticsEvent
import piuk.blockchain.android.util.getAccount
import piuk.blockchain.android.util.putAccount
Expand Down
Expand Up @@ -15,6 +15,7 @@ import com.blockchain.domain.paymentmethods.model.PaymentMethod
import com.blockchain.domain.paymentmethods.model.PaymentMethodType
import com.blockchain.nabu.models.data.RecurringBuy
import com.blockchain.nabu.models.data.RecurringBuyState
import com.blockchain.presentation.customviews.BlockchainListDividerDecor
import com.blockchain.presentation.koin.scopedInject
import com.blockchain.utils.toFormattedDateWithoutYear
import info.blockchain.balance.AssetInfo
Expand All @@ -26,7 +27,6 @@ import piuk.blockchain.android.simplebuy.CheckoutAdapterDelegate
import piuk.blockchain.android.simplebuy.SimpleBuyCheckoutItem
import piuk.blockchain.android.simplebuy.toHumanReadableRecurringBuy
import piuk.blockchain.android.simplebuy.toHumanReadableRecurringDate
import piuk.blockchain.android.ui.customviews.BlockchainListDividerDecor

class RecurringBuyDetailsSheet : MviBottomSheet<RecurringBuyModel,
RecurringBuyIntent, RecurringBuyModelState, DialogSheetRecurringBuyInfoBinding>() {
Expand Down

0 comments on commit f80e780

Please sign in to comment.