Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
### Fixes

- Fixed setting `throttle_window_ms` to 0 should disable it ([#382](https://github.com/getsentry/sentry-godot/pull/382))
- Fixed failing to set initial user on Apple platforms ([#390](https://github.com/getsentry/sentry-godot/pull/390))

### Other changes

Expand Down
23 changes: 17 additions & 6 deletions src/sentry/android/android_sdk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,16 @@ void AndroidSDK::remove_tag(const String &p_key) {

void AndroidSDK::set_user(const Ref<SentryUser> &p_user) {
ERR_FAIL_NULL(android_plugin);
android_plugin->call(ANDROID_SN(setUser),
p_user->get_id(),
p_user->get_username(),
p_user->get_email(),
p_user->get_ip_address());

if (p_user.is_valid()) {
android_plugin->call(ANDROID_SN(setUser),
p_user->get_id(),
p_user->get_username(),
p_user->get_email(),
p_user->get_ip_address());
} else {
remove_user();
}
}

void AndroidSDK::remove_user() {
Expand Down Expand Up @@ -134,7 +139,7 @@ void AndroidSDK::add_attachment(const Ref<SentryAttachment> &p_attachment) {
}
}

void AndroidSDK::init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback) {
void AndroidSDK::init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback, const Ref<SentryUser> &p_user) {
ERR_FAIL_NULL(android_plugin);

if (p_configuration_callback.is_valid()) {
Expand All @@ -159,6 +164,12 @@ void AndroidSDK::init(const PackedStringArray &p_global_attachments, const Calla
SentryOptions::get_singleton()->get_environment(),
SentryOptions::get_singleton()->get_sample_rate(),
SentryOptions::get_singleton()->get_max_breadcrumbs());

if (is_enabled()) {
set_user(p_user);
} else {
ERR_PRINT("Sentry: Failed to initialize Android SDK.");
}
}

void AndroidSDK::close() {
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/android/android_sdk.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class AndroidSDK : public InternalSDK {

virtual void add_attachment(const Ref<SentryAttachment> &p_attachment) override;

virtual void init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback) override;
virtual void init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback, const Ref<SentryUser> &p_user) override;
virtual void close() override;
virtual bool is_enabled() const override;

Expand Down
2 changes: 1 addition & 1 deletion src/sentry/cocoa/cocoa_sdk.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class CocoaSDK : public InternalSDK {

virtual void add_attachment(const Ref<SentryAttachment> &p_attachment) override;

virtual void init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback) override;
virtual void init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback, const Ref<SentryUser> &p_user) override;
virtual void close() override;
virtual bool is_enabled() const override;

Expand Down
21 changes: 20 additions & 1 deletion src/sentry/cocoa/cocoa_sdk.mm
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@
}];
}

void CocoaSDK::init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback) {
void CocoaSDK::init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback, const Ref<SentryUser> &p_user) {
[PrivateSentrySDKOnly setSdkName:@"sentry.cocoa.godot"];

[objc::SentrySDK startWithConfigureOptions:^(objc::SentryOptions *options) {
Expand Down Expand Up @@ -182,6 +182,21 @@
ERR_CONTINUE(att == nil);
[scope addAttachment:att];
}

// Initialize user.
if (p_user.is_valid()) {
objc::SentryUser *user = [[objc::SentryUser alloc] init];

user.userId = string_to_objc_or_nil_if_empty(p_user->get_id());
user.username = string_to_objc_or_nil_if_empty(p_user->get_username());
user.email = string_to_objc_or_nil_if_empty(p_user->get_email());
user.ipAddress = string_to_objc_or_nil_if_empty(p_user->get_ip_address());

[scope setUser:user];
} else {
[scope setUser:nil];
}

return scope;
};

Expand All @@ -199,6 +214,10 @@
}
};
}];

if (!is_enabled()) {
ERR_PRINT("Sentry: Failed to initialize Cocoa SDK.");
}
}

void CocoaSDK::close() {
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/disabled/disabled_sdk.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class DisabledSDK : public InternalSDK {

virtual void add_attachment(const Ref<SentryAttachment> &p_attachment) override {}

virtual void init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback) override {}
virtual void init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback, const Ref<SentryUser> &p_user) override {}
virtual void close() override {}
virtual bool is_enabled() const override { return false; }
};
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/internal_sdk.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class InternalSDK {

virtual void add_attachment(const Ref<SentryAttachment> &p_attachment) = 0;

virtual void init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback) = 0;
virtual void init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback, const Ref<SentryUser> &p_user) = 0;
virtual void close() = 0;
virtual bool is_enabled() const = 0;

Expand Down
46 changes: 25 additions & 21 deletions src/sentry/native/native_sdk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,27 +144,29 @@ void NativeSDK::remove_tag(const String &p_key) {
}

void NativeSDK::set_user(const Ref<SentryUser> &p_user) {
ERR_FAIL_NULL(p_user);
if (p_user.is_valid()) {
sentry_value_t user_data = sentry_value_new_object();

sentry_value_t user_data = sentry_value_new_object();

if (!p_user->get_id().is_empty()) {
sentry_value_set_by_key(user_data, "id",
sentry_value_new_string(p_user->get_id().utf8()));
}
if (!p_user->get_username().is_empty()) {
sentry_value_set_by_key(user_data, "username",
sentry_value_new_string(p_user->get_username().utf8()));
}
if (!p_user->get_email().is_empty()) {
sentry_value_set_by_key(user_data, "email",
sentry_value_new_string(p_user->get_email().utf8()));
}
if (!p_user->get_ip_address().is_empty()) {
sentry_value_set_by_key(user_data, "ip_address",
sentry_value_new_string(p_user->get_ip_address().utf8()));
if (!p_user->get_id().is_empty()) {
sentry_value_set_by_key(user_data, "id",
sentry_value_new_string(p_user->get_id().utf8()));
}
if (!p_user->get_username().is_empty()) {
sentry_value_set_by_key(user_data, "username",
sentry_value_new_string(p_user->get_username().utf8()));
}
if (!p_user->get_email().is_empty()) {
sentry_value_set_by_key(user_data, "email",
sentry_value_new_string(p_user->get_email().utf8()));
}
if (!p_user->get_ip_address().is_empty()) {
sentry_value_set_by_key(user_data, "ip_address",
sentry_value_new_string(p_user->get_ip_address().utf8()));
}
sentry_set_user(user_data);
} else {
remove_user();
}
sentry_set_user(user_data);
}

void NativeSDK::remove_user() {
Expand Down Expand Up @@ -267,7 +269,7 @@ void NativeSDK::add_attachment(const Ref<SentryAttachment> &p_attachment) {
}
}

void NativeSDK::init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback) {
void NativeSDK::init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback, const Ref<SentryUser> &p_user) {
ERR_FAIL_NULL(OS::get_singleton());
ERR_FAIL_NULL(ProjectSettings::get_singleton());

Expand Down Expand Up @@ -335,7 +337,9 @@ void NativeSDK::init(const PackedStringArray &p_global_attachments, const Callab
int err = sentry_init(options);
initialized = (err == 0);

if (err != 0) {
if (is_enabled()) {
set_user(p_user);
} else {
ERR_PRINT("Sentry: Failed to initialize native SDK. Error code: " + itos(err));
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/native/native_sdk.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class NativeSDK : public InternalSDK {

virtual void add_attachment(const Ref<SentryAttachment> &p_attachment) override;

virtual void init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback) override;
virtual void init(const PackedStringArray &p_global_attachments, const Callable &p_configuration_callback, const Ref<SentryUser> &p_user) override;
virtual void close() override;
virtual bool is_enabled() const override;

Expand Down
3 changes: 1 addition & 2 deletions src/sentry/sentry_sdk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ void SentrySDK::init(const Callable &p_configuration_callback) {
#endif

sentry::util::print_debug("Initializing Sentry SDK");
internal_sdk->init(_get_global_attachments(), p_configuration_callback);
internal_sdk->init(_get_global_attachments(), p_configuration_callback, user);

if (internal_sdk->is_enabled()) {
if (is_auto_initializing) {
Expand Down Expand Up @@ -332,7 +332,6 @@ void SentrySDK::prepare_and_auto_initialize() {
user->infer_ip_address();
}
}
set_user(user);

// Verify project settings and notify user via errors if there are any issues (deferred).
callable_mp_static(_verify_project_settings).call_deferred();
Expand Down
Loading