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
8 changes: 4 additions & 4 deletions apps/flutter_client_contract_test_service/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -393,28 +393,28 @@ packages:
path: "../../packages/common_client"
relative: true
source: path
version: "1.4.1"
version: "1.5.0"
launchdarkly_dart_common:
dependency: "direct overridden"
description:
path: "../../packages/common"
relative: true
source: path
version: "1.3.0"
version: "1.4.0"
launchdarkly_event_source_client:
dependency: "direct overridden"
description:
path: "../../packages/event_source_client"
relative: true
source: path
version: "1.0.0"
version: "1.1.0"
launchdarkly_flutter_client_sdk:
dependency: "direct main"
description:
path: "../../packages/flutter_client_sdk"
relative: true
source: path
version: "4.9.0"
version: "4.10.0"
lints:
dependency: "direct dev"
description:
Expand Down
10 changes: 9 additions & 1 deletion apps/sse_contract_test_service/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ packages:
path: "../../packages/event_source_client"
relative: true
source: path
version: "1.0.0"
version: "1.1.0"
lints:
dependency: "direct dev"
description:
Expand Down Expand Up @@ -632,6 +632,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.0"
web:
dependency: transitive
description:
name: web
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
web_socket_channel:
dependency: transitive
description:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import '../../ld_logging.dart';
import 'stub_config.dart'
if (dart.library.io) 'io_config.dart'
if (dart.library.html) 'js_config.dart';
if (dart.library.js_interop) 'js_config.dart';

final class DefaultLoggingConfig {
final defaultLogLevel = LDLogLevel.info;
Expand Down
2 changes: 1 addition & 1 deletion packages/common/lib/src/network/http_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import '../config/defaults/common_default_config.dart';
import '../config/http_properties.dart';
import 'platform_client/stub_client.dart'
if (dart.library.io) 'platform_client/io_client.dart'
if (dart.library.html) 'platform_client/js_client.dart';
if (dart.library.js_interop) 'platform_client/js_client.dart';
import 'utils.dart';

/// Http requests methods supported by the HTTP client.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'stub_config.dart'
if (dart.library.io) 'io_config.dart'
if (dart.library.html) 'js_config.dart';
if (dart.library.js_interop) 'js_config.dart';

/// Configuration common to web and mobile is contained in this file.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import 'src/http_consts.dart';
import 'src/message_event.dart';
import 'src/sse_client_stub.dart'
if (dart.library.io) 'src/sse_client_http.dart'
if (dart.library.html) 'src/sse_client_html.dart';
if (dart.library.js_interop) 'src/sse_client_html.dart';

export 'src/message_event.dart' show MessageEvent;

Expand Down
28 changes: 15 additions & 13 deletions packages/event_source_client/lib/src/sse_client_html.dart
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import 'dart:async';
// ignore: deprecated_member_use
import 'dart:html' as html;
import 'dart:js_interop';
import 'package:web/web.dart' as web;
import 'dart:math' as math;

import '../launchdarkly_event_source_client.dart';

import 'backoff.dart';
import 'message_event.dart' as ld_message_event;

/// An [SSEClient] that uses the [html.EventSource] available on most browsers for web platform support.
/// An [SSEClient] that uses the [web.EventSource] available on most browsers for web platform support.
class HtmlSseClient implements SSEClient {
/// The underlying eventsource
html.EventSource? _eventSource;
web.EventSource? _eventSource;

/// This controller is for the events going to the subscribers of this client.
late final StreamController<ld_message_event.MessageEvent>
Expand Down Expand Up @@ -54,27 +54,29 @@ class HtmlSseClient implements SSEClient {
}

void _setupConnection() {
_eventSource = html.EventSource(_uri.toString());
_eventSource = web.EventSource(_uri.toString());

for (var eventType in _eventTypes) {
_eventSource?.addEventListener(eventType, _handleMessageEvent);
_eventSource?.addEventListener(eventType, _handleMessageEvent.toJS);
}
_eventSource?.addEventListener('error', _handleError);
_eventSource?.addEventListener('error', _handleError.toJS);
}

void _handleError(html.Event event) {
void _handleError(web.Event event) {
// The browser event source errors are reasonably opaque, if we could
// determine the type of condition, then this is where we would
// determine if this was a temporary or permanent failure.
restart();
}

void _handleMessageEvent(html.Event event) {
void _handleMessageEvent(web.Event event) {
_activeSince = DateTime.now().millisecondsSinceEpoch;
final messageEvent = event as html.MessageEvent;
final ldMessageEvent = ld_message_event.MessageEvent(
messageEvent.type, messageEvent.data, messageEvent.lastEventId);
_messageEventsController.sink.add(ldMessageEvent);
final messageEvent = event as web.MessageEvent;
if (messageEvent.data != null && messageEvent.data.typeofEquals('string')) {
final ldMessageEvent = ld_message_event.MessageEvent(messageEvent.type,
(messageEvent.data as JSString).toDart, messageEvent.lastEventId);
_messageEventsController.sink.add(ldMessageEvent);
}
}

/// Subscribe to this [stream] to receive events and sometimes errors. The first
Expand Down
1 change: 1 addition & 0 deletions packages/event_source_client/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ environment:

dependencies:
http: ^1.1.0
web: ^1.1.1

dev_dependencies:
test: ^1.24.3
Expand Down
32 changes: 16 additions & 16 deletions packages/flutter_client_sdk/example/.metadata
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,35 @@
# This file should be version controlled and should not be manually edited.

version:
revision: "0f7f08d5354856ea41930f2c178a96ca97518d5a"
channel: "master"
revision: "ea121f8859e4b13e47a8f845e4586164519588bc"
channel: "stable"

project_type: app

# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
base_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
create_revision: ea121f8859e4b13e47a8f845e4586164519588bc
base_revision: ea121f8859e4b13e47a8f845e4586164519588bc
- platform: android
create_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
base_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
create_revision: ea121f8859e4b13e47a8f845e4586164519588bc
base_revision: ea121f8859e4b13e47a8f845e4586164519588bc
- platform: ios
create_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
base_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
create_revision: ea121f8859e4b13e47a8f845e4586164519588bc
base_revision: ea121f8859e4b13e47a8f845e4586164519588bc
- platform: linux
create_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
base_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
create_revision: ea121f8859e4b13e47a8f845e4586164519588bc
base_revision: ea121f8859e4b13e47a8f845e4586164519588bc
- platform: macos
create_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
base_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
create_revision: ea121f8859e4b13e47a8f845e4586164519588bc
base_revision: ea121f8859e4b13e47a8f845e4586164519588bc
- platform: web
create_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
base_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
create_revision: ea121f8859e4b13e47a8f845e4586164519588bc
base_revision: ea121f8859e4b13e47a8f845e4586164519588bc
- platform: windows
create_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
base_revision: 0f7f08d5354856ea41930f2c178a96ca97518d5a
create_revision: ea121f8859e4b13e47a8f845e4586164519588bc
base_revision: ea121f8859e4b13e47a8f845e4586164519588bc

# User provided section

Expand Down
25 changes: 2 additions & 23 deletions packages/flutter_client_sdk/example/web/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<meta name="description" content="A new Flutter project.">

<!-- iOS meta tags & icons -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="example">
<link rel="apple-touch-icon" href="icons/Icon-192.png">
Expand All @@ -31,29 +31,8 @@

<title>example</title>
<link rel="manifest" href="manifest.json">

<script>
// The value below is injected by flutter build, do not touch.
const serviceWorkerVersion = null;
</script>
<!-- This script adds the flutter initialization JS code -->
<script src="flutter.js" defer></script>
</head>
<body>
<script>
window.addEventListener('load', function(ev) {
// Download main.dart.js
_flutter.loader.loadEntrypoint({
serviceWorker: {
serviceWorkerVersion: serviceWorkerVersion,
},
onEntrypointLoaded: function(engineInitializer) {
engineInitializer.initializeEngine().then(function(appRunner) {
appRunner.runApp();
});
}
});
});
</script>
<script src="flutter_bootstrap.js" async></script>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'stub_config.dart'
if (dart.library.io) 'io_config.dart'
if (dart.library.html) 'js_config.dart';
if (dart.library.js_interop) 'js_config.dart';

/// Configuration common to web and mobile is contained in this file.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:flutter/scheduler.dart';
import 'connection_manager.dart';
import 'lifecycle/stub_lifecycle_listener.dart'
if (dart.library.io) 'lifecycle/io_lifecycle_listener.dart'
if (dart.library.html) 'lifecycle/js_lifecycle_listener.dart';
if (dart.library.js_interop) 'lifecycle/js_lifecycle_listener.dart';

/// This class detects the application and network state for flutter.
final class FlutterStateDetector implements StateDetector {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'dart:async';
// ignore: deprecated_member_use
import 'dart:html' as html;
import 'dart:js_interop';
import 'package:web/web.dart' as web;

import 'package:flutter/widgets.dart';

Expand All @@ -12,17 +12,17 @@ class LDAppLifecycleListener {
LDAppLifecycleListener() {
_streamController = StreamController.broadcast();

void listenerFunc(event) =>
_streamController.add(html.document.hidden == true
void listenerFunc(web.Event event) =>
_streamController.add(web.document.hidden == true
? AppLifecycleState.hidden
: AppLifecycleState.resumed);

_streamController.onListen = () {
html.document.addEventListener('visibilitychange', listenerFunc);
web.document.addEventListener('visibilitychange', listenerFunc.toJS);
};

_streamController.onCancel = () {
html.document.removeEventListener('visibilitychange', listenerFunc);
web.document.removeEventListener('visibilitychange', listenerFunc.toJS);
};
}

Expand Down
1 change: 1 addition & 0 deletions packages/flutter_client_sdk/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dependencies:
launchdarkly_common_client: 1.4.1
shared_preferences: ^2.2.2
connectivity_plus: ">=5.0.2 <7.0.0"
web: ^1.1.1

dev_dependencies:
flutter_test:
Expand Down