Skip to content

Commit d236c82

Browse files
committed
Allow passing sdk init function
1 parent 2b7a319 commit d236c82

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

packages/core/android/src/main/java/io/sentry/react/RNSentrySDK.java

+13-6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.sentry.android.core.AndroidLogger;
99
import io.sentry.android.core.SentryAndroidOptions;
1010
import org.jetbrains.annotations.NotNull;
11+
import org.jetbrains.annotations.Nullable;
1112
import org.json.JSONObject;
1213

1314
public final class RNSentrySDK {
@@ -20,24 +21,30 @@ private RNSentrySDK() {
2021
throw new AssertionError("Utility class should not be instantiated");
2122
}
2223

24+
/** Passing a custom SDK initializer is intended for internal testing use only. */
25+
interface SdkInit {
26+
void init(Context context, Sentry.OptionsConfiguration<SentryAndroidOptions> config);
27+
}
28+
2329
static void init(
2430
@NotNull final Context context,
2531
@NotNull Sentry.OptionsConfiguration<SentryAndroidOptions> configuration,
2632
@NotNull String configurationFile,
27-
@NotNull ILogger logger) {
33+
@NotNull ILogger logger,
34+
@Nullable SdkInit sdkInit) {
2835
try {
2936
JSONObject jsonObject =
3037
RNSentryJsonUtils.getOptionsFromConfigurationFile(context, configurationFile, logger);
3138
if (jsonObject == null) {
32-
RNSentryStart.startWithConfiguration(context, configuration);
39+
RNSentryStart.startWithConfiguration(context, configuration, sdkInit);
3340
return;
3441
}
3542
ReadableMap rnOptions = RNSentryJsonConverter.convertToWritable(jsonObject);
3643
if (rnOptions == null) {
37-
RNSentryStart.startWithConfiguration(context, configuration);
44+
RNSentryStart.startWithConfiguration(context, configuration, sdkInit);
3845
return;
3946
}
40-
RNSentryStart.startWithOptions(context, rnOptions, configuration, logger);
47+
RNSentryStart.startWithOptions(context, rnOptions, configuration, logger, sdkInit);
4148
} catch (Exception e) {
4249
logger.log(
4350
SentryLevel.ERROR, "Failed to start Sentry with options from configuration file.", e);
@@ -54,7 +61,7 @@ static void init(
5461
public static void init(
5562
@NotNull final Context context,
5663
@NotNull Sentry.OptionsConfiguration<SentryAndroidOptions> configuration) {
57-
init(context, configuration, CONFIGURATION_FILE, logger);
64+
init(context, configuration, CONFIGURATION_FILE, logger, null);
5865
}
5966

6067
/**
@@ -63,6 +70,6 @@ public static void init(
6370
* @param context Android Context
6471
*/
6572
public static void init(@NotNull final Context context) {
66-
init(context, options -> {}, CONFIGURATION_FILE, logger);
73+
init(context, options -> {}, CONFIGURATION_FILE, logger, null);
6774
}
6875
}

packages/core/android/src/main/java/io/sentry/react/RNSentryStart.java

+14-4
Original file line numberDiff line numberDiff line change
@@ -37,28 +37,38 @@ private RNSentryStart() {
3737

3838
static void startWithConfiguration(
3939
@NotNull final Context context,
40-
@NotNull Sentry.OptionsConfiguration<SentryAndroidOptions> configuration) {
40+
@NotNull Sentry.OptionsConfiguration<SentryAndroidOptions> configuration,
41+
@Nullable RNSentrySDK.SdkInit sdkInit) {
4142
Sentry.OptionsConfiguration<SentryAndroidOptions> defaults =
4243
options -> updateWithReactDefaults(options, null);
4344
RNSentryCompositeOptionsConfiguration compositeConfiguration =
4445
new RNSentryCompositeOptionsConfiguration(
4546
defaults, configuration, RNSentryStart::updateWithReactFinals);
46-
SentryAndroid.init(context, compositeConfiguration);
47+
if (sdkInit != null) {
48+
sdkInit.init(context, compositeConfiguration);
49+
} else {
50+
SentryAndroid.init(context, compositeConfiguration);
51+
}
4752
}
4853

4954
static void startWithOptions(
5055
@NotNull final Context context,
5156
@NotNull final ReadableMap rnOptions,
5257
@NotNull Sentry.OptionsConfiguration<SentryAndroidOptions> configuration,
53-
@NotNull ILogger logger) {
58+
@NotNull ILogger logger,
59+
@Nullable RNSentrySDK.SdkInit sdkInit) {
5460
Sentry.OptionsConfiguration<SentryAndroidOptions> defaults =
5561
options -> updateWithReactDefaults(options, null);
5662
Sentry.OptionsConfiguration<SentryAndroidOptions> rnConfigurationOptions =
5763
options -> getSentryAndroidOptions(options, rnOptions, logger);
5864
RNSentryCompositeOptionsConfiguration compositeConfiguration =
5965
new RNSentryCompositeOptionsConfiguration(
6066
rnConfigurationOptions, defaults, configuration, RNSentryStart::updateWithReactFinals);
61-
SentryAndroid.init(context, compositeConfiguration);
67+
if (sdkInit != null) {
68+
sdkInit.init(context, compositeConfiguration);
69+
} else {
70+
SentryAndroid.init(context, compositeConfiguration);
71+
}
6272
}
6373

6474
static void startWithOptions(

0 commit comments

Comments
 (0)