Skip to content

Commit d6edcbb

Browse files
committed
separate web and non web components
1 parent 7156254 commit d6edcbb

File tree

8 files changed

+84
-32
lines changed

8 files changed

+84
-32
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import 'package:meta/meta.dart';
2+
import '../../../sentry_flutter.dart';
3+
import 'connectivity_provider.dart';
4+
5+
class ConnectivityIntegration extends Integration<SentryFlutterOptions> {
6+
Hub? _hub;
7+
ConnectivityProvider? _connectivityProvider;
8+
9+
@override
10+
void call(Hub hub, SentryFlutterOptions options) {
11+
_hub = hub;
12+
_connectivityProvider = ConnectivityProvider();
13+
_connectivityProvider?.listen((connectivity) {
14+
addBreadcrumb(connectivity);
15+
});
16+
options.sdk.addIntegration('connectivityIntegration');
17+
}
18+
19+
@override
20+
void close() {
21+
_hub = null;
22+
_connectivityProvider?.cancel();
23+
}
24+
25+
@internal
26+
@visibleForTesting
27+
void addBreadcrumb(String connectivity) {
28+
_hub?.addBreadcrumb(
29+
Breadcrumb(
30+
category: 'device.connectivity',
31+
level: SentryLevel.info,
32+
type: 'connectivity',
33+
data: {'connectivity': connectivity}),
34+
);
35+
}
36+
}
37+
38+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
import 'noop_connectivity_provider.dart'
3+
if (dart.library.html) 'web_connectivity_provider.dart';
4+
5+
abstract class ConnectivityProvider {
6+
factory ConnectivityProvider() => connectivityProvider();
7+
8+
void listen(void Function(String connectivity) onChange);
9+
void cancel();
10+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
2+
import 'connectivity_provider.dart';
3+
4+
ConnectivityProvider connectivityProvider() {
5+
return NoOpConnectivityProvider();
6+
}
7+
8+
class NoOpConnectivityProvider implements ConnectivityProvider {
9+
10+
@override
11+
void listen(void Function(String connectivity) onChange) {
12+
// NoOp
13+
}
14+
15+
@override
16+
void cancel() {
17+
// NoOp
18+
}
19+
}

flutter/lib/src/integrations/connectivity_integration.dart renamed to flutter/lib/src/integrations/connectivity/web_connectivity_provider.dart

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
import 'dart:async';
22
import 'dart:html' as html;
33

4-
import 'package:meta/meta.dart';
5-
import '../../sentry_flutter.dart';
4+
import 'connectivity_provider.dart';
5+
6+
ConnectivityProvider connectivityProvider() {
7+
return WebConnectivityProvider();
8+
}
9+
10+
class WebConnectivityProvider implements ConnectivityProvider {
611

7-
class ConnectivityIntegration extends Integration<SentryFlutterOptions> {
8-
Hub? _hub;
912
html.NetworkInformation? _networkInformation;
10-
String? _oldResult = 'none';
13+
String? _oldResult;
1114

1215
StreamSubscription<html.Event>? _networkInfoSub;
1316
StreamSubscription<html.Event>? _onOnlineSub;
1417
StreamSubscription<html.Event>? _onOfflineSub;
1518

1619
@override
17-
void call(Hub hub, SentryFlutterOptions options) {
18-
_hub = hub;
19-
20+
void listen(void Function(String connectivity) onChange) {
2021
final supportsNetworkInformation = html.window.navigator.connection != null;
2122
if (supportsNetworkInformation) {
2223
_networkInformation = html.window.navigator.connection;
@@ -26,26 +27,23 @@ class ConnectivityIntegration extends Integration<SentryFlutterOptions> {
2627
final newResult = _networkInformation?.toConnectivityResult();
2728
if (newResult != null && _oldResult != newResult) {
2829
_oldResult = newResult;
29-
addBreadcrumb(newResult);
30+
onChange(newResult);
3031
}
3132
});
3233
} else {
3334
// Fallback to onLine/onOffline API
3435
_oldResult = (html.window.navigator.onLine ?? false) ? 'wifi' : 'none';
3536
_onOnlineSub = html.window.onOnline.listen((_) {
36-
addBreadcrumb('wifi');
37+
onChange('wifi');
3738
});
3839
_onOfflineSub = html.window.onOffline.listen((_) {
39-
addBreadcrumb('none');
40+
onChange('none');
4041
});
4142
}
42-
options.sdk.addIntegration('connectivityIntegration');
4343
}
4444

4545
@override
46-
void close() {
47-
_hub = null;
48-
46+
void cancel() {
4947
_networkInfoSub?.cancel();
5048
_networkInfoSub = null;
5149

@@ -55,21 +53,9 @@ class ConnectivityIntegration extends Integration<SentryFlutterOptions> {
5553
_onOfflineSub?.cancel();
5654
_onOfflineSub = null;
5755

58-
_oldResult = 'none';
56+
_oldResult = null;
5957
_networkInformation = null;
6058
}
61-
62-
@internal
63-
@visibleForTesting
64-
void addBreadcrumb(String result) {
65-
_hub?.addBreadcrumb(
66-
Breadcrumb(
67-
category: 'device.connectivity',
68-
level: SentryLevel.info,
69-
type: 'connectivity',
70-
data: {'connectivity': result}),
71-
);
72-
}
7359
}
7460

7561
// Source: https://github.com/fluttercommunity/plus_plugins/blob/258f7b8b461f6d78028354f95d24014b240a80f0/packages/connectivity_plus/connectivity_plus/lib/src/web/utils/connectivity_result.dart#L8

flutter/lib/src/sentry_flutter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import '../sentry_flutter.dart';
99
import 'event_processor/android_platform_exception_event_processor.dart';
1010
import 'event_processor/flutter_exception_event_processor.dart';
1111
import 'event_processor/platform_exception_event_processor.dart';
12-
import 'integrations/connectivity_integration.dart';
12+
import 'integrations/connectivity/connectivity_integration.dart';
1313
import 'integrations/screenshot_integration.dart';
1414
import 'native/factory.dart';
1515
import 'native/native_scope_observer.dart';

flutter/pubspec.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ dependencies:
1919
package_info_plus: '>=1.0.0 <=5.0.1'
2020
meta: ^1.3.0
2121
ffi: ^2.0.0
22-
connectivity_plus: ^5.0.2
2322

2423
dev_dependencies:
2524
build_runner: ^2.4.2

flutter/test/integrations/connectivity_integration_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart';
33
import 'package:flutter_test/flutter_test.dart';
44
import 'package:mockito/mockito.dart';
55
import 'package:sentry/sentry.dart';
6-
import 'package:sentry_flutter/src/integrations/connectivity_integration.dart';
6+
import 'package:sentry_flutter/src/integrations/connectivity/connectivity_integration.dart';
77
import 'package:sentry_flutter/src/sentry_flutter_options.dart';
88

99
import '../mocks.dart';

flutter/test/sentry_flutter_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import 'package:flutter_test/flutter_test.dart';
44
import 'package:package_info_plus/package_info_plus.dart';
55
import 'package:sentry_flutter/sentry_flutter.dart';
6-
import 'package:sentry_flutter/src/integrations/connectivity_integration.dart';
6+
import 'package:sentry_flutter/src/integrations/connectivity/connectivity_integration.dart';
77
import 'package:sentry_flutter/src/integrations/integrations.dart';
88
import 'package:sentry_flutter/src/integrations/screenshot_integration.dart';
99
import 'package:sentry_flutter/src/profiling.dart';

0 commit comments

Comments
 (0)