@@ -19,19 +19,24 @@ package com.duckduckgo.sync.impl.pixels
19
19
import android.content.SharedPreferences
20
20
import androidx.core.content.edit
21
21
import com.duckduckgo.app.statistics.pixels.Pixel
22
+ import com.duckduckgo.common.utils.plugins.pixel.PixelParamRemovalPlugin
23
+ import com.duckduckgo.common.utils.plugins.pixel.PixelParamRemovalPlugin.PixelParameter
24
+ import com.duckduckgo.common.utils.plugins.pixel.PixelParamRemovalPlugin.PixelParameter.Companion.removeAtb
22
25
import com.duckduckgo.di.scopes.AppScope
23
26
import com.duckduckgo.sync.api.engine.SyncableType
24
27
import com.duckduckgo.sync.impl.API_CODE
25
28
import com.duckduckgo.sync.impl.Result.Error
26
29
import com.duckduckgo.sync.impl.pixels.SyncPixelName.SYNC_DAILY
27
30
import com.duckduckgo.sync.impl.pixels.SyncPixelName.SYNC_DAILY_SUCCESS_RATE_PIXEL
28
31
import com.duckduckgo.sync.impl.pixels.SyncPixelName.SYNC_OBJECT_LIMIT_EXCEEDED_DAILY
32
+ import com.duckduckgo.sync.impl.pixels.SyncPixelParameters.CONNECTED_DEVICES_WHEN_DELETING
29
33
import com.duckduckgo.sync.impl.pixels.SyncPixelParameters.SYNC_FEATURE_PROMOTION_SOURCE
30
34
import com.duckduckgo.sync.impl.pixels.SyncPixelParameters.SYNC_SETUP_SCREEN_TYPE
31
35
import com.duckduckgo.sync.impl.pixels.SyncPixels.ScreenType
32
36
import com.duckduckgo.sync.impl.stats.SyncStatsRepository
33
37
import com.duckduckgo.sync.store.SharedPrefsProvider
34
38
import com.squareup.anvil.annotations.ContributesBinding
39
+ import com.squareup.anvil.annotations.ContributesMultibinding
35
40
import dagger.SingleInstanceIn
36
41
import java.time.Instant
37
42
import java.time.format.DateTimeFormatter
@@ -108,6 +113,8 @@ interface SyncPixels {
108
113
fun fireSetupDeepLinkFlowStarted ()
109
114
fun fireSetupDeepLinkFlowSuccess ()
110
115
fun fireSetupDeepLinkFlowAbandoned ()
116
+ fun fireUserConfirmedToTurnOffSync ()
117
+ fun fireUserConfirmedToTurnOffSyncAndDelete (connectedDevices : Int )
111
118
}
112
119
113
120
@ContributesBinding(AppScope ::class )
@@ -322,6 +329,15 @@ class RealSyncPixels @Inject constructor(
322
329
pixel.fire(SyncPixelName .SYNC_SETUP_DEEP_LINK_FLOW_ABANDONED )
323
330
}
324
331
332
+ override fun fireUserConfirmedToTurnOffSync () {
333
+ pixel.fire(SyncPixelName .SYNC_USER_CONFIRMED_TO_TURN_OFF_SYNC )
334
+ }
335
+
336
+ override fun fireUserConfirmedToTurnOffSyncAndDelete (connectedDevices : Int ) {
337
+ val params = mapOf (CONNECTED_DEVICES_WHEN_DELETING to connectedDevices.toString())
338
+ pixel.fire(SyncPixelName .SYNC_USER_CONFIRMED_TO_TURN_OFF_SYNC_AND_DELETE , parameters = params)
339
+ }
340
+
325
341
override fun fireSyncBarcodeScreenShown (screenType : ScreenType ) {
326
342
val params = mapOf (SYNC_SETUP_SCREEN_TYPE to screenType.value)
327
343
pixel.fire(SyncPixelName .SYNC_SETUP_BARCODE_SCREEN_SHOWN , parameters = params)
@@ -434,6 +450,8 @@ enum class SyncPixelName(override val pixelName: String) : Pixel.PixelName {
434
450
SYNC_SETUP_MANUAL_CODE_ENTERED_FAILED (" sync_setup_manual_code_entered_failed" ),
435
451
SYNC_SETUP_ENDED_ABANDONED (" sync_setup_ended_abandoned" ),
436
452
SYNC_SETUP_ENDED_SUCCESS (" sync_setup_ended_successful" ),
453
+ SYNC_USER_CONFIRMED_TO_TURN_OFF_SYNC (" sync_disabled" ),
454
+ SYNC_USER_CONFIRMED_TO_TURN_OFF_SYNC_AND_DELETE (" sync_disabledanddeleted" ),
437
455
}
438
456
439
457
object SyncPixelParameters {
@@ -455,4 +473,18 @@ object SyncPixelParameters {
455
473
const val SYNC_FEATURE_PROMOTION_SOURCE = " source"
456
474
const val GET_OTHER_DEVICES_SCREEN_LAUNCH_SOURCE = " source"
457
475
const val SYNC_SETUP_SCREEN_TYPE = " source"
476
+ const val CONNECTED_DEVICES_WHEN_DELETING = " connected_devices"
477
+ }
478
+
479
+ @ContributesMultibinding(
480
+ scope = AppScope ::class ,
481
+ boundType = PixelParamRemovalPlugin ::class ,
482
+ )
483
+ object SyncPixelsRequiringDataCleaning : PixelParamRemovalPlugin {
484
+ override fun names (): List <Pair <String , Set <PixelParameter >>> {
485
+ return listOf (
486
+ SyncPixelName .SYNC_USER_CONFIRMED_TO_TURN_OFF_SYNC .pixelName to removeAtb(),
487
+ SyncPixelName .SYNC_USER_CONFIRMED_TO_TURN_OFF_SYNC_AND_DELETE .pixelName to removeAtb(),
488
+ )
489
+ }
458
490
}
0 commit comments