@@ -11,11 +11,13 @@ import io.flutter.plugin.common.MethodChannel
1111import io.flutter.plugin.common.MethodChannel.MethodCallHandler
1212import io.flutter.plugin.common.MethodChannel.Result
1313import io.sentry.Breadcrumb
14+ import io.sentry.DateUtils
15+ import io.sentry.Hint
1416import io.sentry.HubAdapter
17+ import io.sentry.Sentry
1518import io.sentry.SentryEvent
1619import io.sentry.SentryLevel
17- import io.sentry.Sentry
18- import io.sentry.DateUtils
20+ import io.sentry.SentryOptions
1921import io.sentry.android.core.ActivityFramesTracker
2022import io.sentry.android.core.AppStartState
2123import io.sentry.android.core.BuildConfig.VERSION_NAME
@@ -26,7 +28,6 @@ import io.sentry.protocol.DebugImage
2628import io.sentry.protocol.SdkVersion
2729import io.sentry.protocol.SentryId
2830import io.sentry.protocol.User
29- import io.sentry.protocol.Geo
3031import java.io.File
3132import java.lang.ref.WeakReference
3233import java.util.Locale
@@ -41,10 +42,6 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
4142 private var framesTracker: ActivityFramesTracker ? = null
4243 private var autoPerformanceTracingEnabled = false
4344
44- private val flutterSdk = " sentry.dart.flutter"
45- private val androidSdk = " sentry.java.android.flutter"
46- private val nativeSdk = " sentry.native.android.flutter"
47-
4845 override fun onAttachedToEngine (flutterPluginBinding : FlutterPlugin .FlutterPluginBinding ) {
4946 context = flutterPluginBinding.applicationContext
5047 channel = MethodChannel (flutterPluginBinding.binaryMessenger, " sentry_flutter" )
@@ -134,11 +131,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
134131 framesTracker = ActivityFramesTracker (LoadClass (), options)
135132 }
136133
137- options.setBeforeSend { event, _ ->
138- setEventOriginTag(event)
139- addPackages(event, options.sdkVersion)
140- event
141- }
134+ options.beforeSend = BeforeSendCallbackImpl (options.sdkVersion)
142135 }
143136 result.success(" " )
144137 }
@@ -353,30 +346,50 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
353346 result.success(" " )
354347 }
355348
356- private fun setEventOriginTag (event : SentryEvent ) {
357- event.sdk?.let {
358- when (it.name) {
359- flutterSdk -> setEventEnvironmentTag(event, " flutter" , " dart" )
360- androidSdk -> setEventEnvironmentTag(event, environment = " java" )
361- nativeSdk -> setEventEnvironmentTag(event, environment = " native" )
362- else -> return
363- }
349+ private class BeforeSendCallbackImpl (
350+ private val sdkVersion : SdkVersion ?
351+ ) : SentryOptions.BeforeSendCallback {
352+ override fun execute (event : SentryEvent , hint : Hint ): SentryEvent {
353+ setEventOriginTag(event)
354+ addPackages(event, sdkVersion)
355+ return event
364356 }
365357 }
366358
367- private fun setEventEnvironmentTag (event : SentryEvent , origin : String = "android", environment : String ) {
368- event.setTag(" event.origin" , origin)
369- event.setTag(" event.environment" , environment)
370- }
371-
372- private fun addPackages (event : SentryEvent , sdk : SdkVersion ? ) {
373- event.sdk?.let {
374- if (it.name == flutterSdk) {
375- sdk?.packageSet?.forEach { sentryPackage ->
376- it.addPackage(sentryPackage.name, sentryPackage.version)
359+ companion object {
360+
361+ private const val flutterSdk = " sentry.dart.flutter"
362+ private const val androidSdk = " sentry.java.android.flutter"
363+ private const val nativeSdk = " sentry.native.android.flutter"
364+ private fun setEventOriginTag (event : SentryEvent ) {
365+ event.sdk?.let {
366+ when (it.name) {
367+ flutterSdk -> setEventEnvironmentTag(event, " flutter" , " dart" )
368+ androidSdk -> setEventEnvironmentTag(event, environment = " java" )
369+ nativeSdk -> setEventEnvironmentTag(event, environment = " native" )
370+ else -> return
377371 }
378- sdk?.integrationSet?.forEach { integration ->
379- it.addIntegration(integration)
372+ }
373+ }
374+
375+ private fun setEventEnvironmentTag (
376+ event : SentryEvent ,
377+ origin : String = "android",
378+ environment : String
379+ ) {
380+ event.setTag(" event.origin" , origin)
381+ event.setTag(" event.environment" , environment)
382+ }
383+
384+ private fun addPackages (event : SentryEvent , sdk : SdkVersion ? ) {
385+ event.sdk?.let {
386+ if (it.name == flutterSdk) {
387+ sdk?.packageSet?.forEach { sentryPackage ->
388+ it.addPackage(sentryPackage.name, sentryPackage.version)
389+ }
390+ sdk?.integrationSet?.forEach { integration ->
391+ it.addIntegration(integration)
392+ }
380393 }
381394 }
382395 }
0 commit comments