diff --git a/app/build.gradle b/app/build.gradle index 338b32a0..ee7badd2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,7 +1,7 @@ import io.sentry.android.gradle.instrumentation.logcat.LogcatLevel plugins { - id "io.sentry.android.gradle" version "6.17.0" + id "io.sentry.android.gradle" version "6.23.0" id 'com.android.application' id 'kotlin-android' id 'com.ydq.android.gradle.native-aar.import' @@ -83,7 +83,7 @@ android { dependencies { // This should be included by default in the Android SDK, but it seems to be a problem with v8+ of the SDK, so we have to manually add it - implementation 'io.sentry:sentry-native-ndk:0.16.0' + implementation 'io.sentry:sentry-native-ndk:0.16.6' implementation 'androidx.appcompat:appcompat:1.3.0' implementation group: 'androidx.constraintlayout', name: 'constraintlayout', version: '1.1.3' implementation 'com.google.android.material:material:1.0.0' @@ -142,7 +142,7 @@ tasks.withType(Test) { sentry { autoInstallation { - sentryVersion.set("8.51.0") + sentryVersion.set("8.58.0") } autoUpload = true uploadNativeSymbols = true diff --git a/app/src/main/java/com/example/vu/android/MyApplication.java b/app/src/main/java/com/example/vu/android/MyApplication.java index c2fd5868..243b1a18 100644 --- a/app/src/main/java/com/example/vu/android/MyApplication.java +++ b/app/src/main/java/com/example/vu/android/MyApplication.java @@ -85,6 +85,10 @@ public void onCreate() { options.getSessionReplay().setSessionSampleRate(1.0); options.getLogs().setEnabled(true); + options.getDataCollection().setUserInfo(true); + options.getDataCollection().setDatabaseQueryData(true); + options.getDataCollection().setFilePaths(true); + options.setBeforeSend((event, hint) -> { //Remove PII diff --git a/app/src/main/java/com/example/vu/android/empowerplant/MainFragment.java b/app/src/main/java/com/example/vu/android/empowerplant/MainFragment.java index e871b433..a84877c7 100644 --- a/app/src/main/java/com/example/vu/android/empowerplant/MainFragment.java +++ b/app/src/main/java/com/example/vu/android/empowerplant/MainFragment.java @@ -321,6 +321,9 @@ public void checkout() { Sentry.setAttribute("checkout.cart_size", selectedStoreItems.size()); Sentry.setAttribute("checkout.step", "initiate"); + Sentry.feedback().disableOnShake(); + Sentry.replay().flush(); + ITransaction checkoutTransaction = Sentry.startTransaction("checkout [android]", "http.client"); checkoutTransaction.setOperation("http"); Sentry.configureScope(scope -> scope.setTransaction(checkoutTransaction)); @@ -365,6 +368,7 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO progressDialog.dismiss(); boolean success = response.isSuccessful(); response.close(); + Sentry.feedback().enableOnShake(); if (!success) { Log.w("checkout", "response failed"); runOnUiThread(new Runnable() { @@ -383,6 +387,7 @@ public void run() { @Override public void onFailure(@NotNull Call call, @NotNull IOException e) { progressDialog.dismiss(); + Sentry.feedback().enableOnShake(); Sentry.captureException(e); processDeliveryItem(checkoutTransaction); @@ -496,4 +501,4 @@ private void runOnUiThread(Runnable action) { action.run(); } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/vu/android/empowerplant/StoreItemDetailActivity.kt b/app/src/main/java/com/example/vu/android/empowerplant/StoreItemDetailActivity.kt index a4791548..bb2c770c 100644 --- a/app/src/main/java/com/example/vu/android/empowerplant/StoreItemDetailActivity.kt +++ b/app/src/main/java/com/example/vu/android/empowerplant/StoreItemDetailActivity.kt @@ -21,6 +21,7 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier @@ -31,6 +32,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil.compose.rememberAsyncImagePainter import io.sentry.Sentry +import io.sentry.compose.LocalSentrySpan import io.sentry.compose.SentryModifier.sentryTag import io.sentry.compose.SentryTraced @@ -48,12 +50,23 @@ class StoreItemDetailActivity : ComponentActivity() { Sentry.setAttribute("item.sku", storeItem.sku) Sentry.metrics().count("product.viewed") + val activitySpan = Sentry.getSpan() + setContent { MaterialTheme { - StoreItemDetailScreen( - storeItem = storeItem, - onBack = { finish() } - ) + if (activitySpan != null) { + CompositionLocalProvider(LocalSentrySpan provides activitySpan) { + StoreItemDetailScreen( + storeItem = storeItem, + onBack = { finish() } + ) + } + } else { + StoreItemDetailScreen( + storeItem = storeItem, + onBack = { finish() } + ) + } } } }