@@ -23,6 +23,7 @@ import kotlinx.coroutines.launch
23
23
import kotlinx.parcelize.Parcelize
24
24
import java.util.Date
25
25
import javax.inject.Inject
26
+ import kotlin.math.roundToInt
26
27
import kotlin.time.Duration.Companion.days
27
28
28
29
@HiltViewModel
@@ -38,7 +39,6 @@ class BlazeCampaignBudgetViewModel @Inject constructor(
38
39
BudgetUiState (
39
40
currencyCode = navArgs.budget.currencyCode,
40
41
totalBudget = navArgs.budget.totalBudget,
41
- sliderValue = navArgs.budget.totalBudget,
42
42
budgetRangeMin = navArgs.budget.durationInDays * CAMPAIGN_MINIMUM_DAILY_SPEND ,
43
43
budgetRangeMax = navArgs.budget.durationInDays * CAMPAIGN_MAXIMUM_DAILY_SPEND ,
44
44
dailySpending = formatDailySpend(
@@ -106,14 +106,11 @@ class BlazeCampaignBudgetViewModel @Inject constructor(
106
106
}
107
107
108
108
fun onBudgetUpdated (sliderValue : Float ) {
109
- budgetUiState.update { it.copy(sliderValue = sliderValue) }
110
- if (sliderValue.toInt().mod(budgetUiState.value.durationInDays) == 0 ) {
111
- budgetUiState.update {
112
- it.copy(
113
- totalBudget = sliderValue,
114
- dailySpending = formatDailySpend(sliderValue / it.durationInDays)
115
- )
116
- }
109
+ budgetUiState.update {
110
+ it.copy(
111
+ totalBudget = sliderValue,
112
+ dailySpending = formatDailySpend(sliderValue / it.durationInDays)
113
+ )
117
114
}
118
115
}
119
116
@@ -127,7 +124,6 @@ class BlazeCampaignBudgetViewModel @Inject constructor(
127
124
budgetRangeMax = duration * CAMPAIGN_MAXIMUM_DAILY_SPEND ,
128
125
dailySpending = formatDailySpend(currentDailyExpend),
129
126
totalBudget = newTotalBudget,
130
- sliderValue = newTotalBudget,
131
127
campaignDurationDates = getCampaignDurationDisplayDate(it.campaignStartDateMillis, duration)
132
128
)
133
129
}
@@ -148,6 +144,12 @@ class BlazeCampaignBudgetViewModel @Inject constructor(
148
144
149
145
fun onBudgetChangeFinished () {
150
146
fetchAdForecast()
147
+ val roundedBudgetToDurationMultiple =
148
+ (budgetUiState.value.totalBudget / budgetUiState.value.durationInDays).roundToInt() *
149
+ budgetUiState.value.durationInDays
150
+ budgetUiState.update {
151
+ it.copy(totalBudget = roundedBudgetToDurationMultiple.toFloat())
152
+ }
151
153
}
152
154
153
155
private fun fetchAdForecast () {
@@ -193,7 +195,6 @@ class BlazeCampaignBudgetViewModel @Inject constructor(
193
195
data class BudgetUiState (
194
196
val currencyCode : String ,
195
197
val totalBudget : Float ,
196
- val sliderValue : Float ,
197
198
val budgetRangeMin : Float ,
198
199
val budgetRangeMax : Float ,
199
200
val dailySpending : String ,
0 commit comments