From 15a8a3a0daa9ab23ddbd5713f646ab04e0dd9a6e Mon Sep 17 00:00:00 2001 From: Alexandre Roux Date: Sun, 15 Sep 2024 14:51:20 +0200 Subject: [PATCH] fix httpClientFactory on wasm --- app_http/dart_test.yaml | 6 ++++++ app_http/lib/src/app_http_universal.dart | 18 +++++------------- app_http/lib/src/platform/platform.dart | 3 +++ app_http/lib/src/platform/platform_io.dart | 4 ++++ app_http/lib/src/platform/platform_none.dart | 4 ++++ app_http/lib/src/platform/platform_web.dart | 4 ++++ app_http/test/app_http_test.dart | 8 ++++++-- 7 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 app_http/dart_test.yaml create mode 100644 app_http/lib/src/platform/platform.dart create mode 100644 app_http/lib/src/platform/platform_io.dart create mode 100644 app_http/lib/src/platform/platform_none.dart create mode 100644 app_http/lib/src/platform/platform_web.dart diff --git a/app_http/dart_test.yaml b/app_http/dart_test.yaml new file mode 100644 index 0000000..fa72dac --- /dev/null +++ b/app_http/dart_test.yaml @@ -0,0 +1,6 @@ +platforms: + - vm + - chrome +compilers: + - dart2js + - dart2wasm \ No newline at end of file diff --git a/app_http/lib/src/app_http_universal.dart b/app_http/lib/src/app_http_universal.dart index cd59ea2..88e3164 100644 --- a/app_http/lib/src/app_http_universal.dart +++ b/app_http/lib/src/app_http_universal.dart @@ -1,17 +1,9 @@ -import 'package:tekartik_app_http/app_http.dart'; -import 'package:tekartik_common_utils/env_utils.dart'; +import 'package:tekartik_http/http.dart'; -HttpClientFactory? _httpClientFactoryUniversal; +import 'platform/platform.dart' show httpClientFactoryUniversal; -/// The convenient client factory -HttpClientFactory get httpClientFactoryUniversal => - _httpClientFactoryUniversal ??= () { - if (isRunningAsJavascript) { - return httpClientFactoryBrowser; - } else { - return httpClientFactoryIo; - } - }(); +export 'platform/platform.dart' show httpClientFactoryUniversal; -// Compat +// Compat, prefer using httpClientFactoryUniversal +// @Deprecated('Use httpClientFactoryUniversal') HttpClientFactory get httpClientFactory => httpClientFactoryUniversal; diff --git a/app_http/lib/src/platform/platform.dart b/app_http/lib/src/platform/platform.dart new file mode 100644 index 0000000..28d765c --- /dev/null +++ b/app_http/lib/src/platform/platform.dart @@ -0,0 +1,3 @@ +export 'platform_none.dart' + if (dart.library.io) 'platform_io.dart' + if (dart.library.js_interop) 'platform_web.dart'; diff --git a/app_http/lib/src/platform/platform_io.dart b/app_http/lib/src/platform/platform_io.dart new file mode 100644 index 0000000..95c67eb --- /dev/null +++ b/app_http/lib/src/platform/platform_io.dart @@ -0,0 +1,4 @@ +import 'package:tekartik_http/http.dart'; +import 'package:tekartik_http_io/http_client_io.dart'; + +HttpClientFactory get httpClientFactoryUniversal => httpClientFactoryIo; diff --git a/app_http/lib/src/platform/platform_none.dart b/app_http/lib/src/platform/platform_none.dart new file mode 100644 index 0000000..6adb3af --- /dev/null +++ b/app_http/lib/src/platform/platform_none.dart @@ -0,0 +1,4 @@ +import 'package:tekartik_http/http.dart'; + +HttpClientFactory get httpClientFactoryUniversal => + throw UnsupportedError('HttpClientFactoryUniversal.none'); diff --git a/app_http/lib/src/platform/platform_web.dart b/app_http/lib/src/platform/platform_web.dart new file mode 100644 index 0000000..f0d45db --- /dev/null +++ b/app_http/lib/src/platform/platform_web.dart @@ -0,0 +1,4 @@ +import 'package:tekartik_http/http.dart'; +import 'package:tekartik_http_browser/http_client_browser.dart'; + +HttpClientFactory get httpClientFactoryUniversal => httpClientFactoryBrowser; diff --git a/app_http/test/app_http_test.dart b/app_http/test/app_http_test.dart index f852670..843e134 100644 --- a/app_http/test/app_http_test.dart +++ b/app_http/test/app_http_test.dart @@ -5,10 +5,14 @@ var simleJsonUrl = 'https://firebasestorage.googleapis.com/v0/b/tekartik-free-dev.appspot.com/o/test%2Fexpected%2Ftest.json?alt=media'; void main() { group('app_http', () { + test('compat', () { + expect(httpClientFactory, httpClientFactoryUniversal); + }); test('simple', () async { // If this fails, it is because the file has been removed from firebase storage - var response = - await httpClientFactory.newClient().get(Uri.parse(simleJsonUrl)); + var response = await httpClientFactoryUniversal + .newClient() + .get(Uri.parse(simleJsonUrl)); print(response.body); expect(response.statusCode, httpStatusCodeOk); });