File tree Expand file tree Collapse file tree 11 files changed +90
-10
lines changed
main/kotlin/com/woocommerce/android/ui/woopos
test/kotlin/com/woocommerce/android/ui/woopos/home/toolbar Expand file tree Collapse file tree 11 files changed +90
-10
lines changed Original file line number Diff line number Diff line change @@ -40,7 +40,6 @@ sealed class ChildToParentEvent {
40
40
data object ExitPosClicked : ChildToParentEvent ()
41
41
data object SimpleProductExplanationMenuItemClicked : ChildToParentEvent ()
42
42
data object BarcodeInfoMenuItemClicked : ChildToParentEvent ()
43
- data object SettingsMenuItemClicked : ChildToParentEvent ()
44
43
data object CouponsValidationFailed : ChildToParentEvent ()
45
44
data object RemoveCouponsClicked : ChildToParentEvent ()
46
45
data class CouponsRemoved (
@@ -55,6 +54,7 @@ sealed class ChildToParentEvent {
55
54
data class ToEmailReceipt (val orderId : Long ) : NavigationEvent()
56
55
data object ReturnHomeFromCashWhenCardPaymentStarted : NavigationEvent ()
57
56
data object ExitPos : NavigationEvent ()
57
+ data object ToSettings : NavigationEvent ()
58
58
}
59
59
60
60
sealed class SearchEvent : ChildToParentEvent () {
Original file line number Diff line number Diff line change @@ -213,12 +213,6 @@ class WooPosHomeViewModel @Inject constructor(
213
213
)
214
214
}
215
215
216
- ChildToParentEvent .SettingsMenuItemClicked -> {
217
- viewModelScope.launch {
218
- _toastEvent .emit(" Settings feature coming soon" )
219
- }
220
- }
221
-
222
216
is ChildToParentEvent .ToastMessageDisplayed -> {
223
217
viewModelScope.launch {
224
218
_toastEvent .emit(event.message)
Original file line number Diff line number Diff line change @@ -101,7 +101,7 @@ class WooPosToolbarViewModel @Inject constructor(
101
101
when (event.menuItem.title) {
102
102
R .string.woopos_settings_title -> {
103
103
viewModelScope.launch {
104
- childrenToParentEventSender.sendToParent(ChildToParentEvent .SettingsMenuItemClicked )
104
+ childrenToParentEventSender.sendToParent(ChildToParentEvent .NavigationEvent . ToSettings )
105
105
}
106
106
}
107
107
R .string.woopos_barcode_scanning_title -> {
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import com.woocommerce.android.ui.woopos.emailreceipt.emailReceiptScreen
7
7
import com.woocommerce.android.ui.woopos.home.WooPosHomeViewModel
8
8
import com.woocommerce.android.ui.woopos.home.eligibilityScreen
9
9
import com.woocommerce.android.ui.woopos.home.homeScreen
10
+ import com.woocommerce.android.ui.woopos.settings.settingsScreen
10
11
import com.woocommerce.android.ui.woopos.splash.SPLASH_ROUTE
11
12
import com.woocommerce.android.ui.woopos.splash.splashScreen
12
13
@@ -25,5 +26,6 @@ fun NavGraphBuilder.mainGraph(
25
26
cashPaymentScreen(onNavigationEvent = onNavigationEvent)
26
27
emailReceiptScreen(onNavigationEvent = onNavigationEvent)
27
28
eligibilityScreen(onNavigationEvent = onNavigationEvent)
29
+ settingsScreen(onNavigationEvent = onNavigationEvent)
28
30
}
29
31
}
Original file line number Diff line number Diff line change @@ -14,4 +14,5 @@ sealed class WooPosNavigationEvent {
14
14
data class OpenEligibilityScreenFromSplash (
15
15
val reason : WooPosLaunchability .NonLaunchabilityReason
16
16
) : WooPosNavigationEvent()
17
+ data object OpenSettings : WooPosNavigationEvent ()
17
18
}
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ import com.woocommerce.android.ui.woopos.home.navigateToEligibilityScreen
9
9
import com.woocommerce.android.ui.woopos.home.navigateToHomeScreen
10
10
import com.woocommerce.android.ui.woopos.home.navigateToHomeScreenAfterSuccessfulCashPayment
11
11
import com.woocommerce.android.ui.woopos.home.navigateToHomeScreenIfHomeScreenNotOpen
12
+ import com.woocommerce.android.ui.woopos.settings.navigateToSettingsScreen
12
13
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.BackToCheckoutFromCash
13
14
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsTracker
14
15
import kotlinx.coroutines.CoroutineScope
@@ -42,5 +43,6 @@ fun NavHostController.handleNavigationEvent(
42
43
43
44
is WooPosNavigationEvent .OpenEligibilityScreenFromSplash ->
44
45
navigateToEligibilityScreen(event.reason)
46
+ is WooPosNavigationEvent .OpenSettings -> navigateToSettingsScreen()
45
47
}
46
48
}
Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ import com.woocommerce.android.ui.woopos.home.WooPosHomeViewModel
11
11
import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent.ExitPosClicked
12
12
import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent.OpenCashPayment
13
13
import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent.OpenEmailReceipt
14
+ import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent.OpenSettings
14
15
import com.woocommerce.android.ui.woopos.root.navigation.WooPosNavigationEvent.ReturnHomeFromCashPayment
15
16
16
17
@Composable
@@ -27,6 +28,7 @@ fun WooPosRootHost(
27
28
is NavigationEvent .ToEmailReceipt -> onNavigationEvent(OpenEmailReceipt (it.orderId))
28
29
NavigationEvent .ExitPos -> onNavigationEvent(ExitPosClicked )
29
30
NavigationEvent .ReturnHomeFromCashWhenCardPaymentStarted -> onNavigationEvent(ReturnHomeFromCashPayment )
31
+ NavigationEvent .ToSettings -> onNavigationEvent(OpenSettings )
30
32
}
31
33
}
32
34
}
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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()
You can’t perform that action at this time.
0 commit comments