@@ -4,15 +4,22 @@ import android.util.Log
4
4
import androidx.core.net.toUri
5
5
import kotlinx.coroutines.CoroutineDispatcher
6
6
import kotlinx.coroutines.withContext
7
+ import org.wordpress.android.analytics.AnalyticsTracker
8
+ import org.wordpress.android.analytics.AnalyticsTracker.Stat
7
9
import org.wordpress.android.fluxc.persistence.SiteSqlUtils
8
10
import org.wordpress.android.modules.BG_THREAD
11
+ import org.wordpress.android.util.BuildConfigWrapper
9
12
import javax.inject.Inject
10
13
import javax.inject.Named
11
14
15
+ private const val URL_TAG = " url"
16
+ private const val SUCCESS_TAG = " success"
17
+
12
18
class ApplicationPasswordLoginHelper @Inject constructor(
13
19
@param:Named(BG_THREAD ) private val bgDispatcher : CoroutineDispatcher ,
14
20
private val siteSqlUtils : SiteSqlUtils ,
15
- private val uriLoginWrapper : UriLoginWrapper
21
+ private val uriLoginWrapper : UriLoginWrapper ,
22
+ private val buildConfigWrapper : BuildConfigWrapper ,
16
23
) {
17
24
private var processedAppPasswordData: String? = null
18
25
@@ -30,11 +37,13 @@ class ApplicationPasswordLoginHelper @Inject constructor(
30
37
} else {
31
38
val site = siteSqlUtils.getSites().firstOrNull { it.url == uriLogin.siteUrl }
32
39
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
+ }
35
44
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
38
47
true
39
48
} else {
40
49
Log .e(" WP_RS" , " Cannot save application password credentials for: ${uriLogin.siteUrl} " )
@@ -44,6 +53,21 @@ class ApplicationPasswordLoginHelper @Inject constructor(
44
53
}
45
54
}
46
55
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
+
47
71
fun getSiteUrlFromUrl (url : String ): String {
48
72
return uriLoginWrapper.parseUriLogin(url).siteUrl.orEmpty()
49
73
}
0 commit comments