Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

## Unreleased

### Features

- Add new User Feedback API ([#4286](https://github.com/getsentry/sentry-java/pull/4286))
- We now introduced Sentry.captureFeedback, which supersedes Sentry.captureUserFeedback

### Fixes

- Reduce excessive CPU usage when serializing breadcrumbs to disk for ANRs ([#4181](https://github.com/getsentry/sentry-java/pull/4181))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@
import io.sentry.ISpan;
import io.sentry.MeasurementUnit;
import io.sentry.Sentry;
import io.sentry.UserFeedback;
import io.sentry.instrumentation.file.SentryFileOutputStream;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.Feedback;
import io.sentry.protocol.User;
import io.sentry.samples.android.compose.ComposeActivity;
import io.sentry.samples.android.databinding.ActivityMainBinding;
Expand Down Expand Up @@ -73,13 +72,12 @@ protected void onCreate(Bundle savedInstanceState) {

binding.sendUserFeedback.setOnClickListener(
view -> {
SentryId sentryId = Sentry.captureException(new Exception("I have feedback"));
Feedback feedback =
new Feedback("It broke on Android. I don't know why, but this happens.");
feedback.setContactEmail("john@me.com");
feedback.setName("John Me");

UserFeedback userFeedback = new UserFeedback(sentryId);
userFeedback.setComments("It broke on Android. I don't know why, but this happens.");
userFeedback.setEmail("john@me.com");
userFeedback.setName("John Me");
Sentry.captureUserFeedback(userFeedback);
Sentry.captureFeedback(feedback);
});

binding.addAttachment.setOnClickListener(
Expand Down
58 changes: 58 additions & 0 deletions sentry/api/sentry.api
Original file line number Diff line number Diff line change
Expand Up @@ -584,6 +584,9 @@ public final class io/sentry/HubAdapter : io/sentry/IHub {
public fun captureEvent (Lio/sentry/SentryEvent;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureReplay (Lio/sentry/SentryReplayEvent;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
Expand Down Expand Up @@ -649,6 +652,7 @@ public final class io/sentry/HubScopesWrapper : io/sentry/IHub {
public fun captureEvent (Lio/sentry/SentryEvent;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureReplay (Lio/sentry/SentryReplayEvent;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
Expand Down Expand Up @@ -870,6 +874,9 @@ public abstract interface class io/sentry/IScopes {
public abstract fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public abstract fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public abstract fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public abstract fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
Expand Down Expand Up @@ -951,6 +958,7 @@ public abstract interface class io/sentry/ISentryClient {
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public abstract fun captureReplayEvent (Lio/sentry/SentryReplayEvent;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
Expand Down Expand Up @@ -1396,6 +1404,7 @@ public final class io/sentry/NoOpHub : io/sentry/IHub {
public fun captureEvent (Lio/sentry/SentryEvent;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureReplay (Lio/sentry/SentryReplayEvent;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
Expand Down Expand Up @@ -1555,6 +1564,7 @@ public final class io/sentry/NoOpScopes : io/sentry/IScopes {
public fun captureEvent (Lio/sentry/SentryEvent;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureReplay (Lio/sentry/SentryReplayEvent;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
Expand Down Expand Up @@ -2158,6 +2168,7 @@ public final class io/sentry/Scopes : io/sentry/IScopes {
public fun captureEvent (Lio/sentry/SentryEvent;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureReplay (Lio/sentry/SentryReplayEvent;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
Expand Down Expand Up @@ -2222,6 +2233,9 @@ public final class io/sentry/ScopesAdapter : io/sentry/IScopes {
public fun captureEvent (Lio/sentry/SentryEvent;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public fun captureReplay (Lio/sentry/SentryReplayEvent;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
Expand Down Expand Up @@ -2328,6 +2342,9 @@ public final class io/sentry/Sentry {
public static fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public static fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public static fun captureException (Ljava/lang/Throwable;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public static fun captureFeedback (Lio/sentry/protocol/Feedback;)Lio/sentry/protocol/SentryId;
public static fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public static fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public static fun captureMessage (Ljava/lang/String;)Lio/sentry/protocol/SentryId;
public static fun captureMessage (Ljava/lang/String;Lio/sentry/ScopeCallback;)Lio/sentry/protocol/SentryId;
public static fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
Expand Down Expand Up @@ -4490,6 +4507,7 @@ public class io/sentry/protocol/Contexts : io/sentry/JsonSerializable {
public fun getApp ()Lio/sentry/protocol/App;
public fun getBrowser ()Lio/sentry/protocol/Browser;
public fun getDevice ()Lio/sentry/protocol/Device;
public fun getFeedback ()Lio/sentry/protocol/Feedback;
public fun getGpu ()Lio/sentry/protocol/Gpu;
public fun getOperatingSystem ()Lio/sentry/protocol/OperatingSystem;
public fun getResponse ()Lio/sentry/protocol/Response;
Expand All @@ -4509,6 +4527,7 @@ public class io/sentry/protocol/Contexts : io/sentry/JsonSerializable {
public fun setApp (Lio/sentry/protocol/App;)V
public fun setBrowser (Lio/sentry/protocol/Browser;)V
public fun setDevice (Lio/sentry/protocol/Device;)V
public fun setFeedback (Lio/sentry/protocol/Feedback;)V
public fun setGpu (Lio/sentry/protocol/Gpu;)V
public fun setOperatingSystem (Lio/sentry/protocol/OperatingSystem;)V
public fun setResponse (Lio/sentry/protocol/Response;)V
Expand Down Expand Up @@ -4728,6 +4747,45 @@ public final class io/sentry/protocol/Device$JsonKeys {
public fun <init> ()V
}

public final class io/sentry/protocol/Feedback : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
public static final field TYPE Ljava/lang/String;
public fun <init> (Lio/sentry/protocol/Feedback;)V
public fun <init> (Ljava/lang/String;)V
public fun equals (Ljava/lang/Object;)Z
public fun getAssociatedEventId ()Lio/sentry/protocol/SentryId;
public fun getContactEmail ()Ljava/lang/String;
public fun getMessage ()Ljava/lang/String;
public fun getName ()Ljava/lang/String;
public fun getReplayId ()Lio/sentry/protocol/SentryId;
public fun getUnknown ()Ljava/util/Map;
public fun getUrl ()Ljava/lang/String;
public fun hashCode ()I
public fun serialize (Lio/sentry/ObjectWriter;Lio/sentry/ILogger;)V
public fun setAssociatedEventId (Lio/sentry/protocol/SentryId;)V
public fun setContactEmail (Ljava/lang/String;)V
public fun setMessage (Ljava/lang/String;)V
public fun setName (Ljava/lang/String;)V
public fun setReplayId (Lio/sentry/protocol/SentryId;)V
public fun setUnknown (Ljava/util/Map;)V
public fun setUrl (Ljava/lang/String;)V
}

public final class io/sentry/protocol/Feedback$Deserializer : io/sentry/JsonDeserializer {
public fun <init> ()V
public fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Lio/sentry/protocol/Feedback;
public synthetic fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Ljava/lang/Object;
}

public final class io/sentry/protocol/Feedback$JsonKeys {
public static final field ASSOCIATED_EVENT_ID Ljava/lang/String;
public static final field CONTACT_EMAIL Ljava/lang/String;
public static final field MESSAGE Ljava/lang/String;
public static final field NAME Ljava/lang/String;
public static final field REPLAY_ID Ljava/lang/String;
public static final field URL Ljava/lang/String;
public fun <init> ()V
}

public final class io/sentry/protocol/Geo : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
public fun <init> ()V
public fun <init> (Lio/sentry/protocol/Geo;)V
Expand Down
17 changes: 17 additions & 0 deletions sentry/src/main/java/io/sentry/HubAdapter.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.sentry;

import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.SentryTransaction;
import io.sentry.protocol.User;
Expand Down Expand Up @@ -50,6 +51,22 @@ public boolean isEnabled() {
return Sentry.captureMessage(message, level, callback);
}

@Override
public @NotNull SentryId captureFeedback(@NotNull Feedback feedback) {
return Sentry.captureFeedback(feedback);
}

@Override
public @NotNull SentryId captureFeedback(@NotNull Feedback feedback, @Nullable Hint hint) {
return Sentry.captureFeedback(feedback, hint);
}

@Override
public @NotNull SentryId captureFeedback(
@NotNull Feedback feedback, @Nullable Hint hint, @Nullable ScopeCallback callback) {
return Sentry.captureFeedback(feedback, hint, callback);
}

@ApiStatus.Internal
@Override
public @NotNull SentryId captureEnvelope(@NotNull SentryEnvelope envelope, @Nullable Hint hint) {
Expand Down
7 changes: 7 additions & 0 deletions sentry/src/main/java/io/sentry/HubScopesWrapper.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.sentry;

import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.SentryTransaction;
import io.sentry.protocol.User;
Expand Down Expand Up @@ -46,6 +47,12 @@ public boolean isEnabled() {
return scopes.captureMessage(message, level, callback);
}

@Override
public @NotNull SentryId captureFeedback(
@NotNull Feedback feedback, @Nullable Hint hint, @Nullable ScopeCallback callback) {
return scopes.captureFeedback(feedback, hint, callback);
}

@Override
public @NotNull SentryId captureEnvelope(@NotNull SentryEnvelope envelope, @Nullable Hint hint) {
return scopes.captureEnvelope(envelope, hint);
Expand Down
37 changes: 37 additions & 0 deletions sentry/src/main/java/io/sentry/IScopes.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.sentry;

import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.SentryTransaction;
import io.sentry.protocol.User;
Expand Down Expand Up @@ -108,6 +109,42 @@ SentryId captureMessage(
return captureMessage(message, SentryLevel.INFO, callback);
}

/**
* Captures the feedback.
*
* @param feedback The feedback to send.
* @return The Id (SentryId object) of the event
*/
default @NotNull SentryId captureFeedback(final @NotNull Feedback feedback) {
return captureFeedback(feedback, null);
}

/**
* Captures the feedback.
*
* @param feedback The feedback to send.
* @param hint An optional hint to be applied to the event.
* @return The Id (SentryId object) of the event
*/
default @NotNull SentryId captureFeedback(
final @NotNull Feedback feedback, final @Nullable Hint hint) {
return captureFeedback(feedback, hint, null);
}

/**
* Captures the feedback.
*
* @param feedback The feedback to send.
* @param hint An optional hint to be applied to the event.
* @param callback The callback to configure the scope for a single invocation.
* @return The Id (SentryId object) of the event
*/
@NotNull
SentryId captureFeedback(
final @NotNull Feedback feedback,
final @Nullable Hint hint,
final @Nullable ScopeCallback callback);

/**
* Captures an envelope.
*
Expand Down
17 changes: 17 additions & 0 deletions sentry/src/main/java/io/sentry/ISentryClient.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.sentry;

import io.sentry.protocol.Feedback;
import io.sentry.protocol.Message;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.SentryTransaction;
Expand Down Expand Up @@ -78,6 +79,22 @@ public interface ISentryClient {
return captureEvent(event, null, hint);
}

/**
* Captures the feedback.
*
* @param feedback The feedback to send.
* @param hint An optional hint to be applied to the event.
* @param scope An optional scope to be applied to the event.
* @return The Id (SentryId object) of the event
*/
default @NotNull SentryId captureFeedback(
@NotNull Feedback feedback, @Nullable Hint hint, @Nullable IScope scope) {
SentryEvent event = new SentryEvent();
event.getContexts().setFeedback(feedback);

return captureEvent(event, scope, hint);
Comment thread
stefanosiano marked this conversation as resolved.
Outdated
}

/**
* Captures the message.
*
Expand Down
2 changes: 2 additions & 0 deletions sentry/src/main/java/io/sentry/JsonSerializer.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import io.sentry.protocol.DebugImage;
import io.sentry.protocol.DebugMeta;
import io.sentry.protocol.Device;
import io.sentry.protocol.Feedback;
import io.sentry.protocol.Geo;
import io.sentry.protocol.Gpu;
import io.sentry.protocol.MeasurementValue;
Expand Down Expand Up @@ -84,6 +85,7 @@ public JsonSerializer(@NotNull SentryOptions options) {
deserializersByClass.put(Device.class, new Device.Deserializer());
deserializersByClass.put(
Device.DeviceOrientation.class, new Device.DeviceOrientation.Deserializer());
deserializersByClass.put(Feedback.class, new Feedback.Deserializer());
deserializersByClass.put(Gpu.class, new Gpu.Deserializer());
deserializersByClass.put(MeasurementValue.class, new MeasurementValue.Deserializer());
deserializersByClass.put(Mechanism.class, new Mechanism.Deserializer());
Expand Down
7 changes: 7 additions & 0 deletions sentry/src/main/java/io/sentry/NoOpHub.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.sentry;

import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.SentryTransaction;
import io.sentry.protocol.User;
Expand Down Expand Up @@ -53,6 +54,12 @@ public boolean isEnabled() {
return SentryId.EMPTY_ID;
}

@Override
public @NotNull SentryId captureFeedback(
@NotNull Feedback feedback, @Nullable Hint hint, @Nullable ScopeCallback callback) {
return SentryId.EMPTY_ID;
}

@Override
public @NotNull SentryId captureEnvelope(@NotNull SentryEnvelope envelope, @Nullable Hint hint) {
return SentryId.EMPTY_ID;
Expand Down
7 changes: 7 additions & 0 deletions sentry/src/main/java/io/sentry/NoOpScopes.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.sentry;

import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.SentryTransaction;
import io.sentry.protocol.User;
Expand Down Expand Up @@ -48,6 +49,12 @@ public boolean isEnabled() {
return SentryId.EMPTY_ID;
}

@Override
public @NotNull SentryId captureFeedback(
@NotNull Feedback feedback, @Nullable Hint hint, @Nullable ScopeCallback callback) {
return SentryId.EMPTY_ID;
}

@Override
public @NotNull SentryId captureEnvelope(@NotNull SentryEnvelope envelope, @Nullable Hint hint) {
return SentryId.EMPTY_ID;
Expand Down
Loading