From 5e3c1f17685c8437cb39f73b5c8ed3fda5d2c0bd Mon Sep 17 00:00:00 2001 From: Carter Jernigan Date: Mon, 13 Mar 2023 04:05:44 -0400 Subject: [PATCH] [#783] Hide fiat currency conversion * [#783] Hide fiat currency conversion * Add test --- .../zcash/ui/screen/home/HomeTestSetup.kt | 6 ++- .../integration/HomeViewIntegrationTest.kt | 3 +- .../zcash/ui/screen/home/view/HomeViewTest.kt | 19 +++++++- .../ui/configuration/ConfigurationEntries.kt | 5 +++ .../zcash/ui/screen/home/AndroidHome.kt | 4 ++ .../zcash/ui/screen/home/HomeTag.kt | 1 + .../zcash/ui/screen/home/view/HomeView.kt | 43 +++++++++++-------- 7 files changed, 59 insertions(+), 22 deletions(-) diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/HomeTestSetup.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/HomeTestSetup.kt index 68f97d38..a0c97b67 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/HomeTestSetup.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/HomeTestSetup.kt @@ -11,6 +11,7 @@ import java.util.concurrent.atomic.AtomicInteger class HomeTestSetup( private val composeTestRule: ComposeContentTestRule, private val walletSnapshot: WalletSnapshot, + private val isShowFiatConversion: Boolean ) { private val onAboutCount = AtomicInteger(0) private val onSeedCount = AtomicInteger(0) @@ -60,8 +61,10 @@ class HomeTestSetup( Home( walletSnapshot, transactionHistory = persistentListOf(), - isKeepScreenOnDuringSync = false, isUpdateAvailable = false, + isKeepScreenOnDuringSync = false, + isFiatConversionEnabled = isShowFiatConversion, + isDebugMenuEnabled = false, goSettings = { onSettingsCount.incrementAndGet() }, @@ -81,7 +84,6 @@ class HomeTestSetup( onSendCount.incrementAndGet() }, resetSdk = {}, - isDebugMenuEnabled = false, ) } diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/integration/HomeViewIntegrationTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/integration/HomeViewIntegrationTest.kt index b1926166..e07d6d00 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/integration/HomeViewIntegrationTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/integration/HomeViewIntegrationTest.kt @@ -26,7 +26,8 @@ class HomeViewIntegrationTest : UiTestPrerequisites() { private fun newTestSetup(walletSnapshot: WalletSnapshot) = HomeTestSetup( composeTestRule, - walletSnapshot + walletSnapshot, + isShowFiatConversion = false ) // This is just basic sanity check that we still have UI set up as expected after the state restore diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/view/HomeViewTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/view/HomeViewTest.kt index 0bdb536a..97737d2e 100644 --- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/view/HomeViewTest.kt +++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/screen/home/view/HomeViewTest.kt @@ -36,6 +36,10 @@ class HomeViewTest : UiTestPrerequisites() { it.assertIsDisplayed() } + composeTestRule.onNodeWithTag(HomeTag.FIAT_CONVERSION).also { + it.assertIsDisplayed() + } + composeTestRule.onNodeWithText(getStringResource(R.string.home_button_send)).also { it.assertIsDisplayed() } @@ -45,6 +49,16 @@ class HomeViewTest : UiTestPrerequisites() { } } + @Test + @MediumTest + fun hide_fiat_conversion() { + newTestSetup(isShowFiatConversion = false) + + composeTestRule.onNodeWithTag(HomeTag.FIAT_CONVERSION).also { + it.assertDoesNotExist() + } + } + @Test @MediumTest fun click_receive_button() { @@ -133,9 +147,10 @@ class HomeViewTest : UiTestPrerequisites() { assertEquals(1, testSetup.getOnAboutCount()) } - private fun newTestSetup() = HomeTestSetup( + private fun newTestSetup(isShowFiatConversion: Boolean = true) = HomeTestSetup( composeTestRule, - WalletSnapshotFixture.new() + WalletSnapshotFixture.new(), + isShowFiatConversion = isShowFiatConversion ).apply { setDefaultContent() } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/configuration/ConfigurationEntries.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/configuration/ConfigurationEntries.kt index 54b608e7..76f1c3b3 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/configuration/ConfigurationEntries.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/configuration/ConfigurationEntries.kt @@ -16,6 +16,11 @@ object ConfigurationEntries { */ val IS_SHORT_NEW_WALLET_BACKUP_UX = BooleanConfigurationEntry(ConfigKey("is_short_new_wallet_backup_ux"), true) + /* + * This isn't fully implemented yet, so it is disabled from being shown. + */ + val IS_FIAT_CONVERSION_ENABLED = BooleanConfigurationEntry(ConfigKey("is_fiat_conversion_enabled"), false) + /* * A troubleshooting step. If we fix our bugs, this should be unnecessary. */ diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt index 9b9399d4..b210bf8b 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt @@ -16,6 +16,8 @@ import co.electriccoin.zcash.spackle.FirebaseTestLabUtil import co.electriccoin.zcash.ui.BuildConfig import co.electriccoin.zcash.ui.MainActivity import co.electriccoin.zcash.ui.common.closeDrawerMenu +import co.electriccoin.zcash.ui.configuration.ConfigurationEntries +import co.electriccoin.zcash.ui.configuration.RemoteConfig import co.electriccoin.zcash.ui.screen.home.view.Home import co.electriccoin.zcash.ui.screen.home.viewmodel.CheckUpdateViewModel import co.electriccoin.zcash.ui.screen.home.viewmodel.WalletViewModel @@ -72,6 +74,7 @@ internal fun WrapHome( val settingsViewModel by activity.viewModels() val isKeepScreenOnWhileSyncing = settingsViewModel.isKeepScreenOnWhileSyncing.collectAsStateWithLifecycle().value + val isFiatConversionEnabled = ConfigurationEntries.IS_FIAT_CONVERSION_ENABLED.getValue(RemoteConfig.current) if (null == walletSnapshot) { // Display loading indicator @@ -99,6 +102,7 @@ internal fun WrapHome( transactionSnapshot, isUpdateAvailable = updateAvailable, isKeepScreenOnDuringSync = isKeepScreenOnWhileSyncing, + isFiatConversionEnabled = isFiatConversionEnabled, isDebugMenuEnabled = isDebugMenuEnabled, goSeedPhrase = goSeedPhrase, goSettings = goSettings, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeTag.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeTag.kt index f7c3a58c..f8b2303c 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeTag.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeTag.kt @@ -7,4 +7,5 @@ object HomeTag { const val STATUS_VIEWS = "status_views" const val PROGRESS = "progress_bar" const val SINGLE_LINE_TEXT = "single_line_text" + const val FIAT_CONVERSION = "fiat_conversion" } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt index 02bb1c4c..773b4b98 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/view/HomeView.kt @@ -88,6 +88,7 @@ fun ComposablePreview() { isUpdateAvailable = false, isKeepScreenOnDuringSync = false, isDebugMenuEnabled = false, + isFiatConversionEnabled = false, goSeedPhrase = {}, goSettings = {}, goSupport = {}, @@ -108,6 +109,7 @@ fun Home( transactionHistory: ImmutableList, isUpdateAvailable: Boolean, isKeepScreenOnDuringSync: Boolean?, + isFiatConversionEnabled: Boolean, isDebugMenuEnabled: Boolean, goSeedPhrase: () -> Unit, goSettings: () -> Unit, @@ -144,6 +146,7 @@ fun Home( transactionHistory, isUpdateAvailable = isUpdateAvailable, isKeepScreenOnDuringSync = isKeepScreenOnDuringSync, + isFiatConversionEnabled = isFiatConversionEnabled, goReceive = goReceive, goSend = goSend, ) @@ -282,6 +285,7 @@ private fun HomeMainContent( transactionHistory: ImmutableList, isUpdateAvailable: Boolean, isKeepScreenOnDuringSync: Boolean?, + isFiatConversionEnabled: Boolean, goReceive: () -> Unit, goSend: () -> Unit, ) { @@ -290,7 +294,7 @@ private fun HomeMainContent( .verticalScroll(rememberScrollState()) .padding(top = paddingValues.calculateTopPadding()) ) { - Status(walletSnapshot, isUpdateAvailable) + Status(walletSnapshot, isUpdateAvailable, isFiatConversionEnabled) Spacer(modifier = Modifier.height(24.dp)) @@ -316,7 +320,8 @@ private fun isSyncing(status: Synchronizer.Status): Boolean { @Suppress("LongMethod", "MagicNumber") private fun Status( walletSnapshot: WalletSnapshot, - updateAvailable: Boolean + updateAvailable: Boolean, + isFiatConversionEnabled: Boolean ) { val configuration = LocalConfiguration.current val contentSizeRatioRatio = if (configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { @@ -376,22 +381,26 @@ private fun Status( HeaderWithZecIcon(amount = walletDisplayValues.zecAmountText) } - Spacer(modifier = Modifier.height(8.dp)) + if (isFiatConversionEnabled) { + Column(Modifier.testTag(HomeTag.FIAT_CONVERSION)) { + Spacer(modifier = Modifier.height(8.dp)) - when (walletDisplayValues.fiatCurrencyAmountState) { - is FiatCurrencyConversionRateState.Current -> { - BodyWithFiatCurrencySymbol( - amount = walletDisplayValues.fiatCurrencyAmountText - ) - } - is FiatCurrencyConversionRateState.Stale -> { - // Note: we should show information about staleness too - BodyWithFiatCurrencySymbol( - amount = walletDisplayValues.fiatCurrencyAmountText - ) - } - is FiatCurrencyConversionRateState.Unavailable -> { - Body(text = walletDisplayValues.fiatCurrencyAmountText) + when (walletDisplayValues.fiatCurrencyAmountState) { + is FiatCurrencyConversionRateState.Current -> { + BodyWithFiatCurrencySymbol( + amount = walletDisplayValues.fiatCurrencyAmountText + ) + } + is FiatCurrencyConversionRateState.Stale -> { + // Note: we should show information about staleness too + BodyWithFiatCurrencySymbol( + amount = walletDisplayValues.fiatCurrencyAmountText + ) + } + is FiatCurrencyConversionRateState.Unavailable -> { + Body(text = walletDisplayValues.fiatCurrencyAmountText) + } + } } }