Skip to content

Commit 2317d23

Browse files
authored
Merge pull request #14454 from woocommerce/woomob-1022-woo-possettings-prepare-infrastructure-for-the-settings
[WOOMOB-1022][Woo POS][Settings] Implement settings navigation infrastructure to Settings screen
2 parents 38a0bf6 + 1aaee1e commit 2317d23

File tree

11 files changed

+90
-10
lines changed

11 files changed

+90
-10
lines changed

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/home/WooPosHomeChildToParentCommunication.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ sealed class ChildToParentEvent {
4040
data object ExitPosClicked : ChildToParentEvent()
4141
data object SimpleProductExplanationMenuItemClicked : ChildToParentEvent()
4242
data object BarcodeInfoMenuItemClicked : ChildToParentEvent()
43-
data object SettingsMenuItemClicked : ChildToParentEvent()
4443
data object CouponsValidationFailed : ChildToParentEvent()
4544
data object RemoveCouponsClicked : ChildToParentEvent()
4645
data class CouponsRemoved(
@@ -55,6 +54,7 @@ sealed class ChildToParentEvent {
5554
data class ToEmailReceipt(val orderId: Long) : NavigationEvent()
5655
data object ReturnHomeFromCashWhenCardPaymentStarted : NavigationEvent()
5756
data object ExitPos : NavigationEvent()
57+
data object ToSettings : NavigationEvent()
5858
}
5959

6060
sealed class SearchEvent : ChildToParentEvent() {

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/home/WooPosHomeViewModel.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -213,12 +213,6 @@ class WooPosHomeViewModel @Inject constructor(
213213
)
214214
}
215215

216-
ChildToParentEvent.SettingsMenuItemClicked -> {
217-
viewModelScope.launch {
218-
_toastEvent.emit("Settings feature coming soon")
219-
}
220-
}
221-
222216
is ChildToParentEvent.ToastMessageDisplayed -> {
223217
viewModelScope.launch {
224218
_toastEvent.emit(event.message)

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/home/toolbar/WooPosToolbarViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class WooPosToolbarViewModel @Inject constructor(
101101
when (event.menuItem.title) {
102102
R.string.woopos_settings_title -> {
103103
viewModelScope.launch {
104-
childrenToParentEventSender.sendToParent(ChildToParentEvent.SettingsMenuItemClicked)
104+
childrenToParentEventSender.sendToParent(ChildToParentEvent.NavigationEvent.ToSettings)
105105
}
106106
}
107107
R.string.woopos_barcode_scanning_title -> {

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/root/navigation/WooPosMainFlowGraph.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import com.woocommerce.android.ui.woopos.emailreceipt.emailReceiptScreen
77
import com.woocommerce.android.ui.woopos.home.WooPosHomeViewModel
88
import com.woocommerce.android.ui.woopos.home.eligibilityScreen
99
import com.woocommerce.android.ui.woopos.home.homeScreen
10+
import com.woocommerce.android.ui.woopos.settings.settingsScreen
1011
import com.woocommerce.android.ui.woopos.splash.SPLASH_ROUTE
1112
import com.woocommerce.android.ui.woopos.splash.splashScreen
1213

@@ -25,5 +26,6 @@ fun NavGraphBuilder.mainGraph(
2526
cashPaymentScreen(onNavigationEvent = onNavigationEvent)
2627
emailReceiptScreen(onNavigationEvent = onNavigationEvent)
2728
eligibilityScreen(onNavigationEvent = onNavigationEvent)
29+
settingsScreen(onNavigationEvent = onNavigationEvent)
2830
}
2931
}

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/root/navigation/WooPosNavigationEvent.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ sealed class WooPosNavigationEvent {
1414
data class OpenEligibilityScreenFromSplash(
1515
val reason: WooPosLaunchability.NonLaunchabilityReason
1616
) : WooPosNavigationEvent()
17+
data object OpenSettings : WooPosNavigationEvent()
1718
}

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/root/navigation/WooPosNavigationEventHandler.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.woocommerce.android.ui.woopos.home.navigateToEligibilityScreen
99
import com.woocommerce.android.ui.woopos.home.navigateToHomeScreen
1010
import com.woocommerce.android.ui.woopos.home.navigateToHomeScreenAfterSuccessfulCashPayment
1111
import com.woocommerce.android.ui.woopos.home.navigateToHomeScreenIfHomeScreenNotOpen
12+
import com.woocommerce.android.ui.woopos.settings.navigateToSettingsScreen
1213
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.BackToCheckoutFromCash
1314
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsTracker
1415
import kotlinx.coroutines.CoroutineScope
@@ -42,5 +43,6 @@ fun NavHostController.handleNavigationEvent(
4243

4344
is WooPosNavigationEvent.OpenEligibilityScreenFromSplash ->
4445
navigateToEligibilityScreen(event.reason)
46+
is WooPosNavigationEvent.OpenSettings -> navigateToSettingsScreen()
4547
}
4648
}

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/root/navigation/WooPosRootHost.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.woocommerce.android.ui.woopos.home.WooPosHomeViewModel
1111
import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent.ExitPosClicked
1212
import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent.OpenCashPayment
1313
import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent.OpenEmailReceipt
14+
import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent.OpenSettings
1415
import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent.ReturnHomeFromCashPayment
1516

1617
@Composable
@@ -27,6 +28,7 @@ fun WooPosRootHost(
2728
is NavigationEvent.ToEmailReceipt -> onNavigationEvent(OpenEmailReceipt(it.orderId))
2829
NavigationEvent.ExitPos -> onNavigationEvent(ExitPosClicked)
2930
NavigationEvent.ReturnHomeFromCashWhenCardPaymentStarted -> onNavigationEvent(ReturnHomeFromCashPayment)
31+
NavigationEvent.ToSettings -> onNavigationEvent(OpenSettings)
3032
}
3133
}
3234
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.woocommerce.android.ui.woopos.settings
2+
3+
import androidx.compose.animation.slideInHorizontally
4+
import androidx.compose.animation.slideOutHorizontally
5+
import androidx.navigation.NavController
6+
import androidx.navigation.NavGraphBuilder
7+
import androidx.navigation.compose.composable
8+
import com.woocommerce.android.ui.woopos.home.HOME_ROUTE
9+
import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent
10+
import com.woocommerce.android.ui.woopos.root.navigation.navigateOnce
11+
12+
const val SETTINGS_ROUTE = "$HOME_ROUTE/settings"
13+
14+
fun NavController.navigateToSettingsScreen() {
15+
navigateOnce(SETTINGS_ROUTE)
16+
}
17+
18+
fun NavGraphBuilder.settingsScreen(
19+
onNavigationEvent: (WooPosNavigationEvent) -> Unit
20+
) {
21+
composable(
22+
route = SETTINGS_ROUTE,
23+
enterTransition = {
24+
slideInHorizontally(
25+
initialOffsetX = { fullWidth -> fullWidth },
26+
)
27+
},
28+
exitTransition = {
29+
slideOutHorizontally(
30+
targetOffsetX = { fullWidth -> -fullWidth },
31+
)
32+
},
33+
popExitTransition = {
34+
slideOutHorizontally(
35+
targetOffsetX = { fullWidth -> fullWidth },
36+
)
37+
},
38+
) {
39+
WooPosSettingsScreen(
40+
onNavigationEvent = onNavigationEvent,
41+
)
42+
}
43+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.woocommerce.android.ui.woopos.settings
2+
3+
import androidx.compose.foundation.layout.Box
4+
import androidx.compose.foundation.layout.fillMaxSize
5+
import androidx.compose.runtime.Composable
6+
import androidx.compose.ui.Alignment
7+
import androidx.compose.ui.Modifier
8+
import androidx.hilt.navigation.compose.hiltViewModel
9+
import com.woocommerce.android.ui.woopos.common.composeui.component.WooPosText
10+
import com.woocommerce.android.ui.woopos.common.composeui.designsystem.WooPosTypography
11+
import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent
12+
13+
@Composable
14+
@Suppress("UnusedParameter")
15+
fun WooPosSettingsScreen(
16+
onNavigationEvent: (WooPosNavigationEvent) -> Unit,
17+
viewModel: WooPosSettingsViewModel = hiltViewModel()
18+
) {
19+
Box(
20+
modifier = Modifier.fillMaxSize(),
21+
contentAlignment = Alignment.Center
22+
) {
23+
WooPosText(
24+
text = "Settings Screen",
25+
style = WooPosTypography.Heading,
26+
)
27+
}
28+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.woocommerce.android.ui.woopos.settings
2+
3+
import androidx.lifecycle.ViewModel
4+
import dagger.hilt.android.lifecycle.HiltViewModel
5+
import javax.inject.Inject
6+
7+
@HiltViewModel
8+
class WooPosSettingsViewModel @Inject constructor() : ViewModel()

0 commit comments

Comments
 (0)