@@ -4,6 +4,9 @@ import android.os.Parcelable
4
4
import androidx.lifecycle.SavedStateHandle
5
5
import androidx.lifecycle.asLiveData
6
6
import androidx.lifecycle.viewModelScope
7
+ import com.woocommerce.android.analytics.AnalyticsEvent.BLAZE_CREATION_EDIT_AD_AI_SUGGESTION_TAPPED
8
+ import com.woocommerce.android.analytics.AnalyticsEvent.BLAZE_CREATION_EDIT_AD_SAVE_TAPPED
9
+ import com.woocommerce.android.analytics.AnalyticsTrackerWrapper
7
10
import com.woocommerce.android.model.Product
8
11
import com.woocommerce.android.ui.blaze.BlazeRepository
9
12
import com.woocommerce.android.ui.blaze.BlazeRepository.AiSuggestionForAd
@@ -22,8 +25,8 @@ import javax.inject.Inject
22
25
23
26
@HiltViewModel
24
27
class BlazeCampaignCreationEditAdViewModel @Inject constructor(
25
- private val blazeRepository : BlazeRepository ,
26
- savedStateHandle : SavedStateHandle
28
+ savedStateHandle : SavedStateHandle ,
29
+ private val analyticsTrackerWrapper : AnalyticsTrackerWrapper ,
27
30
) : ScopedViewModel(savedStateHandle) {
28
31
companion object {
29
32
private const val TAGLINE_MAX_LENGTH = 32
@@ -44,43 +47,45 @@ class BlazeCampaignCreationEditAdViewModel @Inject constructor(
44
47
45
48
private fun loadSuggestions () {
46
49
viewModelScope.launch {
47
- blazeRepository.fetchAdSuggestions(navArgs.productId).getOrNull()?.let { list ->
48
- val index = list.indexOfFirst { it.tagLine == navArgs.tagline && it.description == navArgs.description }
49
- val suggestions = list.map { AiSuggestionForAd (it.tagLine, it.description) }
50
- if (index != - 1 ) {
51
- _viewState .update {
52
- _viewState .value.copy(
53
- suggestions = suggestions,
54
- suggestionIndex = index
55
- )
56
- }
57
- } else {
58
- _viewState .update {
59
- _viewState .value.copy(
60
- suggestions = listOf (AiSuggestionForAd (navArgs.tagline, navArgs.description)) + suggestions,
61
- suggestionIndex = 0
62
- )
63
- }
50
+ val suggestions: List <AiSuggestionForAd > = navArgs.aiSuggestionsForAd.toList()
51
+ val index =
52
+ suggestions.indexOfFirst { it.tagLine == navArgs.tagline && it.description == navArgs.description }
53
+ if (index != - 1 ) {
54
+ _viewState .update {
55
+ _viewState .value.copy(
56
+ suggestions = suggestions,
57
+ suggestionIndex = index
58
+ )
59
+ }
60
+ } else {
61
+ _viewState .update {
62
+ _viewState .value.copy(
63
+ suggestions = listOf (AiSuggestionForAd (navArgs.tagline, navArgs.description)) + suggestions,
64
+ suggestionIndex = 0
65
+ )
64
66
}
65
67
}
66
68
}
67
69
}
68
70
69
71
fun onNextSuggestionTapped () {
72
+ analyticsTrackerWrapper.track(stat = BLAZE_CREATION_EDIT_AD_AI_SUGGESTION_TAPPED )
70
73
_viewState .update {
71
74
val index = _viewState .value.suggestionIndex
72
75
_viewState .value.copy(suggestionIndex = index + 1 )
73
76
}
74
77
}
75
78
76
79
fun onPreviousSuggestionTapped () {
80
+ analyticsTrackerWrapper.track(stat = BLAZE_CREATION_EDIT_AD_AI_SUGGESTION_TAPPED )
77
81
_viewState .update {
78
82
val index = _viewState .value.suggestionIndex
79
83
_viewState .value.copy(suggestionIndex = index - 1 )
80
84
}
81
85
}
82
86
83
87
fun onSaveTapped () {
88
+ analyticsTrackerWrapper.track(stat = BLAZE_CREATION_EDIT_AD_SAVE_TAPPED )
84
89
triggerEvent(
85
90
ExitWithResult (
86
91
EditAdResult (
0 commit comments