From 6554156e722c58ef97ab1f353382816801625581 Mon Sep 17 00:00:00 2001 From: jorgemucientesfayos Date: Thu, 18 Jan 2024 16:09:49 +0100 Subject: [PATCH 1/7] Add new files to display budget screen --- .../creation/budget/CampaignBudgetFragment.kt | 40 +++++++++++++++++++ .../creation/budget/CampaignBudgetScreen.kt | 9 +++++ .../budget/CampaignBudgetViewModel.kt | 14 +++++++ 3 files changed, 63 insertions(+) create mode 100644 WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetFragment.kt create mode 100644 WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetScreen.kt create mode 100644 WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetViewModel.kt diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetFragment.kt new file mode 100644 index 00000000000..3241991d1d8 --- /dev/null +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetFragment.kt @@ -0,0 +1,40 @@ +package com.woocommerce.android.ui.blaze.creation.budget + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.viewModels +import androidx.navigation.fragment.findNavController +import com.woocommerce.android.ui.base.BaseFragment +import com.woocommerce.android.ui.compose.composeView +import com.woocommerce.android.ui.main.AppBarStatus +import com.woocommerce.android.viewmodel.MultiLiveEvent +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class CampaignBudgetFragment : BaseFragment() { + override val activityAppBarStatus: AppBarStatus + get() = AppBarStatus.Hidden + + val viewModel: CampaignBudgetViewModel by viewModels() + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + return composeView { + CampaignBudgetScreen(viewModel) + } + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setupObservers() + } + + private fun setupObservers() { + viewModel.event.observe(viewLifecycleOwner) { event -> + when (event) { + is MultiLiveEvent.Event.Exit -> findNavController().popBackStack() + } + } + } +} diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetScreen.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetScreen.kt new file mode 100644 index 00000000000..71979276731 --- /dev/null +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetScreen.kt @@ -0,0 +1,9 @@ +package com.woocommerce.android.ui.blaze.creation.budget + +import androidx.compose.material.Text +import androidx.compose.runtime.Composable + +@Composable +fun CampaignBudgetScreen(viewModel: CampaignBudgetViewModel) { + Text(text = "This is the CampaignBudgetScreen") +} diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetViewModel.kt new file mode 100644 index 00000000000..1ef58c2f760 --- /dev/null +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetViewModel.kt @@ -0,0 +1,14 @@ +package com.woocommerce.android.ui.blaze.creation.budget + +import androidx.lifecycle.SavedStateHandle +import com.woocommerce.android.ui.blaze.BlazeRepository +import com.woocommerce.android.viewmodel.ScopedViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class CampaignBudgetViewModel @Inject constructor( + savedStateHandle: SavedStateHandle, + blazeRepository: BlazeRepository +) : ScopedViewModel(savedStateHandle) { +} From 6e562049da5bc419ff1972ab1c556e3e96dc2f22 Mon Sep 17 00:00:00 2001 From: jorgemucientesfayos Date: Thu, 18 Jan 2024 16:10:06 +0100 Subject: [PATCH 2/7] Add new campaign budget fragment to navigation graph --- .../res/navigation/nav_graph_blaze_campaign_creation.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml b/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml index b6f53e6b76d..09fa32df65d 100644 --- a/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml +++ b/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml @@ -50,5 +50,12 @@ android:name="productId" android:defaultValue="-1L" app:argType="long" /> + + From e698d7e966996d86edbad0e730c90a3272921724 Mon Sep 17 00:00:00 2001 From: jorgemucientesfayos Date: Thu, 18 Jan 2024 17:34:27 +0100 Subject: [PATCH 3/7] Navigate from campaign preview screen to budget screen --- .../blaze/creation/budget/CampaignBudgetViewModel.kt | 2 -- .../preview/BlazeCampaignCreationPreviewFragment.kt | 6 ++++++ .../preview/BlazeCampaignCreationPreviewScreen.kt | 8 ++++++++ .../preview/BlazeCampaignCreationPreviewViewModel.kt | 10 ++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetViewModel.kt index 1ef58c2f760..301c7e60438 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetViewModel.kt @@ -1,7 +1,6 @@ package com.woocommerce.android.ui.blaze.creation.budget import androidx.lifecycle.SavedStateHandle -import com.woocommerce.android.ui.blaze.BlazeRepository import com.woocommerce.android.viewmodel.ScopedViewModel import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @@ -9,6 +8,5 @@ import javax.inject.Inject @HiltViewModel class CampaignBudgetViewModel @Inject constructor( savedStateHandle: SavedStateHandle, - blazeRepository: BlazeRepository ) : ScopedViewModel(savedStateHandle) { } diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewFragment.kt index a3501a325c9..4338c8961b8 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewFragment.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewFragment.kt @@ -6,12 +6,14 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController +import com.woocommerce.android.extensions.navigateSafely import com.woocommerce.android.ui.base.BaseFragment import com.woocommerce.android.ui.compose.composeView import com.woocommerce.android.ui.main.AppBarStatus import com.woocommerce.android.viewmodel.MultiLiveEvent import dagger.hilt.android.AndroidEntryPoint import ui.blaze.creation.preview.BlazeCampaignCreationPreviewViewModel +import ui.blaze.creation.preview.BlazeCampaignCreationPreviewViewModel.NavigateToBudgetScreen @AndroidEntryPoint class BlazeCampaignCreationPreviewFragment : BaseFragment() { @@ -35,6 +37,10 @@ class BlazeCampaignCreationPreviewFragment : BaseFragment() { viewModel.event.observe(viewLifecycleOwner) { event -> when (event) { is MultiLiveEvent.Event.Exit -> findNavController().popBackStack() + is NavigateToBudgetScreen -> findNavController().navigateSafely( + BlazeCampaignCreationPreviewFragmentDirections + .actionBlazeCampaignCreationPreviewFragmentToCampaignBudgetFragment() + ) } } } diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewScreen.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewScreen.kt index 9aaab43bf22..8a4076b1b18 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewScreen.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewScreen.kt @@ -2,6 +2,7 @@ package com.woocommerce.android.ui.blaze.creation.preview import androidx.compose.foundation.background import androidx.compose.foundation.border +import androidx.compose.foundation.clickable import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -315,6 +316,7 @@ private fun CampaignPropertyItem( Row( modifier = modifier .fillMaxWidth() + .clickable { item.onItemSelected() } .padding( start = 16.dp, end = 16.dp, @@ -365,28 +367,34 @@ fun CampaignScreenPreview() { budget = CampaignDetailItemUi( displayTitle = stringResource(R.string.blaze_campaign_preview_details_budget), displayValue = "140 USD, 7 days from Jan 14", + onItemSelected = {}, ), targetDetails = listOf( CampaignDetailItemUi( displayTitle = stringResource(R.string.blaze_campaign_preview_details_language), displayValue = "English, Spanish", + onItemSelected = {}, ), CampaignDetailItemUi( displayTitle = stringResource(R.string.blaze_campaign_preview_details_devices), displayValue = "USA, Poland, Japan", + onItemSelected = {}, ), CampaignDetailItemUi( displayTitle = stringResource(R.string.blaze_campaign_preview_details_location), displayValue = "Samsung, Apple, Xiaomi", + onItemSelected = {}, ), CampaignDetailItemUi( displayTitle = stringResource(R.string.blaze_campaign_preview_details_interests), displayValue = "Fashion, Clothing, T-shirts", + onItemSelected = {}, ), ), destinationUrl = CampaignDetailItemUi( displayTitle = "Destination URL", displayValue = "https://www.myer.com.au/p/white-t-shirt-797334760-797334760", + onItemSelected = {}, maxLinesValue = 1, ) ) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModel.kt index 196c7c41e15..411eff9634a 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModel.kt @@ -62,32 +62,38 @@ class BlazeCampaignCreationPreviewViewModel @Inject constructor( budget = CampaignDetailItemUi( displayTitle = resourceProvider.getString(R.string.blaze_campaign_preview_details_budget), displayValue = budget.toDisplayValue(), + onItemSelected = { triggerEvent(NavigateToBudgetScreen) }, ), targetDetails = listOf( CampaignDetailItemUi( displayTitle = resourceProvider.getString(R.string.blaze_campaign_preview_details_language), displayValue = languages.joinToString { it.name } .ifEmpty { resourceProvider.getString(R.string.blaze_campaign_preview_target_default_value) }, + onItemSelected = { /* TODO: Add language selection */ }, ), CampaignDetailItemUi( displayTitle = resourceProvider.getString(R.string.blaze_campaign_preview_details_devices), displayValue = locations.joinToString { it.name } .ifEmpty { resourceProvider.getString(R.string.blaze_campaign_preview_target_default_value) }, + onItemSelected = { /* TODO: Add devices selection */ }, ), CampaignDetailItemUi( displayTitle = resourceProvider.getString(R.string.blaze_campaign_preview_details_location), displayValue = devices.joinToString { it.name } .ifEmpty { resourceProvider.getString(R.string.blaze_campaign_preview_target_default_value) }, + onItemSelected = { /* TODO: Add location selection */ }, ), CampaignDetailItemUi( displayTitle = resourceProvider.getString(R.string.blaze_campaign_preview_details_interests), displayValue = interests.joinToString { it.description } .ifEmpty { resourceProvider.getString(R.string.blaze_campaign_preview_target_default_value) }, + onItemSelected = { /* TODO: Add interests selection */ }, ), ), destinationUrl = CampaignDetailItemUi( displayTitle = resourceProvider.getString(R.string.blaze_campaign_preview_details_destination_url), displayValue = targetUrl, + onItemSelected = { /* TODO: Add destination url selection */ }, maxLinesValue = 1, ) ) @@ -127,6 +133,10 @@ class BlazeCampaignCreationPreviewViewModel @Inject constructor( data class CampaignDetailItemUi( val displayTitle: String, val displayValue: String, + val onItemSelected: () -> Unit, val maxLinesValue: Int? = null, ) + + object NavigateToBudgetScreen : MultiLiveEvent.Event() + } From 26cfd576ae9af0530067f7987585213b3e8583cb Mon Sep 17 00:00:00 2001 From: jorgemucientesfayos Date: Thu, 18 Jan 2024 17:39:10 +0100 Subject: [PATCH 4/7] Rename files to add Blaze prefix --- ...mpaignBudgetFragment.kt => BlazeCampaignBudgetFragment.kt} | 4 ++-- .../{CampaignBudgetScreen.kt => BlazeCampaignBudgetScreen.kt} | 2 +- ...aignBudgetViewModel.kt => BlazeCampaignBudgetViewModel.kt} | 2 +- .../main/res/navigation/nav_graph_blaze_campaign_creation.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/{CampaignBudgetFragment.kt => BlazeCampaignBudgetFragment.kt} (91%) rename WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/{CampaignBudgetScreen.kt => BlazeCampaignBudgetScreen.kt} (75%) rename WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/{CampaignBudgetViewModel.kt => BlazeCampaignBudgetViewModel.kt} (85%) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetFragment.kt similarity index 91% rename from WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetFragment.kt rename to WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetFragment.kt index 3241991d1d8..79f87a6ce89 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetFragment.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetFragment.kt @@ -13,11 +13,11 @@ import com.woocommerce.android.viewmodel.MultiLiveEvent import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class CampaignBudgetFragment : BaseFragment() { +class BlazeCampaignBudgetFragment : BaseFragment() { override val activityAppBarStatus: AppBarStatus get() = AppBarStatus.Hidden - val viewModel: CampaignBudgetViewModel by viewModels() + val viewModel: BlazeCampaignBudgetViewModel by viewModels() override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { return composeView { diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetScreen.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetScreen.kt similarity index 75% rename from WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetScreen.kt rename to WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetScreen.kt index 71979276731..d499b4d9d08 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetScreen.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetScreen.kt @@ -4,6 +4,6 @@ import androidx.compose.material.Text import androidx.compose.runtime.Composable @Composable -fun CampaignBudgetScreen(viewModel: CampaignBudgetViewModel) { +fun CampaignBudgetScreen(viewModel: BlazeCampaignBudgetViewModel) { Text(text = "This is the CampaignBudgetScreen") } diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetViewModel.kt similarity index 85% rename from WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetViewModel.kt rename to WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetViewModel.kt index 301c7e60438..e27f0cd0705 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/CampaignBudgetViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetViewModel.kt @@ -6,7 +6,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @HiltViewModel -class CampaignBudgetViewModel @Inject constructor( +class BlazeCampaignBudgetViewModel @Inject constructor( savedStateHandle: SavedStateHandle, ) : ScopedViewModel(savedStateHandle) { } diff --git a/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml b/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml index 09fa32df65d..a84b9fac2af 100644 --- a/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml +++ b/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml @@ -56,6 +56,6 @@ From 3f4d616cadedee0de85b6183e80789988b10d7d1 Mon Sep 17 00:00:00 2001 From: jorgemucientesfayos Date: Fri, 19 Jan 2024 09:04:55 +0100 Subject: [PATCH 5/7] Add back navigation and basic structure for budget screen --- .../budget/BlazeCampaignBudgetScreen.kt | 83 ++++++++++++++++++- .../budget/BlazeCampaignBudgetViewModel.kt | 5 ++ WooCommerce/src/main/res/values/strings.xml | 5 ++ 3 files changed, 92 insertions(+), 1 deletion(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetScreen.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetScreen.kt index d499b4d9d08..a85dec505ef 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetScreen.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetScreen.kt @@ -1,9 +1,90 @@ package com.woocommerce.android.ui.blaze.creation.budget +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.MaterialTheme +import androidx.compose.material.ModalBottomSheetValue +import androidx.compose.material.Scaffold import androidx.compose.material.Text +import androidx.compose.material.icons.Icons.Filled +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.rememberModalBottomSheetState import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.dimensionResource +import androidx.compose.ui.res.stringResource +import com.woocommerce.android.R.dimen +import com.woocommerce.android.R.string +import com.woocommerce.android.ui.compose.component.Toolbar +import com.woocommerce.android.ui.compose.component.WCColoredButton +import com.woocommerce.android.ui.compose.component.WCModalBottomSheetLayout +import kotlinx.coroutines.launch @Composable fun CampaignBudgetScreen(viewModel: BlazeCampaignBudgetViewModel) { - Text(text = "This is the CampaignBudgetScreen") + CampaignBudgetScreen( + onBackPressed = viewModel::onBackPressed + ) +} + +@OptIn(ExperimentalMaterialApi::class) +@Composable +private fun CampaignBudgetScreen( + onBackPressed: () -> Unit +) { + val coroutineScope = rememberCoroutineScope() + val modalSheetState = rememberModalBottomSheetState( + initialValue = ModalBottomSheetValue.Hidden, + confirmValueChange = { it != ModalBottomSheetValue.HalfExpanded } + ) + Scaffold( + topBar = { + Toolbar( + title = stringResource(id = string.blaze_campaign_budget_title), + onNavigationButtonClick = onBackPressed, + navigationIcon = Filled.ArrowBack + ) + }, + modifier = Modifier.background(MaterialTheme.colors.surface) + ) { paddingValues -> + WCModalBottomSheetLayout( + sheetState = modalSheetState, + sheetContent = { + DurationSheetContent( + durationInDays = 0, + onApplyTapped = { + coroutineScope.launch { modalSheetState.hide() } + } + ) + } + ) { + Column( + modifier = Modifier + .padding(paddingValues) + .background(MaterialTheme.colors.surface) + .padding(dimensionResource(id = dimen.major_100)) + ) { + // Budget content + } + } + } +} + +@Composable +private fun DurationSheetContent( + durationInDays: Int, + onApplyTapped: () -> Unit, + modifier: Modifier = Modifier +) { + Column( + modifier = modifier.verticalScroll(rememberScrollState()) + ) { + Text(text = "Current duration: $durationInDays") + WCColoredButton(onClick = onApplyTapped, text = "Apply") + } } diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetViewModel.kt index e27f0cd0705..0414d2d4caa 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/budget/BlazeCampaignBudgetViewModel.kt @@ -1,6 +1,7 @@ package com.woocommerce.android.ui.blaze.creation.budget import androidx.lifecycle.SavedStateHandle +import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.Exit import com.woocommerce.android.viewmodel.ScopedViewModel import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @@ -9,4 +10,8 @@ import javax.inject.Inject class BlazeCampaignBudgetViewModel @Inject constructor( savedStateHandle: SavedStateHandle, ) : ScopedViewModel(savedStateHandle) { + + fun onBackPressed() { + triggerEvent(Exit) + } } diff --git a/WooCommerce/src/main/res/values/strings.xml b/WooCommerce/src/main/res/values/strings.xml index 8e1af62fe3f..538adcde4a9 100644 --- a/WooCommerce/src/main/res/values/strings.xml +++ b/WooCommerce/src/main/res/values/strings.xml @@ -3838,6 +3838,11 @@ %1$s days from %2$s All + + Set your budget + From 9fcee6f5903247fc24b1c82c95bd161c1c9b245e Mon Sep 17 00:00:00 2001 From: jorgemucientesfayos Date: Fri, 19 Jan 2024 09:05:20 +0100 Subject: [PATCH 6/7] Fix wrong navigation when opening budget screen --- .../preview/BlazeCampaignCreationPreviewFragment.kt | 2 +- .../res/navigation/nav_graph_blaze_campaign_creation.xml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewFragment.kt index 4338c8961b8..68d23c45cb8 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewFragment.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewFragment.kt @@ -39,7 +39,7 @@ class BlazeCampaignCreationPreviewFragment : BaseFragment() { is MultiLiveEvent.Event.Exit -> findNavController().popBackStack() is NavigateToBudgetScreen -> findNavController().navigateSafely( BlazeCampaignCreationPreviewFragmentDirections - .actionBlazeCampaignCreationPreviewFragmentToCampaignBudgetFragment() + .actionBlazeCampaignCreationPreviewFragmentToBlazeCampaignBudgetFragment() ) } } diff --git a/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml b/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml index a84b9fac2af..e310902d2e0 100644 --- a/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml +++ b/WooCommerce/src/main/res/navigation/nav_graph_blaze_campaign_creation.xml @@ -51,11 +51,11 @@ android:defaultValue="-1L" app:argType="long" /> + android:id="@+id/action_blazeCampaignCreationPreviewFragment_to_blazeCampaignBudgetFragment" + app:destination="@id/blazeCampaignBudgetFragment" /> + android:label="BlazeCampaignBudgetFragment" /> From 0b2f2d877ce789f0bd1034c7185a3d9d2ae539bd Mon Sep 17 00:00:00 2001 From: jorgemucientesfayos Date: Fri, 19 Jan 2024 11:47:07 +0100 Subject: [PATCH 7/7] Fix detekt minor issues --- .../preview/BlazeCampaignCreationPreviewViewModel.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModel.kt index 411eff9634a..d11dccf4766 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/blaze/creation/preview/BlazeCampaignCreationPreviewViewModel.kt @@ -69,31 +69,31 @@ class BlazeCampaignCreationPreviewViewModel @Inject constructor( displayTitle = resourceProvider.getString(R.string.blaze_campaign_preview_details_language), displayValue = languages.joinToString { it.name } .ifEmpty { resourceProvider.getString(R.string.blaze_campaign_preview_target_default_value) }, - onItemSelected = { /* TODO: Add language selection */ }, + onItemSelected = { /* TODO Add language selection */ }, ), CampaignDetailItemUi( displayTitle = resourceProvider.getString(R.string.blaze_campaign_preview_details_devices), displayValue = locations.joinToString { it.name } .ifEmpty { resourceProvider.getString(R.string.blaze_campaign_preview_target_default_value) }, - onItemSelected = { /* TODO: Add devices selection */ }, + onItemSelected = { /* TODO Add devices selection */ }, ), CampaignDetailItemUi( displayTitle = resourceProvider.getString(R.string.blaze_campaign_preview_details_location), displayValue = devices.joinToString { it.name } .ifEmpty { resourceProvider.getString(R.string.blaze_campaign_preview_target_default_value) }, - onItemSelected = { /* TODO: Add location selection */ }, + onItemSelected = { /* TODO Add location selection */ }, ), CampaignDetailItemUi( displayTitle = resourceProvider.getString(R.string.blaze_campaign_preview_details_interests), displayValue = interests.joinToString { it.description } .ifEmpty { resourceProvider.getString(R.string.blaze_campaign_preview_target_default_value) }, - onItemSelected = { /* TODO: Add interests selection */ }, + onItemSelected = { /* TODO Add interests selection */ }, ), ), destinationUrl = CampaignDetailItemUi( displayTitle = resourceProvider.getString(R.string.blaze_campaign_preview_details_destination_url), displayValue = targetUrl, - onItemSelected = { /* TODO: Add destination url selection */ }, + onItemSelected = { /* TODO Add destination url selection */ }, maxLinesValue = 1, ) ) @@ -138,5 +138,4 @@ class BlazeCampaignCreationPreviewViewModel @Inject constructor( ) object NavigateToBudgetScreen : MultiLiveEvent.Event() - }