diff --git a/cardinal-android/app/build.gradle.kts b/cardinal-android/app/build.gradle.kts index 971f5e57cb3222397f3ddb066175d07a0ec950c2..141cbb441fdc351754522ec3af6045607edf339f 100644 --- a/cardinal-android/app/build.gradle.kts +++ b/cardinal-android/app/build.gradle.kts @@ -56,6 +56,9 @@ val defaultValhallaEndpoint = if (stadiaKey != null) { "https://maps.earth/valhalla/route" } +val sentryDSN = System.getenv("SENTRY_DSN") ?: "placeholdertoto" +val fieldContent = "\"$sentryDSN\"" + android { namespace = "earth.maps.cardinal" compileSdk = 36 @@ -68,6 +71,8 @@ android { versionName = System.getenv("VERSION_NAME") ?: "debug" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + + buildConfigField("String", "SENTRY_DSN", fieldContent) } flavorDimensions += "architecture" @@ -212,6 +217,7 @@ dependencies { implementation(libs.ferrostar.composeui) implementation(libs.okhttp3) implementation(libs.androidaddressformatter) + implementation(libs.eos.telemetry) // TODO: Migrate version to TOML (doesn't work). Likely related issue: https://github.com/gradle/gradle/issues/21267 //noinspection UseTomlInstead diff --git a/cardinal-android/app/src/main/java/earth/maps/cardinal/CardinalMapsApplication.kt b/cardinal-android/app/src/main/java/earth/maps/cardinal/CardinalMapsApplication.kt index 31b5de3fb19866fa6f46ce0afcd860db78ee6087..79b131a7f8398f7c929e40a93ac7c42c152fe127 100644 --- a/cardinal-android/app/src/main/java/earth/maps/cardinal/CardinalMapsApplication.kt +++ b/cardinal-android/app/src/main/java/earth/maps/cardinal/CardinalMapsApplication.kt @@ -19,7 +19,26 @@ package earth.maps.cardinal import android.app.Application +import android.util.Log import dagger.hilt.android.HiltAndroidApp +import foundation.e.lib.telemetry.Telemetry.init @HiltAndroidApp -class CardinalMapsApplication : Application() +class CardinalMapsApplication : Application() { + + override fun onCreate() { + super.onCreate() + if (!BuildConfig.DEBUG) { + try { + init(BuildConfig.SENTRY_DSN, this, true) + } catch (e: Exception) { + Log.e(TAG, "Failed to initialize Sentry SDK", e) + } + } + } + + companion object { + private const val TAG = "CardinalMapsApplication" + } + +} diff --git a/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsViewModel.kt b/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsViewModel.kt index 9e223037abdc8f8830da45f8fba1218e101bd887..3fcc000eca3d43ae3bc110b5a40807754bce46d3 100644 --- a/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsViewModel.kt +++ b/cardinal-android/app/src/main/java/earth/maps/cardinal/ui/directions/DirectionsViewModel.kt @@ -47,6 +47,7 @@ import earth.maps.cardinal.transit.TransitousService import earth.maps.cardinal.ui.core.BaseSearchViewModel import earth.maps.cardinal.ui.core.NavigationUtils import earth.maps.cardinal.ui.core.Screen +import foundation.e.lib.telemetry.Telemetry import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine @@ -181,6 +182,7 @@ class DirectionsViewModel @Inject constructor( routeStateRepository.setRoutes(routes) } catch (invalidStatusCode: ParsingException.InvalidStatusCode) { routeStateRepository.setDirectionError(invalidStatusCode.toRouteError()) + Telemetry.reportException(e = invalidStatusCode) } catch (e: Exception) { Log.e(TAG, "Error while fetching route", e) routeStateRepository.setError( diff --git a/cardinal-android/gradle/libs.versions.toml b/cardinal-android/gradle/libs.versions.toml index 0693e64c759ffd98f4fbf244d91ac0df72607bd5..af49fb8b7775b00b81f0b2f63dc2be3011e037bd 100644 --- a/cardinal-android/gradle/libs.versions.toml +++ b/cardinal-android/gradle/libs.versions.toml @@ -34,6 +34,7 @@ mockk = "1.14.7" kotlinxCoroutinesTest = "1.10.2" hiltAndroidTesting = "2.57.2" openinghoursparser = "0.29.0" +eosTelemetry = "1.0.1-release" [libraries] androidaddressformatter = { module = "com.github.woheller69:AndroidAddressFormatter", version.ref = "androidaddressformatter" } @@ -86,6 +87,7 @@ mockk = { module = "io.mockk:mockk", version.ref = "mockk" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutinesTest" } hilt-android-testing = { group = "com.google.dagger", name = "hilt-android-testing", version.ref = "hiltAndroidTesting" } openinghoursparser = { module = "ch.poole:OpeningHoursParser", version.ref = "openinghoursparser" } +eos-telemetry = {group = "foundation.e.lib", name = "telemetry", version.ref = "eosTelemetry" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } diff --git a/cardinal-android/settings.gradle.kts b/cardinal-android/settings.gradle.kts index 1bcf85dd1bb7e1788b7865a4d4fde5a1b577d70a..7f1eb9de4713a6720d741940854e8eaaf47797db 100644 --- a/cardinal-android/settings.gradle.kts +++ b/cardinal-android/settings.gradle.kts @@ -37,6 +37,7 @@ dependencyResolutionManagement { maven("https://jitpack.io") { content { includeGroup("com.github.woheller69") } } + maven { url = uri("https://gitlab.e.foundation/api/v4/groups/9/-/packages/maven") } } }