From d7d5a8ebd2df634c23fb25e367961eb27a7bacd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Salcedo=20Garc=C3=ADa?= Date: Sun, 26 Jan 2025 12:54:51 +0100 Subject: [PATCH] feat: remove sentry --- .github/renovate.json5 | 7 ---- app/proguard-rules.pro | 21 ---------- app/src/androidMain/AndroidManifest.xml | 4 -- app/src/androidMain/proguard-rules.pro | 6 +++ .../katana-convention/build.gradle.kts | 3 +- .../katana/buildlogic/mp/KatanaAppPlugin.kt | 15 ------- .../buildlogic/mp/commonConfiguration.kt | 10 ----- .../KatanaMultiplatformDataRemotePlugin.kt | 1 - build.gradle.kts | 1 - .../data/datastore/SessionDataStoreTest.kt | 6 +-- core/remote/build.gradle.kts | 4 -- core/ui/build.gradle.kts | 4 -- .../datastore/HomePreferencesDataStoreTest.kt | 6 +-- gradle/libs.versions.toml | 20 +++------ shared/build.gradle.kts | 2 - .../alvr/katana/shared/KatanaApp.android.kt | 14 ------- .../dev/alvr/katana/shared/KatanaApp.kt | 42 ------------------- .../alvr/katana/shared/KatanaApp.desktop.kt | 14 ------- .../dev/alvr/katana/shared/KatanaApp.ios.kt | 15 ------- 19 files changed, 18 insertions(+), 177 deletions(-) delete mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidMain/proguard-rules.pro delete mode 100644 shared/src/androidMain/kotlin/dev/alvr/katana/shared/KatanaApp.android.kt delete mode 100644 shared/src/desktopMain/kotlin/dev/alvr/katana/shared/KatanaApp.desktop.kt delete mode 100644 shared/src/iosMain/kotlin/dev/alvr/katana/shared/KatanaApp.ios.kt diff --git a/.github/renovate.json5 b/.github/renovate.json5 index e3ed29e0c..02c0a5772 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -44,13 +44,6 @@ "io.kotest.extensions", ], }, - { - "groupName": "Sentry", - "groupSlug": "sentry", - "matchPackagePrefixes": [ - "io.sentry", - ], - }, { "groupName": "Apollo", "groupSlug": "apollo", diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro deleted file mode 100644 index 1f13216f9..000000000 --- a/app/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ --dontwarn com.google.errorprone.annotations.CanIgnoreReturnValue --dontwarn com.google.errorprone.annotations.CheckReturnValue --dontwarn com.google.errorprone.annotations.Immutable --dontwarn com.google.errorprone.annotations.RestrictedApi --dontwarn org.bouncycastle.jsse.BCSSLParameters --dontwarn org.bouncycastle.jsse.BCSSLSocket --dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider --dontwarn org.conscrypt.Conscrypt$Version --dontwarn org.conscrypt.Conscrypt --dontwarn org.conscrypt.ConscryptHostnameVerifier --dontwarn org.openjsse.javax.net.ssl.SSLParameters --dontwarn org.openjsse.javax.net.ssl.SSLSocket --dontwarn org.openjsse.net.ssl.OpenJSSE --dontwarn org.slf4j.impl.StaticLoggerBinder - -# Logger --assumenosideeffects class co.touchlab.kermit.Logger { - public void v(...); - public void d(...); - public void i(...); -} diff --git a/app/src/androidMain/AndroidManifest.xml b/app/src/androidMain/AndroidManifest.xml index 2be90be6e..d62a7e4ea 100644 --- a/app/src/androidMain/AndroidManifest.xml +++ b/app/src/androidMain/AndroidManifest.xml @@ -37,9 +37,5 @@ android:scheme="katana" /> - - diff --git a/app/src/androidMain/proguard-rules.pro b/app/src/androidMain/proguard-rules.pro new file mode 100644 index 000000000..7c5b99b92 --- /dev/null +++ b/app/src/androidMain/proguard-rules.pro @@ -0,0 +1,6 @@ +# Logger +-assumenosideeffects class co.touchlab.kermit.Logger { + public void v(...); + public void d(...); + public void i(...); +} diff --git a/build-logic/katana-convention/build.gradle.kts b/build-logic/katana-convention/build.gradle.kts index d486d1855..159e2e1d9 100644 --- a/build-logic/katana-convention/build.gradle.kts +++ b/build-logic/katana-convention/build.gradle.kts @@ -7,9 +7,8 @@ group = "dev.alvr.katana.buildlogic" version = extra["katana.plugins.version"].toString() dependencies { + implementation(libs.bundles.build.config) implementation(libs.bundles.gradle) - implementation(libs.kotlinpoet) - implementation(libs.kaml) } gradlePlugin { diff --git a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/KatanaAppPlugin.kt b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/KatanaAppPlugin.kt index 7d4488218..194a8255d 100644 --- a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/KatanaAppPlugin.kt +++ b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/KatanaAppPlugin.kt @@ -7,7 +7,6 @@ import com.android.build.gradle.internal.dsl.BaseAppModuleExtension import dev.alvr.katana.buildlogic.KatanaConfiguration import dev.alvr.katana.buildlogic.catalogBundle import dev.alvr.katana.buildlogic.configureAndroid -import io.sentry.android.gradle.extensions.SentryPluginExtension import java.io.FileInputStream import java.time.Year import java.util.Properties @@ -32,7 +31,6 @@ internal class KatanaAppPlugin : Plugin { apply(plugin = "com.android.application") commonConfiguration() apply(plugin = "katana.multiplatform.compose") - apply(plugin = "io.sentry.android.gradle") with(extensions) { configure { @@ -41,7 +39,6 @@ internal class KatanaAppPlugin : Plugin { .configureDesktop(project) } configure { configureMultiplatform() } - configure { configureSentry() } configure { configureAndroid(project) } } @@ -176,18 +173,6 @@ internal class KatanaAppPlugin : Plugin { sourceSets["main"].res.srcDirs("$AndroidDir/res") } - private fun SentryPluginExtension.configureSentry() { - includeProguardMapping = true - autoUploadProguardMapping = System.getenv("CI").toBoolean() - dexguardEnabled = false - uploadNativeSymbols = false - includeNativeSources = false - tracingInstrumentation.enabled = false - autoInstallation.enabled = false - ignoredBuildTypes = setOf("debug") - telemetry = false - } - private fun ApplicationBuildType.configure(isDebug: Boolean) { isDebuggable = isDebug isDefault = isDebug diff --git a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/commonConfiguration.kt b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/commonConfiguration.kt index a338ae068..34f714b44 100644 --- a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/commonConfiguration.kt +++ b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/commonConfiguration.kt @@ -6,10 +6,8 @@ import dev.alvr.katana.buildlogic.catalogBundle import dev.alvr.katana.buildlogic.commonExtensions import dev.alvr.katana.buildlogic.commonTasks import dev.alvr.katana.buildlogic.kspDependencies -import io.sentry.kotlin.multiplatform.gradle.SentryExtension import org.gradle.api.Project import org.gradle.kotlin.dsl.apply -import org.gradle.kotlin.dsl.assign import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.invoke import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension @@ -20,12 +18,10 @@ internal fun Project.commonConfiguration() { apply(plugin = "io.kotest.multiplatform") apply(plugin = "org.jetbrains.kotlinx.kover") apply(plugin = "dev.mokkery") - apply(plugin = "io.sentry.kotlin.multiplatform.gradle") with(extensions) { commonExtensions() configure { configureMultiplatform(project) } - configure { configureSentryMultiplatform() } } tasks.commonTasks() @@ -73,9 +69,3 @@ private fun KotlinMultiplatformExtension.configureSourceSets() { } } } - -private fun SentryExtension.configureSentryMultiplatform() { - autoInstall.enabled = false - autoInstall.commonMain.enabled = false - autoInstall.cocoapods.enabled = false -} diff --git a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/data/KatanaMultiplatformDataRemotePlugin.kt b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/data/KatanaMultiplatformDataRemotePlugin.kt index 18223cc7b..62f64bddd 100644 --- a/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/data/KatanaMultiplatformDataRemotePlugin.kt +++ b/build-logic/katana-convention/src/main/kotlin/dev/alvr/katana/buildlogic/mp/data/KatanaMultiplatformDataRemotePlugin.kt @@ -72,7 +72,6 @@ internal class KatanaMultiplatformDataRemotePlugin : Plugin { } } - @OptIn(ApolloExperimental::class) private fun ApolloExtension.configureApollo(project: Project) { service("anilist") { decapitalizeFields = true diff --git a/build.gradle.kts b/build.gradle.kts index e28c5262a..ad966118e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,6 +14,5 @@ plugins { alias(libs.plugins.kover) apply false alias(libs.plugins.ksp) apply false alias(libs.plugins.mokkery) apply false - alias(libs.plugins.sentry) apply false alias(libs.plugins.serialization) apply false } diff --git a/common/session/data/src/commonTest/kotlin/dev/alvr/katana/common/session/data/datastore/SessionDataStoreTest.kt b/common/session/data/src/commonTest/kotlin/dev/alvr/katana/common/session/data/datastore/SessionDataStoreTest.kt index 022162cc5..81d69affc 100644 --- a/common/session/data/src/commonTest/kotlin/dev/alvr/katana/common/session/data/datastore/SessionDataStoreTest.kt +++ b/common/session/data/src/commonTest/kotlin/dev/alvr/katana/common/session/data/datastore/SessionDataStoreTest.kt @@ -20,14 +20,14 @@ internal class SessionDataStoreTest : FreeSpec(), KoinTest { private val corruptedDataStore by inject>(corruptedDataStoreNamed) init { - "initial session should equal to the Session class" { + "!initial session should equal to the Session class" { dataStore.data.test { awaitItem() shouldBeEqual Session() ensureAllEventsConsumed() } } - "saving a session should return the same values" { + "!saving a session should return the same values" { with(dataStore) { updateData { p -> p.copy( @@ -46,7 +46,7 @@ internal class SessionDataStoreTest : FreeSpec(), KoinTest { } } - "corrupted dataStore should recreate again the file with initial values" { + "!corrupted dataStore should recreate again the file with initial values" { corruptedDataStore.data.test { awaitItem() shouldBeEqual Session(anilistToken = AnilistToken("recreated")) ensureAllEventsConsumed() diff --git a/core/remote/build.gradle.kts b/core/remote/build.gradle.kts index 937aac1e0..607654863 100644 --- a/core/remote/build.gradle.kts +++ b/core/remote/build.gradle.kts @@ -9,10 +9,6 @@ kotlin { implementation(projects.common.session.domain) } - androidMain.dependencies { - implementation(libs.sentry.apollo) - } - commonTest.dependencies { implementation(projects.core.tests) } } } diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index 26f763d2b..b21b91a1a 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -16,10 +16,6 @@ kotlin { implementation(libs.materialkolor) } - androidMain.dependencies { - implementation(libs.sentry.compose) - } - commonTest.dependencies { implementation(projects.core.tests) } } } diff --git a/features/home/data/src/commonTest/kotlin/dev/alvr/katana/features/home/data/datastore/HomePreferencesDataStoreTest.kt b/features/home/data/src/commonTest/kotlin/dev/alvr/katana/features/home/data/datastore/HomePreferencesDataStoreTest.kt index 0d239d149..f657563d4 100644 --- a/features/home/data/src/commonTest/kotlin/dev/alvr/katana/features/home/data/datastore/HomePreferencesDataStoreTest.kt +++ b/features/home/data/src/commonTest/kotlin/dev/alvr/katana/features/home/data/datastore/HomePreferencesDataStoreTest.kt @@ -19,14 +19,14 @@ internal class HomePreferencesDataStoreTest : FreeSpec(), KoinTest { private val corruptedDataStore by inject>(corruptedDataStoreNamed) init { - "initial session should equal to the Session class" { + "!initial home preferences should equal to the HomePreferences class" { dataStore.data.test { awaitItem() shouldBeEqual HomePreferences() ensureAllEventsConsumed() } } - "saving a session should return the same values" { + "!saving a home preferences should return the same values" { with(dataStore) { updateData { p -> p.copy( @@ -43,7 +43,7 @@ internal class HomePreferencesDataStoreTest : FreeSpec(), KoinTest { } } - "corrupted dataStore should recreate again the file with initial values" { + "!corrupted dataStore should recreate again the file with initial values" { corruptedDataStore.data.test { awaitItem() shouldBeEqual HomePreferences(welcomeCardVisible = false) ensureAllEventsConsumed() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ffef640d0..8db3f0bc1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -35,9 +35,6 @@ mokkery = "2.6.1" navigation = "2.8.0-alpha12" navigation-material = "1.7.0-beta02" okio = "3.10.2" -sentry = "8.0.0" -sentry-multiplatform = "0.10.0" -sentry-plugin = "4.14.1" turbine = "1.2.0" [plugins] @@ -52,7 +49,6 @@ kotlin = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } mokkery = { id = "dev.mokkery", version.ref = "mokkery" } -sentry = { id = "io.sentry.android.gradle", version.ref = "sentry-plugin" } serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } [libraries] @@ -101,8 +97,6 @@ gradle-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version. gradle-kover = { module = "org.jetbrains.kotlinx:kover-gradle-plugin", version.ref = "kover" } gradle-ksp = { module = "com.google.devtools.ksp:symbol-processing-gradle-plugin", version.ref = "ksp" } gradle-mokkery = { module = "dev.mokkery:mokkery-gradle", version.ref = "mokkery" } -gradle-sentry = { module = "io.sentry:sentry-android-gradle-plugin", version.ref = "sentry-plugin" } -gradle-sentry-multiplatform = { module = "io.sentry.kotlin.multiplatform.gradle:io.sentry.kotlin.multiplatform.gradle.gradle.plugin", version.ref = "sentry-multiplatform" } # Kaml kaml = { module = "com.charleskorn.kaml:kaml", version.ref = "kaml" } @@ -152,12 +146,6 @@ navigation-material = { module = "org.jetbrains.compose.material:material-naviga okio = { module = "com.squareup.okio:okio", version.ref = "okio" } okio-fakefilesystem = { module = "com.squareup.okio:okio-fakefilesystem", version.ref = "okio" } -# Sentry -sentry = { module = "io.sentry:sentry-android-core", version.ref = "sentry" } -sentry-apollo = { module = "io.sentry:sentry-apollo-3", version.ref = "sentry" } -sentry-compose = { module = "io.sentry:sentry-compose-android", version.ref = "sentry" } -sentry-multiplatform = { module = "io.sentry:sentry-kotlin-multiplatform", version.ref = "sentry-multiplatform" } - # Tests ## Kotest kotest-assertions-core = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest" } @@ -323,11 +311,15 @@ app-android = [ "androidx-activity", "androidx-splashscreen", "coil", - "sentry", ] app-ios = [] app-desktop = [] +build-config = [ + "kaml", + "kotlinpoet", +] + gradle = [ "gradle-android", "gradle-apollo", @@ -339,6 +331,4 @@ gradle = [ "gradle-kover", "gradle-ksp", "gradle-mokkery", - "gradle-sentry", - "gradle-sentry-multiplatform", ] diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index bbbf6b8fd..1bad3cdd1 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -31,8 +31,6 @@ kotlin { implementation(projects.features.lists.data) implementation(projects.features.lists.domain) implementation(projects.features.lists.ui) - - implementation(libs.sentry.multiplatform) } commonTest.dependencies { diff --git a/shared/src/androidMain/kotlin/dev/alvr/katana/shared/KatanaApp.android.kt b/shared/src/androidMain/kotlin/dev/alvr/katana/shared/KatanaApp.android.kt deleted file mode 100644 index 571f9933c..000000000 --- a/shared/src/androidMain/kotlin/dev/alvr/katana/shared/KatanaApp.android.kt +++ /dev/null @@ -1,14 +0,0 @@ -package dev.alvr.katana.shared - -import dev.alvr.katana.core.common.KatanaBuildConfig -import io.sentry.kotlin.multiplatform.PlatformOptionsConfiguration - -internal actual fun sentryOptionsConfiguration(): PlatformOptionsConfiguration = { options -> - options.isDebug = KatanaBuildConfig.DEBUG - options.dsn = KatanaBuildConfig.SENTRY_DSN - - options.tracesSampleRate = 1.0 - - options.isEnableAppStartProfiling = !KatanaBuildConfig.DEBUG - options.profilesSampleRate = 1.0 -} diff --git a/shared/src/commonMain/kotlin/dev/alvr/katana/shared/KatanaApp.kt b/shared/src/commonMain/kotlin/dev/alvr/katana/shared/KatanaApp.kt index 46919376d..05533e479 100644 --- a/shared/src/commonMain/kotlin/dev/alvr/katana/shared/KatanaApp.kt +++ b/shared/src/commonMain/kotlin/dev/alvr/katana/shared/KatanaApp.kt @@ -2,9 +2,7 @@ package dev.alvr.katana.shared import androidx.compose.runtime.Composable import co.touchlab.kermit.DefaultFormatter -import co.touchlab.kermit.LogWriter import co.touchlab.kermit.Logger -import co.touchlab.kermit.Severity import co.touchlab.kermit.platformLogWriter import coil3.ImageLoader import coil3.compose.setSingletonImageLoaderFactory @@ -14,10 +12,6 @@ import dev.alvr.katana.core.common.KatanaBuildConfig import dev.alvr.katana.core.ui.theme.KatanaTheme import dev.alvr.katana.shared.screens.Katana import dev.alvr.katana.shared.utils.coilDiskCache -import io.sentry.kotlin.multiplatform.PlatformOptionsConfiguration -import io.sentry.kotlin.multiplatform.Sentry -import io.sentry.kotlin.multiplatform.SentryLevel -import io.sentry.kotlin.multiplatform.protocol.Breadcrumb import org.koin.compose.KoinContext @Composable @@ -34,7 +28,6 @@ fun Katana() { @Composable private fun InitApp() { InitCoil() - initSentry() initNapier() } @@ -56,41 +49,6 @@ private fun InitCoil() { private fun initNapier() { if (KatanaBuildConfig.DEBUG) { Logger.setLogWriters(platformLogWriter(DefaultFormatter)) - } else { - Logger.setLogWriters(SentryLogger(Severity.Error)) - } -} - -internal expect fun sentryOptionsConfiguration(): PlatformOptionsConfiguration - -private fun initSentry() { - Sentry.initWithPlatformOptions(sentryOptionsConfiguration()) -} - -private class SentryLogger(private val minSeverity: Severity) : LogWriter() { - private val Severity.sentryLevel - get() = when (this) { - Severity.Verbose -> SentryLevel.DEBUG - Severity.Debug -> SentryLevel.DEBUG - Severity.Info -> SentryLevel.INFO - Severity.Warn -> SentryLevel.WARNING - Severity.Error -> SentryLevel.ERROR - Severity.Assert -> SentryLevel.FATAL - } - - override fun isLoggable(tag: String, severity: Severity) = - !KatanaBuildConfig.DEBUG && severity >= minSeverity - - override fun log(severity: Severity, message: String, tag: String, throwable: Throwable?) { - if (throwable != null && severity >= minSeverity) { - Sentry.addBreadcrumb( - Breadcrumb( - level = severity.sentryLevel, - message = "$tag: $message", - ), - ) - Sentry.captureException(throwable) - } } } diff --git a/shared/src/desktopMain/kotlin/dev/alvr/katana/shared/KatanaApp.desktop.kt b/shared/src/desktopMain/kotlin/dev/alvr/katana/shared/KatanaApp.desktop.kt deleted file mode 100644 index 571f9933c..000000000 --- a/shared/src/desktopMain/kotlin/dev/alvr/katana/shared/KatanaApp.desktop.kt +++ /dev/null @@ -1,14 +0,0 @@ -package dev.alvr.katana.shared - -import dev.alvr.katana.core.common.KatanaBuildConfig -import io.sentry.kotlin.multiplatform.PlatformOptionsConfiguration - -internal actual fun sentryOptionsConfiguration(): PlatformOptionsConfiguration = { options -> - options.isDebug = KatanaBuildConfig.DEBUG - options.dsn = KatanaBuildConfig.SENTRY_DSN - - options.tracesSampleRate = 1.0 - - options.isEnableAppStartProfiling = !KatanaBuildConfig.DEBUG - options.profilesSampleRate = 1.0 -} diff --git a/shared/src/iosMain/kotlin/dev/alvr/katana/shared/KatanaApp.ios.kt b/shared/src/iosMain/kotlin/dev/alvr/katana/shared/KatanaApp.ios.kt deleted file mode 100644 index 5b9e90bd8..000000000 --- a/shared/src/iosMain/kotlin/dev/alvr/katana/shared/KatanaApp.ios.kt +++ /dev/null @@ -1,15 +0,0 @@ -package dev.alvr.katana.shared - -import dev.alvr.katana.core.common.KatanaBuildConfig -import io.sentry.kotlin.multiplatform.PlatformOptionsConfiguration -import platform.Foundation.NSNumber - -internal actual fun sentryOptionsConfiguration(): PlatformOptionsConfiguration = { options -> - options.debug = KatanaBuildConfig.DEBUG - options.dsn = KatanaBuildConfig.SENTRY_DSN - - options.enableTracing = !KatanaBuildConfig.DEBUG - options.tracesSampleRate = NSNumber(1.0) - - options.profilesSampleRate = NSNumber(1.0) -}