diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/WooPosSettingsState.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/WooPosSettingsState.kt index f64abed2eebe..4d21bd2c409e 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/WooPosSettingsState.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/WooPosSettingsState.kt @@ -51,7 +51,7 @@ sealed class WooPosSettingsDetailDestination { sealed class Help : WooPosSettingsDetailDestination() { data object Overview : Help() { - override val titleRes: Int = R.string.woopos_get_support_title + override val titleRes: Int = R.string.woopos_settings_help_category override val parentDestination: WooPosSettingsDetailDestination? = null override val childDestinations: List = emptyList() } diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/categories/WooPosSettingsCategoriesState.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/categories/WooPosSettingsCategoriesState.kt index 9e0694a6078e..b878c5a9c51c 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/categories/WooPosSettingsCategoriesState.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/categories/WooPosSettingsCategoriesState.kt @@ -29,7 +29,7 @@ enum class WooPosSettingsCategory( WooPosSettingsDetailDestination.Hardware.Overview ), HELP( - R.string.woopos_get_support_title, + R.string.woopos_settings_help_category, R.string.woopos_settings_help_category_subtitle, Icons.AutoMirrored.Filled.Help, WooPosSettingsDetailDestination.Help.Overview, diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsReceiptRepository.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsReceiptRepository.kt index ec8f5633c5e8..063caf5f3459 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsReceiptRepository.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsReceiptRepository.kt @@ -30,8 +30,9 @@ class WooPosSettingsReceiptRepository @Inject constructor( val settings = response.model ?: emptyMap() val receiptInfo = WooPosSettingsStoreState.ReceiptInfo( storeName = settings["woocommerce_pos_store_name"] ?: "", - address = settings["woocommerce_pos_store_address"] ?: "", + address = formatReceiptAddress(settings["woocommerce_pos_store_address"] ?: ""), phone = settings["woocommerce_pos_store_phone"] ?: "", + email = settings["woocommerce_pos_store_email"] ?: "", refundPolicy = settings["woocommerce_pos_refund_returns_policy"] ?: "" ) @@ -41,6 +42,10 @@ class WooPosSettingsReceiptRepository @Inject constructor( } } + private fun formatReceiptAddress(address: String): String { + return address.replace("\n", ", ").replace(Regex(",\\s*,"), ",").trim() + } + private fun isWooCommerceVersionAtLeast10(): Boolean { val wooCoreVersion = getWooCoreVersion() ?: return false return wooCoreVersion.semverCompareTo(WC_VERSION_SUPPORTS_RECEIPTS) >= 0 diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreScreen.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreScreen.kt index 66ece5f0b4ca..a308f700497a 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreScreen.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreScreen.kt @@ -11,6 +11,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Email import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.Phone import androidx.compose.material.icons.filled.Receipt @@ -120,12 +121,7 @@ private fun StoreInformationSection(storeInfo: WooPosSettingsStoreState.StoreInf @Composable private fun ReceiptLoadingSection() { - WooPosShimmerBox( - modifier = Modifier - .fillMaxWidth(0.3f) - .height(32.dp) - .padding(start = WooPosSpacing.Large.value, bottom = WooPosSpacing.Small.value) - ) + SectionTitle(stringResource(R.string.woopos_settings_receipt_information_title)) repeat(5) { ReceiptMenuItemShimmer() @@ -137,11 +133,14 @@ private fun ReceiptMenuItemShimmer() { Row( modifier = Modifier .fillMaxWidth() - .padding(WooPosSpacing.Large.value), + .padding( + vertical = WooPosSpacing.Medium.value, + horizontal = WooPosSpacing.Large.value + ), verticalAlignment = Alignment.CenterVertically ) { WooPosShimmerBox( - modifier = Modifier.size(28.dp) + modifier = Modifier.size(24.dp) ) Column( @@ -152,7 +151,7 @@ private fun ReceiptMenuItemShimmer() { WooPosShimmerBox( modifier = Modifier .fillMaxWidth(0.4f) - .height(24.dp) + .height(28.dp) ) Spacer(modifier = Modifier.height(WooPosSpacing.Small.value)) @@ -160,7 +159,7 @@ private fun ReceiptMenuItemShimmer() { WooPosShimmerBox( modifier = Modifier .fillMaxWidth(0.7f) - .height(14.dp) + .height(16.dp) ) } } @@ -188,6 +187,12 @@ private fun ReceiptInformationSection(receiptInfo: WooPosSettingsStoreState.Rece subtitle = receiptInfo.phone.ifBlank { stringResource(R.string.woopos_settings_store_not_set) } ) + WooPosSettingsDetailsMenuItem( + icon = Icons.Default.Email, + title = stringResource(R.string.woopos_settings_store_email_label), + subtitle = receiptInfo.email.ifBlank { stringResource(R.string.woopos_settings_store_not_set) } + ) + WooPosSettingsDetailsMenuItem( icon = Icons.Default.Receipt, title = stringResource(R.string.woopos_settings_refund_policy_label), @@ -211,6 +216,7 @@ fun WooPosSettingsStoreScreenPreview() { storeName = "My WooCommerce Store", address = "123 Main Street, City, State 12345, US", phone = "+1 555 1234 1234", + email = "store@example.com", refundPolicy = "Returns accepted within 30 days" ) ) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreState.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreState.kt index 09407681cbda..ae6675b0ea91 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreState.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreState.kt @@ -13,6 +13,7 @@ data class WooPosSettingsStoreState( val storeName: String, val address: String, val phone: String, + val email: String, val refundPolicy: String ) diff --git a/WooCommerce/src/main/res/values/strings.xml b/WooCommerce/src/main/res/values/strings.xml index 8ca143083550..448ffac8bf98 100644 --- a/WooCommerce/src/main/res/values/strings.xml +++ b/WooCommerce/src/main/res/values/strings.xml @@ -4370,6 +4370,7 @@ Documentation Learn more about accepting mobile payments Connected reader + Help Get help and support Learn about which products are supported in POS View guides and tutorials @@ -4580,6 +4581,7 @@ Store name Address Phone + Email Refund & Returns Policy Not set diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreViewModelTest.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreViewModelTest.kt index 7aa008452362..61fdc69ff8d2 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreViewModelTest.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/woopos/settings/details/store/WooPosSettingsStoreViewModelTest.kt @@ -31,6 +31,7 @@ class WooPosSettingsStoreViewModelTest { storeName = "Test Store", address = "123 Test St", phone = "+1234567890", + email = "test@example.com", refundPolicy = "30 day returns" ) whenever(storeRepository.getStoreInfo()).thenReturn(storeInfo)