Skip to content

Commit 661a58d

Browse files
authored
Application password login add analytic events (#21886)
* Adding analytic event * Minor refactor * Fixing test * Adding event properties * Detekt * Fixing test
1 parent 13cb7b6 commit 661a58d

File tree

3 files changed

+37
-7
lines changed

3 files changed

+37
-7
lines changed

WordPress/src/main/java/org/wordpress/android/ui/accounts/login/ApplicationPasswordLoginHelper.kt

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,22 @@ import android.util.Log
44
import androidx.core.net.toUri
55
import kotlinx.coroutines.CoroutineDispatcher
66
import kotlinx.coroutines.withContext
7+
import org.wordpress.android.analytics.AnalyticsTracker
8+
import org.wordpress.android.analytics.AnalyticsTracker.Stat
79
import org.wordpress.android.fluxc.persistence.SiteSqlUtils
810
import org.wordpress.android.modules.BG_THREAD
11+
import org.wordpress.android.util.BuildConfigWrapper
912
import javax.inject.Inject
1013
import javax.inject.Named
1114

15+
private const val URL_TAG = "url"
16+
private const val SUCCESS_TAG = "success"
17+
1218
class ApplicationPasswordLoginHelper @Inject constructor(
1319
@param:Named(BG_THREAD) private val bgDispatcher: CoroutineDispatcher,
1420
private val siteSqlUtils: SiteSqlUtils,
15-
private val uriLoginWrapper: UriLoginWrapper
21+
private val uriLoginWrapper: UriLoginWrapper,
22+
private val buildConfigWrapper: BuildConfigWrapper,
1623
) {
1724
private var processedAppPasswordData: String? = null
1825

@@ -30,11 +37,13 @@ class ApplicationPasswordLoginHelper @Inject constructor(
3037
} else {
3138
val site = siteSqlUtils.getSites().firstOrNull { it.url == uriLogin.siteUrl }
3239
if (site != null) {
33-
site.apiRestUsername = uriLogin.user
34-
site.apiRestPassword = uriLogin.password
40+
site.apply {
41+
apiRestUsername = uriLogin.user
42+
apiRestPassword = uriLogin.password
43+
}
3544
siteSqlUtils.insertOrUpdateSite(site)
36-
Log.d("WP_RS", "Saved application password credentials for: ${uriLogin.siteUrl}")
37-
processedAppPasswordData = url
45+
uriLogin.siteUrl?.let { trackSuccessful(it) }
46+
processedAppPasswordData = url // Save locally to avoid duplicated calls
3847
true
3948
} else {
4049
Log.e("WP_RS", "Cannot save application password credentials for: ${uriLogin.siteUrl}")
@@ -44,6 +53,21 @@ class ApplicationPasswordLoginHelper @Inject constructor(
4453
}
4554
}
4655

56+
private fun trackSuccessful(siteUrl: String) {
57+
val properties: MutableMap<String, String?> = HashMap()
58+
properties[URL_TAG] = siteUrl
59+
properties[SUCCESS_TAG] = "true"
60+
AnalyticsTracker.track(
61+
if (buildConfigWrapper.isJetpackApp) {
62+
Stat.JP_ANDROID_APPLICATION_PASSWORD_LOGIN
63+
} else {
64+
Stat.WP_ANDROID_APPLICATION_PASSWORD_LOGIN
65+
},
66+
properties
67+
)
68+
Log.d("WP_RS", "Saved application password credentials for: $siteUrl")
69+
}
70+
4771
fun getSiteUrlFromUrl(url: String): String {
4872
return uriLoginWrapper.parseUriLogin(url).siteUrl.orEmpty()
4973
}

WordPress/src/test/java/org/wordpress/android/ui/accounts/login/ApplicationPasswordLoginHelperTest.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import org.mockito.kotlin.whenever
1313
import org.wordpress.android.BaseUnitTest
1414
import org.wordpress.android.fluxc.model.SiteModel
1515
import org.wordpress.android.fluxc.persistence.SiteSqlUtils
16+
import org.wordpress.android.util.BuildConfigWrapper
1617
import kotlin.test.assertEquals
1718
import kotlin.test.assertFalse
1819
import kotlin.test.assertTrue
@@ -29,12 +30,15 @@ class ApplicationPasswordLoginHelperTest : BaseUnitTest() {
2930
@Mock
3031
lateinit var uriLoginWrapper: ApplicationPasswordLoginHelper.UriLoginWrapper
3132

33+
@Mock
34+
lateinit var buildConfigWrapper: BuildConfigWrapper
35+
3236
private lateinit var helper: ApplicationPasswordLoginHelper
3337

3438
@Before
3539
fun setUp() {
3640
MockitoAnnotations.openMocks(this)
37-
helper = ApplicationPasswordLoginHelper(testDispatcher(), siteSqlUtils, uriLoginWrapper)
41+
helper = ApplicationPasswordLoginHelper(testDispatcher(), siteSqlUtils, uriLoginWrapper, buildConfigWrapper)
3842
whenever(uriLoginWrapper.parseUriLogin(any()))
3943
.thenReturn(
4044
ApplicationPasswordLoginHelper.UriLogin(TEST_URL, TEST_USER, TEST_PASSWORD)

libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1156,7 +1156,9 @@ public enum Stat {
11561156
VOICE_TO_CONTENT_BUTTON_CLOSE_TAPPED,
11571157
VOICE_TO_CONTENT_BUTTON_RECORDING_LIMIT_REACHED,
11581158
BACKGROUND_REST_AUTODISCOVERY_SUCCESSFUL,
1159-
BACKGROUND_REST_AUTODISCOVERY_FAILED;
1159+
BACKGROUND_REST_AUTODISCOVERY_FAILED,
1160+
WP_ANDROID_APPLICATION_PASSWORD_LOGIN,
1161+
JP_ANDROID_APPLICATION_PASSWORD_LOGIN;
11601162
/*
11611163
* Please set the event name in the enum only if the new Stat's name in lower case does not match it.
11621164
* In that case you also need to add the event in the `AnalyticsTrackerNosaraTest.specialNames` map.

0 commit comments

Comments
 (0)