diff --git a/CHANGELOG.md b/CHANGELOG.md index 3611d5c01a..11392eb2e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Increase minimum SDK version requirements to Dart v3.5.0 and Flutter v3.24.0 ([#2643](https://github.com/getsentry/sentry-dart/pull/2643)) - Remove screenshot option `attachScreenshotOnlyWhenResumed` ([#2664](https://github.com/getsentry/sentry-dart/pull/2664)) - Remove deprecated `beforeScreenshot` ([#2662](https://github.com/getsentry/sentry-dart/pull/2662)) +- Remove old user feedback api ([#2686](https://github.com/getsentry/sentry-dart/pull/2686)) - Remove deprecated loggers ([#2685](https://github.com/getsentry/sentry-dart/pull/2685)) - Remove user segment ([#2687](https://github.com/getsentry/sentry-dart/pull/2687)) - Enable JS SDK native integration by default ([#2688](https://github.com/getsentry/sentry-dart/pull/2688)) diff --git a/dart/lib/sentry.dart b/dart/lib/sentry.dart index f9ce19842b..c81923c2ce 100644 --- a/dart/lib/sentry.dart +++ b/dart/lib/sentry.dart @@ -5,60 +5,50 @@ /// A pure Dart client for Sentry.io crash reporting. library; -export 'src/run_zoned_guarded_integration.dart'; +export 'src/event_processor.dart'; +export 'src/exception_cause.dart'; +export 'src/exception_cause_extractor.dart'; +export 'src/exception_stacktrace_extractor.dart'; +export 'src/exception_type_identifier.dart'; +export 'src/hint.dart'; +export 'src/http_client/sentry_http_client.dart'; +export 'src/http_client/sentry_http_client_error.dart'; export 'src/hub.dart'; -// useful for tests export 'src/hub_adapter.dart'; -export 'src/platform_checker.dart'; +export 'src/integration.dart'; export 'src/noop_isolate_error_integration.dart' if (dart.library.io) 'src/isolate_error_integration.dart'; +export 'src/performance_collector.dart'; +export 'src/platform_checker.dart'; export 'src/protocol.dart'; +export 'src/protocol/sentry_feedback.dart'; +export 'src/protocol/sentry_proxy.dart'; +export 'src/run_zoned_guarded_integration.dart'; export 'src/scope.dart'; export 'src/scope_observer.dart'; export 'src/sentry.dart'; +export 'src/sentry_attachment/sentry_attachment.dart'; +export 'src/sentry_baggage.dart'; +export 'src/sentry_client.dart'; export 'src/sentry_envelope.dart'; export 'src/sentry_envelope_item.dart'; -export 'src/sentry_client.dart'; export 'src/sentry_options.dart'; -// useful for integrations +// ignore: invalid_export_of_internal_element +export 'src/sentry_span_operations.dart'; +// ignore: invalid_export_of_internal_element +export 'src/sentry_trace_origins.dart'; +export 'src/span_data_convention.dart'; +export 'src/spotlight.dart'; export 'src/throwable_mechanism.dart'; -export 'src/transport/transport.dart'; -export 'src/integration.dart'; -export 'src/event_processor.dart'; -export 'src/http_client/sentry_http_client.dart'; -export 'src/http_client/sentry_http_client_error.dart'; -export 'src/sentry_attachment/sentry_attachment.dart'; -export 'src/sentry_user_feedback.dart'; -export 'src/utils/tracing_utils.dart'; -export 'src/performance_collector.dart'; -// tracing export 'src/tracing.dart'; -export 'src/hint.dart'; +export 'src/transport/transport.dart'; export 'src/type_check_hint.dart'; -export 'src/sentry_baggage.dart'; -// exception extraction -export 'src/exception_cause_extractor.dart'; -export 'src/exception_cause.dart'; -export 'src/exception_stacktrace_extractor.dart'; -export 'src/exception_type_identifier.dart'; -// URL -// ignore: invalid_export_of_internal_element -export 'src/utils/http_sanitizer.dart'; // ignore: invalid_export_of_internal_element -export 'src/utils/url_details.dart'; +export 'src/utils.dart'; // ignore: invalid_export_of_internal_element export 'src/utils/http_header_utils.dart'; // ignore: invalid_export_of_internal_element -export 'src/sentry_trace_origins.dart'; -// ignore: invalid_export_of_internal_element -export 'src/sentry_span_operations.dart'; +export 'src/utils/http_sanitizer.dart'; +export 'src/utils/tracing_utils.dart'; // ignore: invalid_export_of_internal_element -export 'src/utils.dart'; -// spotlight debugging -export 'src/spotlight.dart'; -// proxy -export 'src/protocol/sentry_proxy.dart'; -// feedback -export 'src/protocol/sentry_feedback.dart'; -// constants -export 'src/span_data_convention.dart'; +export 'src/utils/url_details.dart'; diff --git a/dart/lib/src/hub.dart b/dart/lib/src/hub.dart index 6798a00813..da5c22880f 100644 --- a/dart/lib/src/hub.dart +++ b/dart/lib/src/hub.dart @@ -242,40 +242,6 @@ class Hub { return sentryId; } - @Deprecated( - 'Will be removed in a future version. Use [captureFeedback] instead') - Future captureUserFeedback(SentryUserFeedback userFeedback) async { - if (!_isEnabled) { - _options.logger( - SentryLevel.warning, - "Instance is disabled and this 'captureUserFeedback' call is a no-op.", - ); - return; - } - if (userFeedback.eventId == SentryId.empty()) { - _options.logger( - SentryLevel.warning, - 'Captured UserFeedback with empty id, dropping the feedback', - ); - return; - } - try { - final item = _peek(); - - await item.client.captureUserFeedback(userFeedback); - } catch (exception, stacktrace) { - _options.logger( - SentryLevel.error, - 'Error while capturing user feedback for ${userFeedback.eventId}', - exception: exception, - stackTrace: stacktrace, - ); - if (_options.automatedTestMode) { - rethrow; - } - } - } - /// Captures the feedback. Future captureFeedback( SentryFeedback feedback, { diff --git a/dart/lib/src/hub_adapter.dart b/dart/lib/src/hub_adapter.dart index 2a783ff592..e831edc834 100644 --- a/dart/lib/src/hub_adapter.dart +++ b/dart/lib/src/hub_adapter.dart @@ -11,7 +11,6 @@ import 'scope.dart'; import 'sentry.dart'; import 'sentry_client.dart'; import 'sentry_options.dart'; -import 'sentry_user_feedback.dart'; import 'tracing.dart'; /// Hub adapter to make Integrations testable @@ -112,12 +111,6 @@ class HubAdapter implements Hub { @override ISentrySpan? getSpan() => Sentry.currentHub.getSpan(); - @override - // ignore: deprecated_member_use_from_same_package - Future captureUserFeedback(SentryUserFeedback userFeedback) => - // ignore: deprecated_member_use_from_same_package - Sentry.captureUserFeedback(userFeedback); - @override ISentrySpan startTransactionWithContext( SentryTransactionContext transactionContext, { diff --git a/dart/lib/src/noop_hub.dart b/dart/lib/src/noop_hub.dart index 785d9293db..a677cbe21d 100644 --- a/dart/lib/src/noop_hub.dart +++ b/dart/lib/src/noop_hub.dart @@ -10,7 +10,6 @@ import 'protocol/sentry_feedback.dart'; import 'scope.dart'; import 'sentry_client.dart'; import 'sentry_options.dart'; -import 'sentry_user_feedback.dart'; import 'tracing.dart'; class NoOpHub implements Hub { @@ -86,10 +85,6 @@ class NoOpHub implements Hub { }) async => SentryId.empty(); - @override - // ignore: deprecated_member_use_from_same_package - Future captureUserFeedback(SentryUserFeedback userFeedback) async {} - @override Future captureFeedback( SentryFeedback feedback, { diff --git a/dart/lib/src/noop_sentry_client.dart b/dart/lib/src/noop_sentry_client.dart index 4242f2a8be..39bd728dd9 100644 --- a/dart/lib/src/noop_sentry_client.dart +++ b/dart/lib/src/noop_sentry_client.dart @@ -7,7 +7,6 @@ import 'scope.dart'; import 'sentry_client.dart'; import 'sentry_envelope.dart'; import 'sentry_trace_context_header.dart'; -import 'sentry_user_feedback.dart'; class NoOpSentryClient implements SentryClient { NoOpSentryClient._(); @@ -51,10 +50,6 @@ class NoOpSentryClient implements SentryClient { Future captureEnvelope(SentryEnvelope envelope) async => SentryId.empty(); - @override - // ignore: deprecated_member_use_from_same_package - Future captureUserFeedback(SentryUserFeedback userFeedback) async {} - @override Future close() async {} diff --git a/dart/lib/src/sentry.dart b/dart/lib/src/sentry.dart index 7b62938c96..9660cd3255 100644 --- a/dart/lib/src/sentry.dart +++ b/dart/lib/src/sentry.dart @@ -22,7 +22,6 @@ import 'sentry_attachment/sentry_attachment.dart'; import 'sentry_client.dart'; import 'sentry_options.dart'; import 'sentry_run_zoned_guarded.dart'; -import 'sentry_user_feedback.dart'; import 'tracing.dart'; import 'transport/data_category.dart'; import 'transport/task_queue.dart'; @@ -249,14 +248,6 @@ class Sentry { DataCategory.unknown, ); - /// Reports a [userFeedback] to Sentry.io. - /// - /// First capture an event and use the [SentryId] to create a [SentryUserFeedback] - @Deprecated( - 'Will be removed in a future version. Use [captureFeedback] instead') - static Future captureUserFeedback(SentryUserFeedback userFeedback) => - _hub.captureUserFeedback(userFeedback); - /// Reports [SentryFeedback] to Sentry.io. /// /// Use [withScope] to add [SentryAttachment] to the feedback. diff --git a/dart/lib/src/sentry_client.dart b/dart/lib/src/sentry_client.dart index 89a3709487..b5328f1821 100644 --- a/dart/lib/src/sentry_client.dart +++ b/dart/lib/src/sentry_client.dart @@ -17,7 +17,6 @@ import 'sentry_exception_factory.dart'; import 'sentry_options.dart'; import 'sentry_stack_trace_factory.dart'; import 'sentry_trace_context_header.dart'; -import 'sentry_user_feedback.dart'; import 'transport/client_report_transport.dart'; import 'transport/data_category.dart'; import 'transport/http_transport.dart'; @@ -444,18 +443,6 @@ class SentryClient { return _options.transport.send(envelope); } - /// Reports the [userFeedback] to Sentry.io. - @Deprecated( - 'Will be removed in a future version. Use [captureFeedback] instead') - Future captureUserFeedback(SentryUserFeedback userFeedback) { - final envelope = SentryEnvelope.fromUserFeedback( - userFeedback, - _options.sdk, - dsn: _options.dsn, - ); - return _options.transport.send(envelope); - } - /// Reports the [feedback] to Sentry.io. Future captureFeedback( SentryFeedback feedback, { diff --git a/dart/lib/src/sentry_envelope.dart b/dart/lib/src/sentry_envelope.dart index 5d83797143..10d4b3a085 100644 --- a/dart/lib/src/sentry_envelope.dart +++ b/dart/lib/src/sentry_envelope.dart @@ -8,7 +8,6 @@ import 'sentry_envelope_item.dart'; import 'sentry_item_type.dart'; import 'sentry_options.dart'; import 'sentry_trace_context_header.dart'; -import 'sentry_user_feedback.dart'; import 'utils.dart'; /// Class representation of `Envelope` file. @@ -59,23 +58,6 @@ class SentryEnvelope { ); } - @Deprecated('Will be removed in a future version.') - factory SentryEnvelope.fromUserFeedback( - SentryUserFeedback feedback, - SdkVersion sdkVersion, { - String? dsn, - }) { - return SentryEnvelope( - // no need for [traceContext] - SentryEnvelopeHeader( - feedback.eventId, - sdkVersion, - dsn: dsn, - ), - [SentryEnvelopeItem.fromUserFeedback(feedback)], - ); - } - /// Create a [SentryEnvelope] containing one [SentryEnvelopeItem] which holds the [SentryTransaction] data. factory SentryEnvelope.fromTransaction( SentryTransaction transaction, diff --git a/dart/lib/src/sentry_envelope_item.dart b/dart/lib/src/sentry_envelope_item.dart index 03164ba2a8..bfe4d818eb 100644 --- a/dart/lib/src/sentry_envelope_item.dart +++ b/dart/lib/src/sentry_envelope_item.dart @@ -5,7 +5,6 @@ import 'protocol.dart'; import 'sentry_attachment/sentry_attachment.dart'; import 'sentry_envelope_item_header.dart'; import 'sentry_item_type.dart'; -import 'sentry_user_feedback.dart'; import 'utils.dart'; /// Item holding header information and JSON encoded data. @@ -40,22 +39,6 @@ class SentryEnvelopeItem { ); } - /// Create a [SentryEnvelopeItem] which sends [SentryUserFeedback]. - @Deprecated('Will be removed in a future version.') - factory SentryEnvelopeItem.fromUserFeedback(SentryUserFeedback feedback) { - final dataFactory = () => utf8JsonEncoder.convert(feedback.toJson()); - - final header = SentryEnvelopeItemHeader( - SentryItemType.userFeedback, - contentType: 'application/json', - ); - return SentryEnvelopeItem( - header, - dataFactory, - originalObject: feedback, - ); - } - /// Create a [SentryEnvelopeItem] which holds the [SentryEvent] data. factory SentryEnvelopeItem.fromEvent(SentryEvent event) { return SentryEnvelopeItem( diff --git a/dart/lib/src/sentry_item_type.dart b/dart/lib/src/sentry_item_type.dart index 18dbc8f4ad..d6bf2a31de 100644 --- a/dart/lib/src/sentry_item_type.dart +++ b/dart/lib/src/sentry_item_type.dart @@ -1,6 +1,5 @@ class SentryItemType { static const String event = 'event'; - static const String userFeedback = 'user_report'; static const String attachment = 'attachment'; static const String transaction = 'transaction'; static const String clientReport = 'client_report'; diff --git a/dart/lib/src/sentry_user_feedback.dart b/dart/lib/src/sentry_user_feedback.dart deleted file mode 100644 index 722a0983f1..0000000000 --- a/dart/lib/src/sentry_user_feedback.dart +++ /dev/null @@ -1,69 +0,0 @@ -import 'package:meta/meta.dart'; - -import 'protocol.dart'; -import 'protocol/access_aware_map.dart'; - -@Deprecated('Will be removed in a future version. Use [SentryFeedback] instead') -class SentryUserFeedback { - SentryUserFeedback({ - required this.eventId, - this.name, - this.email, - this.comments, - this.unknown, - }) : assert(eventId != SentryId.empty() && - (name?.isNotEmpty == true || - email?.isNotEmpty == true || - comments?.isNotEmpty == true)); - - factory SentryUserFeedback.fromJson(Map data) { - final json = AccessAwareMap(data); - return SentryUserFeedback( - eventId: SentryId.fromId(json['event_id']), - name: json['name'], - email: json['email'], - comments: json['comments'], - unknown: json.notAccessed(), - ); - } - - /// The eventId of the event to which the user feedback is associated. - final SentryId eventId; - - /// Recommended: The name of the user. - final String? name; - - /// Recommended: The name of the user. - final String? email; - - /// Recommended: Comments of the user about what happened. - final String? comments; - - @internal - final Map? unknown; - - Map toJson() { - return { - ...?unknown, - 'event_id': eventId.toString(), - if (name != null) 'name': name, - if (email != null) 'email': email, - if (comments != null) 'comments': comments, - }; - } - - SentryUserFeedback copyWith({ - SentryId? eventId, - String? name, - String? email, - String? comments, - }) { - return SentryUserFeedback( - eventId: eventId ?? this.eventId, - name: name ?? this.name, - email: email ?? this.email, - comments: comments ?? this.comments, - unknown: unknown, - ); - } -} diff --git a/dart/test/mocks/mock_hub.dart b/dart/test/mocks/mock_hub.dart index 124a17aed2..2ba6a43774 100644 --- a/dart/test/mocks/mock_hub.dart +++ b/dart/test/mocks/mock_hub.dart @@ -13,7 +13,6 @@ class MockHub with NoSuchMethodProvider implements Hub { List bindClientCalls = []; // ignore: deprecated_member_use_from_same_package - List userFeedbackCalls = []; List captureTransactionCalls = []; int closeCalls = 0; bool _isEnabled = true; @@ -119,12 +118,6 @@ class MockHub with NoSuchMethodProvider implements Hub { return transaction.eventId; } - @override - // ignore: deprecated_member_use_from_same_package - Future captureUserFeedback(SentryUserFeedback userFeedback) async { - userFeedbackCalls.add(userFeedback); - } - @override ISentrySpan? getSpan() { getSpanCalls++; diff --git a/dart/test/mocks/mock_sentry_client.dart b/dart/test/mocks/mock_sentry_client.dart index b4897c53b8..6138eb5295 100644 --- a/dart/test/mocks/mock_sentry_client.dart +++ b/dart/test/mocks/mock_sentry_client.dart @@ -9,8 +9,6 @@ class MockSentryClient with NoSuchMethodProvider implements SentryClient { List captureEnvelopeCalls = []; List captureTransactionCalls = []; - // ignore: deprecated_member_use_from_same_package - List userFeedbackCalls = []; List captureFeedbackCalls = []; int closeCalls = 0; @@ -72,12 +70,6 @@ class MockSentryClient with NoSuchMethodProvider implements SentryClient { return envelope.header.eventId ?? SentryId.newId(); } - @override - // ignore: deprecated_member_use_from_same_package - Future captureUserFeedback(SentryUserFeedback userFeedback) async { - userFeedbackCalls.add(userFeedback); - } - @override Future captureFeedback( SentryFeedback feedback, { diff --git a/dart/test/sentry_client_test.dart b/dart/test/sentry_client_test.dart index a48aa8d911..21d7be7279 100644 --- a/dart/test/sentry_client_test.dart +++ b/dart/test/sentry_client_test.dart @@ -1857,22 +1857,6 @@ void main() { expect( fixture.recorder.discardedEvents.first.category, DataCategory.error); }); - - test('user feedback envelope contains dsn', () async { - final client = fixture.getSut(); - final event = SentryEvent(); - // ignore: deprecated_member_use_from_same_package - final feedback = SentryUserFeedback( - eventId: event.eventId, - name: 'test', - ); - // ignore: deprecated_member_use_from_same_package - await client.captureUserFeedback(feedback); - - final capturedEnvelope = (fixture.transport).envelopes.first; - - expect(capturedEnvelope.header.dsn, fixture.options.dsn); - }); }); group('Spotlight', () { diff --git a/dart/test/sentry_envelope_item_test.dart b/dart/test/sentry_envelope_item_test.dart index aac20a7fb5..9e63104a31 100644 --- a/dart/test/sentry_envelope_item_test.dart +++ b/dart/test/sentry_envelope_item_test.dart @@ -95,26 +95,5 @@ void main() { expect(sut.header.type, SentryItemType.clientReport); expect(actualData, expectedData); }); - - test('fromUserFeedback', () async { - // ignore: deprecated_member_use_from_same_package - final userFeedback = SentryUserFeedback( - eventId: SentryId.newId(), - name: 'name', - comments: 'comments', - email: 'email'); - // ignore: deprecated_member_use_from_same_package - final sut = SentryEnvelopeItem.fromUserFeedback(userFeedback); - - final expectedData = utf8.encode(jsonEncode( - userFeedback.toJson(), - toEncodable: jsonSerializationFallback, - )); - final actualData = await sut.dataFactory(); - - expect(sut.header.contentType, 'application/json'); - expect(sut.header.type, SentryItemType.userFeedback); - expect(actualData, expectedData); - }); }); } diff --git a/dart/test/sentry_envelope_test.dart b/dart/test/sentry_envelope_test.dart index e8087527e7..9f60ab4bc7 100644 --- a/dart/test/sentry_envelope_test.dart +++ b/dart/test/sentry_envelope_test.dart @@ -135,36 +135,6 @@ void main() { expect(actualItem, expectedItem); }); - test('fromUserFeedback', () async { - final eventId = SentryId.newId(); - // ignore: deprecated_member_use_from_same_package - final userFeedback = SentryUserFeedback( - eventId: eventId, name: 'name', email: 'email', comments: 'comments'); - final sdkVersion = - SdkVersion(name: 'fixture-name', version: 'fixture-version'); - // ignore: deprecated_member_use_from_same_package - final sut = SentryEnvelope.fromUserFeedback( - userFeedback, - sdkVersion, - dsn: fakeDsn, - ); - - final expectedEnvelopeItem = - // ignore: deprecated_member_use_from_same_package - SentryEnvelopeItem.fromUserFeedback(userFeedback); - - expect(sut.header.eventId, eventId); - expect(sut.header.sdkVersion, sdkVersion); - expect(sut.header.dsn, fakeDsn); - expect(sut.items[0].header.contentType, - expectedEnvelopeItem.header.contentType); - expect(sut.items[0].header.type, expectedEnvelopeItem.header.type); - - final actualItem = await sut.items[0].dataFactory(); - final expectedItem = await expectedEnvelopeItem.dataFactory(); - expect(actualItem, expectedItem); - }); - test('max attachment size', () async { final attachment = SentryAttachment.fromLoader( loader: () => Uint8List.fromList([1, 2, 3, 4]), diff --git a/dart/test/sentry_user_feedback_test.dart b/dart/test/sentry_user_feedback_test.dart deleted file mode 100644 index c724f6d8c1..0000000000 --- a/dart/test/sentry_user_feedback_test.dart +++ /dev/null @@ -1,243 +0,0 @@ -import 'package:collection/collection.dart'; -import 'package:sentry/sentry.dart'; -import 'package:sentry/src/sentry_item_type.dart'; -import 'package:test/test.dart'; - -import 'mocks.dart'; -import 'mocks/mock_transport.dart'; -import 'test_utils.dart'; - -void main() { - // ignore: deprecated_member_use_from_same_package - group('$SentryUserFeedback', () { - final id = SentryId.newId(); - - // ignore: deprecated_member_use_from_same_package - final feedback = SentryUserFeedback( - eventId: id, - comments: 'this is awesome', - email: 'sentry@example.com', - name: 'Rockstar Developer', - unknown: testUnknown, - ); - final feedbackJson = { - 'event_id': id.toString(), - 'comments': 'this is awesome', - 'email': 'sentry@example.com', - 'name': 'Rockstar Developer', - }; - feedbackJson.addAll(testUnknown); - - test('toJson', () { - final json = feedback.toJson(); - expect( - MapEquality().equals(feedbackJson, json), - true, - ); - }); - - test('fromJson', () { - final feedback = SentryRuntime.fromJson(feedbackJson); - final json = feedback.toJson(); - - expect( - MapEquality().equals(feedbackJson, json), - true, - ); - }); - - test('copyWith', () { - final id = SentryId.newId(); - // ignore: deprecated_member_use_from_same_package - final feedback = SentryUserFeedback( - eventId: id, - comments: 'this is awesome', - email: 'sentry@example.com', - name: 'Rockstar Developer', - ); - - final copyId = SentryId.newId(); - final copy = feedback.copyWith( - eventId: copyId, - comments: 'actually it is not', - email: 'example@example.com', - name: '10x developer', - ); - - expect(copy.eventId.toString(), copyId.toString()); - expect(copy.comments, 'actually it is not'); - expect(copy.email, 'example@example.com'); - expect(copy.name, '10x developer'); - }); - - test('disallow empty id', () { - final id = SentryId.empty(); - // ignore: deprecated_member_use_from_same_package - expect(() => SentryUserFeedback(eventId: id), - throwsA(isA())); - }); - }); - - // ignore: deprecated_member_use_from_same_package - group('$SentryUserFeedback to envelops', () { - test('to envelope', () { - // ignore: deprecated_member_use_from_same_package - final feedback = SentryUserFeedback( - eventId: SentryId.newId(), - name: 'test', - ); - // ignore: deprecated_member_use_from_same_package - final envelope = SentryEnvelope.fromUserFeedback( - feedback, - SdkVersion(name: 'a', version: 'b'), - dsn: fakeDsn, - ); - - expect(envelope.items.length, 1); - expect( - envelope.items.first.header.type, - SentryItemType.userFeedback, - ); - expect(envelope.header.eventId.toString(), feedback.eventId.toString()); - expect(envelope.header.dsn, fakeDsn); - }); - }); - - // ignore: deprecated_member_use_from_same_package - test('sending $SentryUserFeedback', () async { - final fixture = Fixture(); - final sut = fixture.getSut(); - // ignore: deprecated_member_use_from_same_package - await sut.captureUserFeedback(SentryUserFeedback( - eventId: SentryId.newId(), - name: 'test', - )); - - expect(fixture.transport.envelopes.length, 1); - }); - - // ignore: deprecated_member_use_from_same_package - test('cannot create $SentryUserFeedback with empty id', () async { - expect( - // ignore: deprecated_member_use_from_same_package - () => SentryUserFeedback(eventId: const SentryId.empty()), - throwsA(isA()), - ); - }); - - // ignore: deprecated_member_use_from_same_package - test('do not send $SentryUserFeedback when disabled', () async { - final fixture = Fixture(); - final sut = fixture.getSut(); - await sut.close(); - // ignore: deprecated_member_use_from_same_package - await sut.captureUserFeedback( - // ignore: deprecated_member_use_from_same_package - SentryUserFeedback( - eventId: SentryId.newId(), - name: 'test', - ), - ); - - expect(fixture.transport.envelopes.length, 0); - }); - - // ignore: deprecated_member_use_from_same_package - test('do not send $SentryUserFeedback with empty id', () async { - final fixture = Fixture(); - final sut = fixture.getSut(); - await sut.close(); - // ignore: deprecated_member_use_from_same_package - await sut.captureUserFeedback( - SentryUserFeedbackWithoutAssert( - eventId: SentryId.empty(), - ), - ); - - expect(fixture.transport.envelopes.length, 0); - }); - - test('captureUserFeedback does not throw', () async { - final options = defaultTestOptions()..automatedTestMode = false; - final transport = ThrowingTransport(); - options.transport = transport; - final sut = Hub(options); - - await expectLater(() async { - // ignore: deprecated_member_use_from_same_package - await sut.captureUserFeedback( - // ignore: deprecated_member_use_from_same_package - SentryUserFeedback(eventId: SentryId.newId(), name: 'name'), - ); - }, returnsNormally); - }); -} - -class Fixture { - late MockTransport transport; - - Hub getSut() { - final options = defaultTestOptions(); - transport = MockTransport(); - options.transport = transport; - return Hub(options); - } -} - -// You cannot create an instance of SentryUserFeedback with an empty id. -// In order to test that UserFeedback with an empty id is not sent -// we need to implement it and remove the assert. -// ignore: deprecated_member_use_from_same_package -class SentryUserFeedbackWithoutAssert implements SentryUserFeedback { - SentryUserFeedbackWithoutAssert({ - required this.eventId, - this.name, - this.email, - this.comments, - this.unknown, - }); - - @override - final SentryId eventId; - - @override - final String? name; - - @override - final String? email; - - @override - final String? comments; - - @override - Map? unknown; - - @override - Map toJson() { - return { - ...?unknown, - 'event_id': eventId.toString(), - if (name != null) 'name': name, - if (email != null) 'email': email, - if (comments != null) 'comments': comments, - }; - } - - @override - // ignore: deprecated_member_use_from_same_package - SentryUserFeedback copyWith({ - SentryId? eventId, - String? name, - String? email, - String? comments, - }) { - // ignore: deprecated_member_use_from_same_package - return SentryUserFeedback( - eventId: eventId ?? this.eventId, - name: name ?? this.name, - email: email ?? this.email, - comments: comments ?? this.comments, - unknown: unknown, - ); - } -} diff --git a/dio/test/mocks/mock_hub.dart b/dio/test/mocks/mock_hub.dart index b40ee1ee22..1a011a3cf5 100644 --- a/dio/test/mocks/mock_hub.dart +++ b/dio/test/mocks/mock_hub.dart @@ -11,8 +11,6 @@ class MockHub with NoSuchMethodProvider implements Hub { List addBreadcrumbCalls = []; List bindClientCalls = []; - // ignore: deprecated_member_use - List userFeedbackCalls = []; List captureTransactionCalls = []; int closeCalls = 0; bool _isEnabled = true; @@ -123,12 +121,6 @@ class MockHub with NoSuchMethodProvider implements Hub { return transaction.eventId; } - @override - // ignore: deprecated_member_use - Future captureUserFeedback(SentryUserFeedback userFeedback) async { - userFeedbackCalls.add(userFeedback); - } - @override ISentrySpan? getSpan() { getSpanCalls++; diff --git a/drift/test/mocks/mocks.mocks.dart b/drift/test/mocks/mocks.mocks.dart index 25dcb269e5..86e37ed31b 100644 --- a/drift/test/mocks/mocks.mocks.dart +++ b/drift/test/mocks/mocks.mocks.dart @@ -190,14 +190,6 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), ) as _i5.Future<_i2.SentryId>); - @override - _i5.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => - (super.noSuchMethod( - Invocation.method(#captureUserFeedback, [userFeedback]), - returnValue: _i5.Future.value(), - returnValueForMissingStub: _i5.Future.value(), - ) as _i5.Future); - @override _i5.Future<_i2.SentryId> captureFeedback( _i2.SentryFeedback? feedback, { diff --git a/flutter/example/integration_test/integration_test.dart b/flutter/example/integration_test/integration_test.dart index 6fd6916b7d..2d5ba7eb23 100644 --- a/flutter/example/integration_test/integration_test.dart +++ b/flutter/example/integration_test/integration_test.dart @@ -84,25 +84,9 @@ void main() { expect(sentryId != const SentryId.empty(), true); }); - testWidgets('setup sentry and capture user feedback', (tester) async { - await setupSentryAndApp(tester); - - // ignore: deprecated_member_use_from_same_package - // ignore: deprecated_member_use - final feedback = SentryUserFeedback( - eventId: SentryId.newId(), - name: 'fixture-name', - email: 'fixture@email.com', - comments: 'fixture-comments'); - // ignore: deprecated_member_use - await Sentry.captureUserFeedback(feedback); - }); - testWidgets('setup sentry and capture feedback', (tester) async { await setupSentryAndApp(tester); - // ignore: deprecated_member_use_from_same_package - // ignore: deprecated_member_use final associatedEventId = await Sentry.captureMessage('Associated'); final feedback = SentryFeedback( message: 'message', diff --git a/flutter/test/mocks.mocks.dart b/flutter/test/mocks.mocks.dart index 876490bef7..8fb3aebc18 100644 --- a/flutter/test/mocks.mocks.dart +++ b/flutter/test/mocks.mocks.dart @@ -1054,14 +1054,6 @@ class MockSentryClient extends _i1.Mock implements _i2.SentryClient { returnValue: _i11.Future<_i2.SentryId?>.value(), ) as _i11.Future<_i2.SentryId?>); - @override - _i11.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => - (super.noSuchMethod( - Invocation.method(#captureUserFeedback, [userFeedback]), - returnValue: _i11.Future.value(), - returnValueForMissingStub: _i11.Future.value(), - ) as _i11.Future); - @override _i11.Future<_i2.SentryId> captureFeedback( _i2.SentryFeedback? feedback, { @@ -2701,14 +2693,6 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), ) as _i11.Future<_i2.SentryId>); - @override - _i11.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => - (super.noSuchMethod( - Invocation.method(#captureUserFeedback, [userFeedback]), - returnValue: _i11.Future.value(), - returnValueForMissingStub: _i11.Future.value(), - ) as _i11.Future); - @override _i11.Future<_i2.SentryId> captureFeedback( _i2.SentryFeedback? feedback, { diff --git a/hive/test/mocks/mocks.mocks.dart b/hive/test/mocks/mocks.mocks.dart index 208aa5a897..c972b7d196 100644 --- a/hive/test/mocks/mocks.mocks.dart +++ b/hive/test/mocks/mocks.mocks.dart @@ -9,19 +9,17 @@ import 'dart:typed_data' as _i9; import 'package:hive/hive.dart' as _i3; import 'package:hive/src/box/default_compaction_strategy.dart' as _i8; import 'package:hive/src/box/default_key_comparator.dart' as _i7; -import 'package:mockito/mockito.dart' as _i1; -import 'package:mockito/src/dummies.dart' as _i6; -import 'package:sentry/sentry.dart' as _i2; -import 'package:sentry/src/profiling.dart' as _i4; - -import 'package:hive/src/box_collection/box_collection_stub.dart' as stub; - // ignore: implementation_imports import 'package:hive/src/box_collection/box_collection_stub.dart' if (dart.library.html) 'package:hive/src/box_collection/box_collection_indexed_db.dart' if (dart.library.js_interop) 'package:hive/src/box_collection/box_collection_indexed_db.dart' if (dart.library.io) 'package:hive/src/box_collection/box_collection.dart' as impl; +import 'package:hive/src/box_collection/box_collection_stub.dart' as stub; +import 'package:mockito/mockito.dart' as _i1; +import 'package:mockito/src/dummies.dart' as _i6; +import 'package:sentry/sentry.dart' as _i2; +import 'package:sentry/src/profiling.dart' as _i4; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -207,14 +205,6 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), ) as _i5.Future<_i2.SentryId>); - @override - _i5.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => - (super.noSuchMethod( - Invocation.method(#captureUserFeedback, [userFeedback]), - returnValue: _i5.Future.value(), - returnValueForMissingStub: _i5.Future.value(), - ) as _i5.Future); - @override _i5.Future<_i2.SentryId> captureFeedback( _i2.SentryFeedback? feedback, { diff --git a/isar/test/mocks/mocks.mocks.dart b/isar/test/mocks/mocks.mocks.dart index edaac640cb..0efd118833 100644 --- a/isar/test/mocks/mocks.mocks.dart +++ b/isar/test/mocks/mocks.mocks.dart @@ -2,7 +2,7 @@ // in sentry_isar/test/mocks/mocks.dart. // Do not manually edit this file. -// ignore_for_file: no_leading_underscores_for_library_prefixes, invalid_use_of_internal_member +// ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; import 'dart:typed_data' as _i7; @@ -24,6 +24,7 @@ import 'package:sentry/src/profiling.dart' as _i5; // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types // ignore_for_file: subtype_of_sealed_class +// ignore_for_file: invalid_use_of_internal_member class _FakeSentryOptions_0 extends _i1.SmartFake implements _i2.SentryOptions { _FakeSentryOptions_0( @@ -287,17 +288,6 @@ class MockHub extends _i1.Mock implements _i2.Hub { )), ) as _i3.Future<_i2.SentryId>); - @override - _i3.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => - (super.noSuchMethod( - Invocation.method( - #captureUserFeedback, - [userFeedback], - ), - returnValue: _i3.Future.value(), - returnValueForMissingStub: _i3.Future.value(), - ) as _i3.Future); - @override _i3.Future<_i2.SentryId> captureFeedback( _i2.SentryFeedback? feedback, { diff --git a/sqflite/test/mocks/mocks.mocks.dart b/sqflite/test/mocks/mocks.mocks.dart index fb9d00f5b2..a7a3118fcf 100644 --- a/sqflite/test/mocks/mocks.mocks.dart +++ b/sqflite/test/mocks/mocks.mocks.dart @@ -28,6 +28,7 @@ import 'mocks.dart' as _i9; // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types // ignore_for_file: subtype_of_sealed_class +// ignore_for_file: invalid_use_of_internal_member class _FakeSentrySpanContext_0 extends _i1.SmartFake implements _i2.SentrySpanContext { @@ -94,7 +95,6 @@ class _FakeHub_11 extends _i1.SmartFake implements _i2.Hub { /// A class which mocks [SentryTracer]. /// /// See the documentation for Mockito's code generation for more information. -// ignore: invalid_use_of_internal_member class MockSentryTracer extends _i1.Mock implements _i5.SentryTracer { MockSentryTracer() { _i1.throwOnMissingStub(this); @@ -129,14 +129,12 @@ class MockSentryTracer extends _i1.Mock implements _i5.SentryTracer { ); @override - // ignore: invalid_use_of_internal_member set profiler(_i7.SentryProfiler? _profiler) => super.noSuchMethod( Invocation.setter(#profiler, _profiler), returnValueForMissingStub: null, ); @override - // ignore: invalid_use_of_internal_member set profileInfo(_i7.SentryProfileInfo? _profileInfo) => super.noSuchMethod( Invocation.setter(#profileInfo, _profileInfo), returnValueForMissingStub: null, @@ -1086,7 +1084,6 @@ class MockHub extends _i1.Mock implements _i2.Hub { ) as _i2.Scope); @override - // ignore: invalid_use_of_internal_member set profilerFactory(_i7.SentryProfilerFactory? value) => super.noSuchMethod( Invocation.setter(#profilerFactory, value), returnValueForMissingStub: null, @@ -1181,14 +1178,6 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), ) as _i4.Future<_i2.SentryId>); - @override - _i4.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => - (super.noSuchMethod( - Invocation.method(#captureUserFeedback, [userFeedback]), - returnValue: _i4.Future.value(), - returnValueForMissingStub: _i4.Future.value(), - ) as _i4.Future); - @override _i4.Future<_i2.SentryId> captureFeedback( _i2.SentryFeedback? feedback, {