@@ -11,11 +11,13 @@ import io.flutter.plugin.common.MethodChannel
11
11
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
12
12
import io.flutter.plugin.common.MethodChannel.Result
13
13
import io.sentry.Breadcrumb
14
+ import io.sentry.DateUtils
15
+ import io.sentry.Hint
14
16
import io.sentry.HubAdapter
17
+ import io.sentry.Sentry
15
18
import io.sentry.SentryEvent
16
19
import io.sentry.SentryLevel
17
- import io.sentry.Sentry
18
- import io.sentry.DateUtils
20
+ import io.sentry.SentryOptions
19
21
import io.sentry.android.core.ActivityFramesTracker
20
22
import io.sentry.android.core.AppStartState
21
23
import io.sentry.android.core.BuildConfig.VERSION_NAME
@@ -26,7 +28,6 @@ import io.sentry.protocol.DebugImage
26
28
import io.sentry.protocol.SdkVersion
27
29
import io.sentry.protocol.SentryId
28
30
import io.sentry.protocol.User
29
- import io.sentry.protocol.Geo
30
31
import java.io.File
31
32
import java.lang.ref.WeakReference
32
33
import java.util.Locale
@@ -40,10 +41,6 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
40
41
private var framesTracker: ActivityFramesTracker ? = null
41
42
private var autoPerformanceTracingEnabled = false
42
43
43
- private val flutterSdk = " sentry.dart.flutter"
44
- private val androidSdk = " sentry.java.android.flutter"
45
- private val nativeSdk = " sentry.native.android.flutter"
46
-
47
44
override fun onAttachedToEngine (flutterPluginBinding : FlutterPlugin .FlutterPluginBinding ) {
48
45
context = flutterPluginBinding.applicationContext
49
46
channel = MethodChannel (flutterPluginBinding.binaryMessenger, " sentry_flutter" )
@@ -127,9 +124,15 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
127
124
args.getIfNotNull<String >(" environment" ) { options.environment = it }
128
125
args.getIfNotNull<String >(" release" ) { options.release = it }
129
126
args.getIfNotNull<String >(" dist" ) { options.dist = it }
130
- args.getIfNotNull<Boolean >(" enableAutoSessionTracking" ) { options.isEnableAutoSessionTracking = it }
131
- args.getIfNotNull<Long >(" autoSessionTrackingIntervalMillis" ) { options.sessionTrackingIntervalMillis = it }
132
- args.getIfNotNull<Long >(" anrTimeoutIntervalMillis" ) { options.anrTimeoutIntervalMillis = it }
127
+ args.getIfNotNull<Boolean >(" enableAutoSessionTracking" ) {
128
+ options.isEnableAutoSessionTracking = it
129
+ }
130
+ args.getIfNotNull<Long >(" autoSessionTrackingIntervalMillis" ) {
131
+ options.sessionTrackingIntervalMillis = it
132
+ }
133
+ args.getIfNotNull<Long >(" anrTimeoutIntervalMillis" ) {
134
+ options.anrTimeoutIntervalMillis = it
135
+ }
133
136
args.getIfNotNull<Boolean >(" attachThreads" ) { options.isAttachThreads = it }
134
137
args.getIfNotNull<Boolean >(" attachStacktrace" ) { options.isAttachStacktrace = it }
135
138
args.getIfNotNull<Boolean >(" enableAutoNativeBreadcrumbs" ) {
@@ -183,12 +186,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
183
186
options.sdkVersion = sdkVersion
184
187
options.sentryClientName = " $androidSdk /$VERSION_NAME "
185
188
options.nativeSdkName = nativeSdk
186
-
187
- options.setBeforeSend { event, _ ->
188
- setEventOriginTag(event)
189
- addPackages(event, options.sdkVersion)
190
- event
191
- }
189
+ options.beforeSend = BeforeSendCallbackImpl (options.sdkVersion)
192
190
193
191
args.getIfNotNull<Int >(" connectionTimeoutMillis" ) { options.connectionTimeoutMillis = it }
194
192
args.getIfNotNull<Int >(" readTimeoutMillis" ) { options.readTimeoutMillis = it }
@@ -408,30 +406,50 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
408
406
result.success(" " )
409
407
}
410
408
411
- private fun setEventOriginTag (event : SentryEvent ) {
412
- event.sdk?.let {
413
- when (it.name) {
414
- flutterSdk -> setEventEnvironmentTag(event, " flutter" , " dart" )
415
- androidSdk -> setEventEnvironmentTag(event, environment = " java" )
416
- nativeSdk -> setEventEnvironmentTag(event, environment = " native" )
417
- else -> return
418
- }
409
+ private class BeforeSendCallbackImpl (
410
+ private val sdkVersion : SdkVersion ?
411
+ ) : SentryOptions.BeforeSendCallback {
412
+ override fun execute (event : SentryEvent , hint : Hint ): SentryEvent {
413
+ setEventOriginTag(event)
414
+ addPackages(event, sdkVersion)
415
+ return event
419
416
}
420
417
}
421
418
422
- private fun setEventEnvironmentTag (event : SentryEvent , origin : String = "android", environment : String ) {
423
- event.setTag(" event.origin" , origin)
424
- event.setTag(" event.environment" , environment)
425
- }
426
-
427
- private fun addPackages (event : SentryEvent , sdk : SdkVersion ? ) {
428
- event.sdk?.let {
429
- if (it.name == flutterSdk) {
430
- sdk?.packageSet?.forEach { sentryPackage ->
431
- it.addPackage(sentryPackage.name, sentryPackage.version)
419
+ companion object {
420
+
421
+ private const val flutterSdk = " sentry.dart.flutter"
422
+ private const val androidSdk = " sentry.java.android.flutter"
423
+ private const val nativeSdk = " sentry.native.android.flutter"
424
+ private fun setEventOriginTag (event : SentryEvent ) {
425
+ event.sdk?.let {
426
+ when (it.name) {
427
+ flutterSdk -> setEventEnvironmentTag(event, " flutter" , " dart" )
428
+ androidSdk -> setEventEnvironmentTag(event, environment = " java" )
429
+ nativeSdk -> setEventEnvironmentTag(event, environment = " native" )
430
+ else -> return
432
431
}
433
- sdk?.integrationSet?.forEach { integration ->
434
- it.addIntegration(integration)
432
+ }
433
+ }
434
+
435
+ private fun setEventEnvironmentTag (
436
+ event : SentryEvent ,
437
+ origin : String = "android",
438
+ environment : String
439
+ ) {
440
+ event.setTag(" event.origin" , origin)
441
+ event.setTag(" event.environment" , environment)
442
+ }
443
+
444
+ private fun addPackages (event : SentryEvent , sdk : SdkVersion ? ) {
445
+ event.sdk?.let {
446
+ if (it.name == flutterSdk) {
447
+ sdk?.packageSet?.forEach { sentryPackage ->
448
+ it.addPackage(sentryPackage.name, sentryPackage.version)
449
+ }
450
+ sdk?.integrationSet?.forEach { integration ->
451
+ it.addIntegration(integration)
452
+ }
435
453
}
436
454
}
437
455
}
0 commit comments