Skip to content

Commit 0e46489

Browse files
authored
[Deps] Update automattic-tracks to 6.0.4 (#1731)
2 parents a6f9736 + 73129c3 commit 0e46489

24 files changed

+252
-129
lines changed

Simplenote/build.gradle

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ android {
7373

7474
buildscript {
7575
dependencies {
76-
classpath 'io.sentry:sentry-android-gradle-plugin:3.5.0'
76+
classpath "io.sentry:sentry-android-gradle-plugin:$sentryVersion"
7777
}
7878

7979
repositories {
@@ -109,13 +109,11 @@ dependencies {
109109
testImplementation 'org.json:json:20210307'
110110

111111
// Fastlane screengrab for screenshots automation
112-
androidTestImplementation 'tools.fastlane:screengrab:2.0.0'
112+
androidTestImplementation "tools.fastlane:screengrab:$screengrabVersion"
113113
// Automattic and WordPress dependencies
114114
implementation 'com.automattic:simperium:v1.3.1'
115-
implementation('com.github.Automattic:Automattic-Tracks-Android:2.1.0') {
116-
// Tracks lib is referring to an unavailable build of okhttp
117-
exclude group: 'com.squareup.okhttp3'
118-
}
115+
implementation "com.automattic:Automattic-Tracks-Android:$automatticTracksVersion"
116+
implementation "com.automattic.tracks:crashlogging:$automatticTracksVersion"
119117

120118
// Kotlin's coroutines
121119
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
@@ -133,10 +131,10 @@ dependencies {
133131
// Support for ViewModels and LiveData
134132
implementation "androidx.activity:activity-ktx:1.3.1"
135133
implementation "androidx.fragment:fragment-ktx:1.3.6"
136-
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
137-
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
134+
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$androidxLifecycleVersion"
135+
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$androidxLifecycleVersion"
138136
// Support for androidx Fragments
139-
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1"
137+
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$androidxLifecycleVersion"
140138

141139
// Google Play Services
142140
implementation 'com.google.android.gms:play-services-wearable:17.0.0'
@@ -146,9 +144,9 @@ dependencies {
146144
implementation 'net.openid:appauth:0.7.0'
147145

148146
// Dagger Hilt dependencies
149-
implementation 'com.google.dagger:hilt-android:2.38.1'
150-
annotationProcessor 'com.google.dagger:hilt-compiler:2.38.1'
151-
kapt 'com.google.dagger:hilt-compiler:2.38.1'
147+
implementation "com.google.dagger:hilt-android:$google_dagger"
148+
annotationProcessor "com.google.dagger:hilt-compiler:$google_dagger"
149+
kapt "com.google.dagger:hilt-compiler:$google_dagger"
152150

153151
wearApp project(':Wear')
154152
implementation project(':PasscodeLock')
@@ -159,6 +157,7 @@ repositories {
159157
url "https://a8c-libs.s3.amazonaws.com/android"
160158
content {
161159
includeGroup "com.automattic"
160+
includeGroup "com.automattic.tracks"
162161
}
163162
}
164163
maven { url "https://maven.google.com" }

Simplenote/src/main/java/com/automattic/simplenote/AddTagActivity.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ class AddTagActivity : AppCompatActivity() {
9898
DisplayUtils.hideKeyboard(tagInput)
9999
showDialogError()
100100
}
101+
else -> {} // Do nothing
101102
}
102103
})
103104
}

Simplenote/src/main/java/com/automattic/simplenote/Simplenote.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public class Simplenote extends Application implements HeartbeatListener {
9999

100100
public void onCreate() {
101101
super.onCreate();
102+
crashLogging.initialize();
102103

103104
SimplenoteAppLock appLock = new SimplenoteAppLock(this);
104105
AppLockManager.getInstance().setCurrentAppLock(appLock);

Simplenote/src/main/java/com/automattic/simplenote/authentication/magiclink/MagicLinkConfirmationFragment.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class MagicLinkConfirmationFragment : Fragment() {
7070
parentFragmentManager.popBackStack()
7171
}
7272
}
73+
else -> {} // Do nothing
7374
}
7475
}
7576
return view

Simplenote/src/main/java/com/automattic/simplenote/authentication/magiclink/OkHttpMagicLinkRepository.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class OkHttpMagicLinkRepository @Inject constructor(private val simpleHttp: Simp
2020
"account/complete-login",
2121
mapOf(Pair("username", username), Pair("auth_code", authCode))
2222
).use { response ->
23-
val body = response.body()?.string()
23+
val body = response.body?.string()
2424
if (response.isSuccessful) {
2525
val json = JSONObject(body ?: "")
2626
val syncToken = json.getString("sync_token")
@@ -33,7 +33,7 @@ class OkHttpMagicLinkRepository @Inject constructor(private val simpleHttp: Simp
3333
MagicLinkAuthError.REQUEST_NOT_FOUND -> R.string.magic_link_complete_login_expired_code_error_message
3434
MagicLinkAuthError.UNKNOWN_ERROR -> R.string.magic_link_general_error
3535
}
36-
return MagicLinkResponseResult.MagicLinkError(response.code(), authError, errorStringRes)
36+
return MagicLinkResponseResult.MagicLinkError(response.code, authError, errorStringRes)
3737
}
3838
}
3939

@@ -63,9 +63,9 @@ class OkHttpMagicLinkRepository @Inject constructor(private val simpleHttp: Simp
6363
mapOf(Pair("username", username), Pair("request_source", "android"))
6464
).use { response ->
6565
if (response.isSuccessful) {
66-
return MagicLinkResponseResult.MagicLinkRequestSuccess(response.code())
66+
return MagicLinkResponseResult.MagicLinkRequestSuccess(response.code)
6767
} else {
68-
return MagicLinkResponseResult.MagicLinkError(response.code())
68+
return MagicLinkResponseResult.MagicLinkError(response.code)
6969
}
7070
}
7171
}

Simplenote/src/main/java/com/automattic/simplenote/networking/SimpleHttp.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.automattic.simplenote.networking
22

33
import okhttp3.HttpUrl
4-
import okhttp3.MediaType
4+
import okhttp3.MediaType.Companion.toMediaTypeOrNull
55
import okhttp3.OkHttpClient
66
import okhttp3.Request
77
import okhttp3.RequestBody
@@ -13,7 +13,7 @@ import javax.inject.Inject
1313
private const val HTTP_SCHEME = "https"
1414
private const val BASE_URL = "app.simplenote.com"
1515
open class SimpleHttp @Inject constructor(val client: OkHttpClient) {
16-
private val jsonMediaType = MediaType.parse("application/json; charset=utf-8")
16+
private val jsonMediaType = "application/json; charset=utf-8".toMediaTypeOrNull()
1717

1818
private fun buildUrl(path: String): HttpUrl = HttpUrl.Builder()
1919
.scheme(HTTP_SCHEME)

Simplenote/src/main/java/com/automattic/simplenote/repositories/SimperiumCollaboratorsRepository.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,17 @@ class SimperiumCollaboratorsRepository @Inject constructor(
6969
override suspend fun collaboratorsChanged(noteId: String): Flow<Boolean> = callbackFlow {
7070
val callbackOnSaveObject = Bucket.OnSaveObjectListener<Note> { _, note ->
7171
if (note.simperiumKey == noteId) {
72-
offer(true)
72+
trySend(true).isSuccess
7373
}
7474
}
7575
val callbackOnDeleteObject = Bucket.OnDeleteObjectListener<Note> { _, note ->
7676
if (note.simperiumKey == noteId) {
77-
offer(true)
77+
trySend(true).isSuccess
7878
}
7979
}
8080
val callbackOnNetworkChange = Bucket.OnNetworkChangeListener<Note> { _, _, updatedNoteId ->
8181
if (updatedNoteId != null && noteId == updatedNoteId) {
82-
offer(true)
82+
trySend(true).isSuccess
8383
}
8484
}
8585

Simplenote/src/main/java/com/automattic/simplenote/repositories/SimperiumTagsRepository.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import com.simperium.client.Bucket
1212
import com.simperium.client.BucketObjectNameInvalid
1313
import com.simperium.client.Query
1414
import kotlinx.coroutines.CoroutineDispatcher
15-
import kotlinx.coroutines.Dispatchers
1615
import kotlinx.coroutines.ExperimentalCoroutinesApi
1716
import kotlinx.coroutines.channels.awaitClose
1817
import kotlinx.coroutines.flow.Flow
@@ -82,9 +81,9 @@ class SimperiumTagsRepository @Inject constructor(
8281
}
8382

8483
override suspend fun tagsChanged(): Flow<Boolean> = callbackFlow {
85-
val callbackOnSaveObject = Bucket.OnSaveObjectListener<Tag> { _, _ -> offer(true) }
86-
val callbackOnDeleteObject = Bucket.OnDeleteObjectListener<Tag> { _, _ -> offer(true) }
87-
val callbackOnNetworkChange = Bucket.OnNetworkChangeListener<Tag> { _, _, _ -> offer(true) }
84+
val callbackOnSaveObject = Bucket.OnSaveObjectListener<Tag> { _, _ -> trySend(true).isSuccess }
85+
val callbackOnDeleteObject = Bucket.OnDeleteObjectListener<Tag> { _, _ -> trySend(true).isSuccess }
86+
val callbackOnNetworkChange = Bucket.OnNetworkChangeListener<Tag> { _, _, _ -> trySend(true).isSuccess }
8887

8988
tagsBucket.addOnSaveObjectListener(callbackOnSaveObject)
9089
tagsBucket.addOnDeleteObjectListener(callbackOnDeleteObject)

Simplenote/src/main/java/com/automattic/simplenote/utils/crashlogging/CrashLoggingModule.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.automattic.simplenote.utils.crashlogging
22

3-
import android.content.Context
3+
import android.app.Application
44
import com.automattic.android.tracks.crashlogging.CrashLogging
55
import com.automattic.android.tracks.crashlogging.CrashLoggingDataProvider
66
import com.automattic.android.tracks.crashlogging.CrashLoggingProvider
@@ -10,8 +10,9 @@ import dagger.Binds
1010
import dagger.Module
1111
import dagger.Provides
1212
import dagger.hilt.InstallIn
13-
import dagger.hilt.android.qualifiers.ApplicationContext
1413
import dagger.hilt.components.SingletonComponent
14+
import kotlinx.coroutines.CoroutineScope
15+
import kotlinx.coroutines.Dispatchers
1516
import javax.inject.Singleton
1617

1718
@Module
@@ -20,8 +21,15 @@ abstract class CrashLoggingModule {
2021
companion object {
2122
@Provides
2223
@Singleton
23-
fun provideCrashLogging(@ApplicationContext context: Context, crashLoggingDataProvider: CrashLoggingDataProvider): CrashLogging {
24-
return CrashLoggingProvider.createInstance(context, crashLoggingDataProvider)
24+
fun provideCrashLogging(
25+
application: Application,
26+
crashLoggingDataProvider: CrashLoggingDataProvider
27+
): CrashLogging {
28+
return CrashLoggingProvider.createInstance(
29+
application,
30+
crashLoggingDataProvider,
31+
CoroutineScope(Dispatchers.Default)
32+
)
2533
}
2634
}
2735

Simplenote/src/main/java/com/automattic/simplenote/utils/crashlogging/SimplenoteCrashLoggingDataProvider.kt

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
package com.automattic.simplenote.utils.crashlogging
22

3+
import android.util.Log
34
import com.automattic.android.tracks.crashlogging.CrashLoggingDataProvider
45
import com.automattic.android.tracks.crashlogging.CrashLoggingUser
56
import com.automattic.android.tracks.crashlogging.EventLevel
67
import com.automattic.android.tracks.crashlogging.ExtraKnownKey
8+
import com.automattic.android.tracks.crashlogging.PerformanceMonitoringConfig
9+
import com.automattic.android.tracks.crashlogging.ReleaseName
710
import com.automattic.simplenote.BuildConfig
811
import com.automattic.simplenote.Simplenote
912
import com.automattic.simplenote.utils.locale.LocaleProvider
13+
import com.simperium.client.User
14+
import kotlinx.coroutines.flow.Flow
15+
import kotlinx.coroutines.flow.catch
16+
import kotlinx.coroutines.flow.emptyFlow
17+
import kotlinx.coroutines.flow.flow
1018
import java.util.Locale
1119
import javax.inject.Inject
1220

@@ -16,21 +24,25 @@ class SimplenoteCrashLoggingDataProvider @Inject constructor(
1624
) : CrashLoggingDataProvider {
1725

1826
override val buildType = BuildConfig.BUILD_TYPE
19-
override val enableCrashLoggingLogs = BuildConfig.DEBUG
27+
override val enableCrashLoggingLogs = false
2028
override val sentryDSN: String = BuildConfig.SENTRY_DSN
2129

2230
override val locale: Locale?
2331
get() = localeProvider.provideLocale()
2432

25-
override val releaseName = if (BuildConfig.DEBUG) {
26-
DEBUG_RELEASE_NAME
33+
override val releaseName: ReleaseName = if (BuildConfig.DEBUG) {
34+
ReleaseName.SetByApplication(DEBUG_RELEASE_NAME)
2735
} else {
28-
BuildConfig.VERSION_NAME
36+
ReleaseName.SetByTracksLibrary
2937
}
3038

31-
override fun applicationContextProvider(): Map<String, String> {
32-
return emptyMap()
33-
}
39+
override val user: Flow<CrashLoggingUser?>
40+
get() = provideUser()
41+
42+
override val applicationContextProvider: Flow<Map<String, String>> = emptyFlow()
43+
44+
override val performanceMonitoringConfig: PerformanceMonitoringConfig
45+
get() = PerformanceMonitoringConfig.Disabled
3446

3547
override fun crashLoggingEnabled(): Boolean {
3648
return Simplenote.analyticsIsEnabled()
@@ -51,15 +63,26 @@ class SimplenoteCrashLoggingDataProvider @Inject constructor(
5163
return false
5264
}
5365

54-
override fun userProvider(): CrashLoggingUser {
66+
private fun provideUser(): Flow<CrashLoggingUser?> =
67+
flow {
68+
emit(app.simperium?.user?.toCrashLoggingUser())
69+
}.catch { e ->
70+
Log.e(TAG, "Exception getting the user", e)
71+
emit(null)
72+
}
73+
74+
private fun User.toCrashLoggingUser(): CrashLoggingUser? {
75+
if (userId.isNullOrEmpty()) return null
76+
5577
return CrashLoggingUser(
56-
userID = app.simperium.user.userId.orEmpty(),
57-
email = app.simperium.user.email.orEmpty(),
78+
userID = userId,
79+
email = email.orEmpty(),
5880
username = ""
5981
)
6082
}
6183

6284
companion object {
63-
const val DEBUG_RELEASE_NAME = "debug"
85+
private const val DEBUG_RELEASE_NAME = "debug"
86+
private val TAG: String = SimplenoteCrashLoggingDataProvider::class.java.getSimpleName()
6487
}
6588
}

0 commit comments

Comments
 (0)