From 5b9daebcf94aecd321a0b8ddaee141b0da9c309f Mon Sep 17 00:00:00 2001 From: TheOneWithTheBraid Date: Fri, 22 Jul 2022 17:06:50 +0200 Subject: [PATCH] chore: migrate to new Hive Signed-off-by: TheOneWithTheBraid --- .gitignore | 3 ++ .../settings_emotes/settings_emotes.dart | 3 +- lib/utils/client_manager.dart | 13 ++++++- pubspec.lock | 38 ++++++++++++++----- pubspec.yaml | 12 +++++- scripts/build-web.sh | 2 + web/worker.dart | 3 ++ 7 files changed, 60 insertions(+), 14 deletions(-) create mode 100644 web/worker.dart diff --git a/.gitignore b/.gitignore index 2f82071e..f4b2eb26 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,9 @@ lib/generated_plugin_registrant.dart docs/build/ docs/.jekyll-cache/ docs/_site/ +web/worker.js +web/worker.js.map +web/worker.js.deps # Exceptions to above rules. !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/lib/pages/settings_emotes/settings_emotes.dart b/lib/pages/settings_emotes/settings_emotes.dart index 708edfa7..43669ae3 100644 --- a/lib/pages/settings_emotes/settings_emotes.dart +++ b/lib/pages/settings_emotes/settings_emotes.dart @@ -7,6 +7,7 @@ import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:matrix/matrix.dart'; import 'package:vrouter/vrouter.dart'; +import 'package:fluffychat/utils/client_manager.dart'; import '../../widgets/matrix.dart'; import 'settings_emotes_view.dart'; @@ -206,7 +207,7 @@ class EmotesSettingsController extends State { ); try { file = (await file.generateThumbnail( - compute: Matrix.of(context).client.runInBackground, + nativeImplementations: ClientManager.nativeImplementations, ))!; } catch (_) { // do nothing diff --git a/lib/utils/client_manager.dart b/lib/utils/client_manager.dart index af80a616..6084307f 100644 --- a/lib/utils/client_manager.dart +++ b/lib/utils/client_manager.dart @@ -16,11 +16,20 @@ import 'matrix_sdk_extensions.dart/fluffybox_database.dart'; abstract class ClientManager { static const String clientNamespace = 'im.fluffychat.store.clients'; + + /// the expected native implementations for the device + static final nativeImplementations = kIsWeb + ? NativeImplementationsWebWorker(Uri.parse('native_executor.js')) + : NativeImplementationsIsolate(compute); + static Future> getClients({bool initialize = true}) async { if (PlatformInfos.isLinux) { Hive.init((await getApplicationSupportDirectory()).path); } else { - await Hive.initFlutter(); + await Hive.initFlutter( + null, + HiveStorageBackendPreference.webWorker('worker.js'), + ); } final clientNames = {}; try { @@ -109,7 +118,7 @@ abstract class ClientManager { PlatformInfos.isMacOS) AuthenticationTypes.sso }, - compute: compute, + nativeImplementations: nativeImplementations, customImageResizer: PlatformInfos.isMobile ? customImageResizer : null, ); } diff --git a/pubspec.lock b/pubspec.lock index b5c581ec..3f51381d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -262,6 +262,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.1" + cryptography: + dependency: transitive + description: + name: cryptography + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" csslib: dependency: transitive description: @@ -493,6 +500,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.8.1+3" + fixnum: + dependency: transitive + description: + name: fixnum + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" fluffybox: dependency: transitive description: @@ -834,18 +848,22 @@ packages: source: hosted version: "0.7.0" hive: - dependency: transitive + dependency: "direct overridden" description: - name: hive - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.1" + path: hive + ref: cacfc53dc1114491eaa3d3f3842312db910c1330 + resolved-ref: cacfc53dc1114491eaa3d3f3842312db910c1330 + url: "https://github.com/hivedb/hive.git" + source: git + version: "2.2.3" hive_flutter: dependency: "direct main" description: - name: hive_flutter - url: "https://pub.dartlang.org" - source: hosted + path: hive_flutter + ref: cacfc53dc1114491eaa3d3f3842312db910c1330 + resolved-ref: cacfc53dc1114491eaa3d3f3842312db910c1330 + url: "https://github.com/hivedb/hive.git" + source: git version: "1.1.0" html: dependency: transitive @@ -1063,7 +1081,7 @@ packages: name: matrix url: "https://pub.dartlang.org" source: hosted - version: "0.11.0" + version: "0.11.1" matrix_api_lite: dependency: transitive description: @@ -1240,7 +1258,7 @@ packages: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "2.0.9" + version: "2.0.11" path_provider_android: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 3c705c3b..7c213a76 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -61,7 +61,7 @@ dependencies: keyboard_shortcuts: ^0.1.4 localstorage: ^4.0.0+1 lottie: ^1.2.2 - matrix: ^0.11.0 + matrix: ^0.11.1 matrix_homeserver_recommendations: ^0.2.1 matrix_link_text: ^1.0.2 native_imaging: @@ -160,6 +160,16 @@ dependency_overrides: hosted: name: geolocator_android url: https://hanntech-gmbh.gitlab.io/free2pass/flutter-geolocator-floss + hive: + git: + url: https://github.com/hivedb/hive.git + path: hive + ref: cacfc53dc1114491eaa3d3f3842312db910c1330 + hive_flutter: + git: + url: https://github.com/hivedb/hive.git + path: hive_flutter + ref: cacfc53dc1114491eaa3d3f3842312db910c1330 # waiting for null safety # Upstream pull request: https://github.com/AntoineMarcel/keyboard_shortcuts/pull/13 keyboard_shortcuts: diff --git a/scripts/build-web.sh b/scripts/build-web.sh index a136aeea..e98b102a 100755 --- a/scripts/build-web.sh +++ b/scripts/build-web.sh @@ -3,3 +3,5 @@ flutter config --enable-web flutter clean flutter pub get flutter build web --release --verbose --source-maps +dart compile js ./web/worker.dart -o ./web/worker.js -m + diff --git a/web/worker.dart b/web/worker.dart new file mode 100644 index 00000000..250daadd --- /dev/null +++ b/web/worker.dart @@ -0,0 +1,3 @@ +import 'package:hive/hive.dart'; + +main() => startWebWorker();