@@ -9,8 +9,13 @@ final class GenerateAllVariationsUseCase {
99 ///
1010 private let stores : StoresManager
1111
12- init ( stores: StoresManager ) {
12+ /// Analytics tracker.
13+ ///
14+ private let analytics : Analytics
15+
16+ init ( stores: StoresManager , analytics: Analytics = ServiceLocator . analytics) {
1317 self . stores = stores
18+ self . analytics = analytics
1419 }
1520
1621 /// Generates all missing variations for a product. Up to 100 variations.
@@ -22,7 +27,7 @@ final class GenerateAllVariationsUseCase {
2227
2328 // Fetch Previous variations
2429 onStateChanged ( . fetching)
25- fetchAllVariations ( of: product) { result in
30+ fetchAllVariations ( of: product) { [ analytics ] result in
2631 switch result {
2732 case . success( let existingVariations) :
2833
@@ -31,6 +36,7 @@ final class GenerateAllVariationsUseCase {
3136
3237 // Guard for 100 variation limit
3338 guard variationsToGenerate. count <= 100 else {
39+ analytics. track ( event: . Variations. productVariationGenerationLimitReached ( count: Int64 ( variationsToGenerate. count) ) )
3440 return onStateChanged ( . error( . tooManyVariations( variationCount: variationsToGenerate. count) ) )
3541 }
3642
@@ -46,6 +52,8 @@ final class GenerateAllVariationsUseCase {
4652 return onStateChanged ( . canceled)
4753 }
4854
55+ analytics. track ( event: . Variations. productVariationGenerationConfirmed ( count: Int64 ( variationsToGenerate. count) ) )
56+
4957 // Create variations remotely
5058 onStateChanged ( . creating)
5159 self . createVariationsRemotely ( for: product, variations: variationsToGenerate) { result in
0 commit comments