Skip to content

Commit f62764c

Browse files
authored
Merge pull request #14717 from woocommerce/issue/woomob-1068-woo-poslocal-catalog-implement-sync-section-in-settings
[WOOMOB-1068] Add initial implementation of Local Catalog Settings
2 parents eb570e9 + 240cb05 commit f62764c

File tree

10 files changed

+480
-2
lines changed

10 files changed

+480
-2
lines changed

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/WooPosSettingsState.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,14 @@ sealed class WooPosSettingsDetailDestination {
4949
}
5050
}
5151

52+
sealed class LocalCatalog : WooPosSettingsDetailDestination() {
53+
data object Overview : LocalCatalog() {
54+
override val titleRes: Int = R.string.woopos_settings_local_catalog_category
55+
override val parentDestination: WooPosSettingsDetailDestination? = null
56+
override val childDestinations: List<WooPosSettingsDetailDestination> = emptyList()
57+
}
58+
}
59+
5260
sealed class Help : WooPosSettingsDetailDestination() {
5361
data object Overview : Help() {
5462
override val titleRes: Int = R.string.woopos_settings_help_category

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/WooPosSettingsViewModel.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.woocommerce.android.ui.woopos.settings.categories.WooPosSettingsCateg
66
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent
77
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.HardwareTapped
88
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.HelpTapped
9+
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.LocalCatalogTapped
910
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.SettingsClosed
1011
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.SettingsOpened
1112
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.StoreDetailsTapped
@@ -38,6 +39,7 @@ class WooPosSettingsViewModel @Inject constructor(
3839
private fun trackCategorySelection(category: WooPosSettingsCategory) {
3940
val event = when (category) {
4041
WooPosSettingsCategory.STORE -> StoreDetailsTapped
42+
WooPosSettingsCategory.LOCAL_CATALOG -> LocalCatalogTapped
4143
WooPosSettingsCategory.HARDWARE -> HardwareTapped
4244
WooPosSettingsCategory.HELP -> HelpTapped
4345
}

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/categories/WooPosSettingsCategoriesState.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.annotation.StringRes
44
import androidx.compose.material.icons.Icons
55
import androidx.compose.material.icons.automirrored.filled.Help
66
import androidx.compose.material.icons.filled.Hardware
7+
import androidx.compose.material.icons.filled.Inventory
78
import androidx.compose.material.icons.filled.Store
89
import androidx.compose.ui.graphics.vector.ImageVector
910
import com.woocommerce.android.R
@@ -22,6 +23,12 @@ enum class WooPosSettingsCategory(
2223
Icons.Default.Store,
2324
WooPosSettingsDetailDestination.Store.Overview
2425
),
26+
LOCAL_CATALOG(
27+
R.string.woopos_settings_local_catalog_category,
28+
R.string.woopos_settings_local_catalog_category_subtitle,
29+
Icons.Default.Inventory,
30+
WooPosSettingsDetailDestination.LocalCatalog.Overview
31+
),
2532
HARDWARE(
2633
R.string.woopos_settings_hardware_category,
2734
R.string.woopos_settings_hardware_category_subtitle,
Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,28 @@
11
package com.woocommerce.android.ui.woopos.settings.categories
22

3+
import android.content.Context
34
import androidx.lifecycle.ViewModel
5+
import com.woocommerce.android.util.FeatureFlag
46
import dagger.hilt.android.lifecycle.HiltViewModel
7+
import dagger.hilt.android.qualifiers.ApplicationContext
58
import kotlinx.coroutines.flow.MutableStateFlow
69
import kotlinx.coroutines.flow.StateFlow
710
import kotlinx.coroutines.flow.asStateFlow
811
import javax.inject.Inject
912

1013
@HiltViewModel
11-
class WooPosSettingsCategoriesViewModel @Inject constructor() : ViewModel() {
12-
private val _state = MutableStateFlow(WooPosSettingsCategoriesState())
14+
class WooPosSettingsCategoriesViewModel @Inject constructor(
15+
@ApplicationContext private val context: Context
16+
) : ViewModel() {
17+
private val _state = MutableStateFlow(createInitialState())
1318
val state: StateFlow<WooPosSettingsCategoriesState> = _state.asStateFlow()
19+
private fun createInitialState(): WooPosSettingsCategoriesState {
20+
val allCategories = WooPosSettingsCategory.entries
21+
val visibleCategories = if (FeatureFlag.WOO_POS_LOCAL_CATALOG_M1.isEnabled(context)) {
22+
allCategories
23+
} else {
24+
allCategories.filter { it != WooPosSettingsCategory.LOCAL_CATALOG }
25+
}
26+
return WooPosSettingsCategoriesState(categories = visibleCategories)
27+
}
1428
}

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/details/WooPosSettingsDetailPaneScreen.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import com.woocommerce.android.ui.woopos.settings.details.hardware.WooPosHardwar
2323
import com.woocommerce.android.ui.woopos.settings.details.hardware.barcodescanner.WooPosSettingsHardwareBarcodeScannerScreen
2424
import com.woocommerce.android.ui.woopos.settings.details.hardware.cardreader.WooPosSettingsHardwareCardReaderScreen
2525
import com.woocommerce.android.ui.woopos.settings.details.help.WooPosHelpDetailScreen
26+
import com.woocommerce.android.ui.woopos.settings.details.localcatalog.WooPosSettingsLocalCatalogScreen
2627
import com.woocommerce.android.ui.woopos.settings.details.store.WooPosSettingsStoreScreen
2728

2829
@Composable
@@ -93,6 +94,10 @@ fun WooPosSettingsDetailPaneScreen(
9394
WooPosSettingsStoreScreen()
9495
}
9596

97+
is WooPosSettingsDetailDestination.LocalCatalog.Overview -> {
98+
WooPosSettingsLocalCatalogScreen()
99+
}
100+
96101
is WooPosSettingsDetailDestination.Help.Overview -> {
97102
WooPosHelpDetailScreen(onShowProductInfoDialog = onShowProductInfoDialog)
98103
}

0 commit comments

Comments
 (0)