diff --git a/.github/workflows/analyze-test.yaml b/.github/workflows/analyze-test.yaml index 60427c9d44..199df6f10b 100644 --- a/.github/workflows/analyze-test.yaml +++ b/.github/workflows/analyze-test.yaml @@ -8,6 +8,9 @@ on: name: Analyze and test +env: + FLUTTER_VERSION: 3.32.8 + jobs: analyze-test: runs-on: ubuntu-latest @@ -32,7 +35,7 @@ jobs: - name: Setup flutter uses: subosito/flutter-action@v2 with: - flutter-version: "3.27.4" + flutter-version: ${{ env.FLUTTER_VERSION }} channel: "stable" cache: true cache-key: "deps-${{ hashFiles('**/pubspec.lock') }}" diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 26a0d0876b..d32d939aba 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -6,7 +6,7 @@ on: name: Build dev binaries env: - FLUTTER_VERSION: 3.27.4 + FLUTTER_VERSION: 3.32.8 XCODE_VERSION: 16.0 jobs: diff --git a/.github/workflows/gh-pages.yaml b/.github/workflows/gh-pages.yaml index 64bf3ea546..b00085d004 100644 --- a/.github/workflows/gh-pages.yaml +++ b/.github/workflows/gh-pages.yaml @@ -6,7 +6,7 @@ on: name: Deploy PR on Github Pages env: - FLUTTER_VERSION: 3.27.4 + FLUTTER_VERSION: 3.32.8 concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/patrol-integration-test.yaml b/.github/workflows/patrol-integration-test.yaml index b7d59dbccb..e9a89f7440 100644 --- a/.github/workflows/patrol-integration-test.yaml +++ b/.github/workflows/patrol-integration-test.yaml @@ -7,7 +7,7 @@ on: env: JAVA_VERSION: 17 - FLUTTER_VERSION: 3.27.4 + FLUTTER_VERSION: 3.32.8 jobs: mobile_integration_test: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2007084457..65ec1bb0a2 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -6,7 +6,7 @@ on: name: Release env: - FLUTTER_VERSION: 3.27.4 + FLUTTER_VERSION: 3.32.8 XCODE_VERSION: 16.0 jobs: diff --git a/Dockerfile b/Dockerfile index 52bf78623d..fa35979b02 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,7 @@ -ARG FLUTTER_VERSION=3.27.4 +ARG FLUTTER_VERSION=3.32.8 # Stage 1 - Install dependencies and build the app # This matches the flutter version on our CI/CD pipeline on Github -# FROM --platform=amd64 ghcr.io/cirruslabs/flutter:${FLUTTER_VERSION} AS build-env FROM --platform=amd64 ghcr.io/instrumentisto/flutter:${FLUTTER_VERSION} AS build-env -# TODO: Revert back to cirruslabs when upgrade Flutter pass 3.27.4, as this tag is missing for cirruslabs # Set directory to Copy App WORKDIR /app diff --git a/android/app/build.gradle b/android/app/build.gradle index 2fe2071a2b..d51c3d681a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -35,6 +35,7 @@ if (keystorePropertiesFile.exists()) { android { compileSdk 35 + ndkVersion "28.2.13676358" sourceSets { main.java.srcDirs += 'src/main/kotlin' diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml index 7a68d1b864..f880684a6a 100644 --- a/android/app/src/debug/AndroidManifest.xml +++ b/android/app/src/debug/AndroidManifest.xml @@ -3,12 +3,4 @@ to allow setting breakpoints, to provide hot reload, etc. --> - - - - - diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 99702c146b..7b9ba35269 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -4,6 +4,9 @@ + diff --git a/android/gradle.properties b/android/gradle.properties index c0d3f63be4..005accfb27 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,7 +1,8 @@ -org.gradle.jvmargs=-Xmx1536M +org.gradle.jvmargs=-Xmx4096M android.useAndroidX=true android.enableJetifier=true android.jetifier.ignorelist=bcprov-jdk15on-1.68.jar android.defaults.buildfeatures.buildconfig=true android.nonTransitiveRClass=false -android.nonFinalResIds=false \ No newline at end of file +android.nonFinalResIds=false +kotlin.jvm.target.validation.mode = IGNORE \ No newline at end of file diff --git a/android/settings.gradle b/android/settings.gradle index 9d973ea166..1ab6b86203 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -18,7 +18,7 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version '8.4.1' apply false + id "com.android.application" version '8.5.2' apply false id "org.jetbrains.kotlin.android" version "1.9.21" apply false id "com.google.gms.google-services" version "4.3.10" apply false } diff --git a/contact/pubspec.lock b/contact/pubspec.lock index 6a28553b56..6b769c2623 100644 --- a/contact/pubspec.lock +++ b/contact/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" barcode: dependency: transitive description: @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -133,10 +133,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" charcode: dependency: transitive description: @@ -157,10 +157,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -173,10 +173,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" convert: dependency: transitive description: @@ -284,10 +284,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" ffi: dependency: transitive description: @@ -659,10 +659,10 @@ packages: dependency: transitive description: name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" url: "https://pub.dev" source: hosted - version: "0.19.0" + version: "0.20.2" io: dependency: transitive description: @@ -708,18 +708,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -756,10 +756,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -772,10 +772,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: transitive description: @@ -827,10 +827,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_parsing: dependency: transitive description: @@ -1073,26 +1073,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -1105,26 +1105,26 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" timing: dependency: transitive description: @@ -1265,10 +1265,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" watcher: dependency: transitive description: @@ -1334,5 +1334,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.6.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.27.0" diff --git a/core/lib/core.dart b/core/lib/core.dart index 26e13b64f2..d9a84ed798 100644 --- a/core/lib/core.dart +++ b/core/lib/core.dart @@ -49,7 +49,6 @@ export 'utils/platform_info.dart'; export 'utils/file_utils.dart'; export 'utils/option_param_mixin.dart'; export 'utils/print_utils.dart'; -export 'utils/broadcast_channel/broadcast_channel.dart'; export 'utils/list_utils.dart'; export 'utils/mail/domain.dart'; export 'utils/mail/mail_address.dart'; diff --git a/core/lib/presentation/views/image/image_loader_mixin.dart b/core/lib/presentation/views/image/image_loader_mixin.dart index 7c8656b618..3d8e760b32 100644 --- a/core/lib/presentation/views/image/image_loader_mixin.dart +++ b/core/lib/presentation/views/image/image_loader_mixin.dart @@ -1,5 +1,6 @@ import 'package:core/utils/app_logger.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -10,6 +11,10 @@ mixin ImageLoaderMixin { required String imagePath, double? imageSize }) { + log('$runtimeType::buildImage: imagePath = $imagePath'); + if (PlatformInfo.isIntegrationTesting) { + return buildNoImage(imageSize ?? 150); + } if (isImageNetworkLink(imagePath) && isImageSVG(imagePath)) { return SvgPicture.network( imagePath, @@ -19,6 +24,9 @@ mixin ImageLoaderMixin { placeholderBuilder: (_) { return const CupertinoActivityIndicator(); }, + errorBuilder: (_, __, ___) { + return buildNoImage(imageSize ?? 150); + }, ); } else if (isImageNetworkLink(imagePath)) { return Image.network( @@ -27,16 +35,10 @@ mixin ImageLoaderMixin { width: imageSize ?? 150, height: imageSize ?? 150, loadingBuilder: (_, child, loadingProgress) { - if (loadingProgress != null && - loadingProgress.cumulativeBytesLoaded != loadingProgress.expectedTotalBytes) { - return const Center( - child: CupertinoActivityIndicator(), - ); - } - return child; + if (loadingProgress == null) return child; + return const Center(child: CupertinoActivityIndicator()); }, - errorBuilder: (context, error, stackTrace) { - logError('ImageLoaderMixin::buildImage:Exception = $error'); + errorBuilder: (_, __, ___) { return buildNoImage(imageSize ?? 150); }, ); diff --git a/core/lib/utils/broadcast_channel/broadcast_channel.dart b/core/lib/utils/broadcast_channel/broadcast_channel.dart deleted file mode 100644 index 6ab539e562..0000000000 --- a/core/lib/utils/broadcast_channel/broadcast_channel.dart +++ /dev/null @@ -1 +0,0 @@ -export 'broadcast_channel_stub.dart' if (dart.library.html) 'broadcast_channel_web.dart'; \ No newline at end of file diff --git a/core/lib/utils/broadcast_channel/broadcast_channel_stub.dart b/core/lib/utils/broadcast_channel/broadcast_channel_stub.dart deleted file mode 100644 index 0bea5d5124..0000000000 --- a/core/lib/utils/broadcast_channel/broadcast_channel_stub.dart +++ /dev/null @@ -1,7 +0,0 @@ -class BroadcastChannel { - final String name; - - BroadcastChannel(this.name); - - Stream get onMessage => const Stream.empty(); -} \ No newline at end of file diff --git a/core/lib/utils/broadcast_channel/broadcast_channel_web.dart b/core/lib/utils/broadcast_channel/broadcast_channel_web.dart deleted file mode 100644 index 4235926e27..0000000000 --- a/core/lib/utils/broadcast_channel/broadcast_channel_web.dart +++ /dev/null @@ -1 +0,0 @@ -export 'dart:html' show BroadcastChannel; \ No newline at end of file diff --git a/core/pubspec.lock b/core/pubspec.lock index 27dc731528..ff2c31c8a7 100644 --- a/core/pubspec.lock +++ b/core/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" barcode: dependency: transitive description: @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -133,10 +133,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" charcode: dependency: transitive description: @@ -157,10 +157,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -173,10 +173,10 @@ packages: dependency: "direct main" description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" convert: dependency: transitive description: @@ -277,10 +277,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" ffi: dependency: transitive description: @@ -644,10 +644,10 @@ packages: dependency: "direct main" description: name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" url: "https://pub.dev" source: hosted - version: "0.19.0" + version: "0.20.2" io: dependency: transitive description: @@ -676,18 +676,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -724,10 +724,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -740,10 +740,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: transitive description: @@ -788,10 +788,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_parsing: dependency: transitive description: @@ -1018,26 +1018,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -1050,26 +1050,26 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" timing: dependency: transitive description: @@ -1202,10 +1202,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" watcher: dependency: transitive description: @@ -1215,7 +1215,7 @@ packages: source: hosted version: "1.1.0" web: - dependency: transitive + dependency: "direct main" description: name: web sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" @@ -1271,5 +1271,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.6.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.27.0" diff --git a/core/pubspec.yaml b/core/pubspec.yaml index beec847b06..4c10217ea5 100644 --- a/core/pubspec.yaml +++ b/core/pubspec.yaml @@ -75,9 +75,9 @@ dependencies: path_provider: 2.1.5 - collection: 1.19.0 + collection: 1.19.1 - intl: 0.19.0 + intl: 0.20.2 flutter_typeahead: 5.0.2 @@ -99,6 +99,8 @@ dependencies: html_unescape: 2.0.0 + web: 1.1.1 + dev_dependencies: flutter_test: sdk: flutter diff --git a/cozy/pubspec.lock b/cozy/pubspec.lock index 2c6aedd312..3fd5249570 100644 --- a/cozy/pubspec.lock +++ b/cozy/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" auto_size_text: dependency: transitive description: @@ -29,34 +29,34 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" characters: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" clock: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" collection: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" equatable: dependency: transitive description: @@ -69,10 +69,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" flutter: dependency: "direct main" description: flutter @@ -172,18 +172,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -197,7 +197,7 @@ packages: description: path: "." ref: master - resolved-ref: "17879a3de917152eb5473058ef2c3302d2c01f3e" + resolved-ref: "66d09a271f20243badd92352a8bb5866b430020d" url: "https://github.com/linagora/linagora-design-flutter.git" source: git version: "0.0.1" @@ -213,10 +213,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -229,18 +229,18 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" path: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_parsing: dependency: transitive description: @@ -249,14 +249,54 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + permission_handler: + dependency: transitive + description: + name: permission_handler + sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 + url: "https://pub.dev" + source: hosted + version: "12.0.1" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" + url: "https://pub.dev" + source: hosted + version: "13.0.1" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 + url: "https://pub.dev" + source: hosted + version: "9.4.7" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" + url: "https://pub.dev" + source: hosted + version: "0.1.3+5" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4" + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 url: "https://pub.dev" source: hosted - version: "3.12.0" + version: "4.3.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + url: "https://pub.dev" + source: hosted + version: "0.2.1" petitparser: dependency: transitive description: @@ -298,50 +338,50 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" string_scanner: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" typed_data: dependency: transitive description: @@ -386,10 +426,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" web: dependency: transitive description: @@ -407,5 +447,5 @@ packages: source: hosted version: "6.5.0" sdks: - dart: ">=3.6.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.27.0" diff --git a/email_recovery/pubspec.lock b/email_recovery/pubspec.lock index 0d1128f4af..5337408e8b 100644 --- a/email_recovery/pubspec.lock +++ b/email_recovery/pubspec.lock @@ -29,18 +29,18 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -109,10 +109,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -141,10 +141,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" convert: dependency: transitive description: @@ -197,10 +197,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" file: dependency: transitive description: @@ -328,18 +328,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -368,10 +368,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -384,10 +384,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: transitive description: @@ -416,10 +416,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" pool: dependency: transitive description: @@ -493,26 +493,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -525,26 +525,26 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" timing: dependency: transitive description: @@ -573,10 +573,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" watcher: dependency: transitive description: @@ -602,5 +602,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.4.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/fcm/pubspec.lock b/fcm/pubspec.lock index 33c3885a02..073e3e1394 100644 --- a/fcm/pubspec.lock +++ b/fcm/pubspec.lock @@ -29,18 +29,18 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -109,10 +109,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -141,10 +141,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" convert: dependency: transitive description: @@ -197,10 +197,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" file: dependency: transitive description: @@ -328,18 +328,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -368,10 +368,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -384,10 +384,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: transitive description: @@ -416,10 +416,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" pool: dependency: transitive description: @@ -493,26 +493,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -525,26 +525,26 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" timing: dependency: transitive description: @@ -573,10 +573,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" watcher: dependency: transitive description: @@ -602,5 +602,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.4.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/forward/pubspec.lock b/forward/pubspec.lock index 33c3885a02..073e3e1394 100644 --- a/forward/pubspec.lock +++ b/forward/pubspec.lock @@ -29,18 +29,18 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -109,10 +109,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -141,10 +141,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" convert: dependency: transitive description: @@ -197,10 +197,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" file: dependency: transitive description: @@ -328,18 +328,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -368,10 +368,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -384,10 +384,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: transitive description: @@ -416,10 +416,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" pool: dependency: transitive description: @@ -493,26 +493,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -525,26 +525,26 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" timing: dependency: transitive description: @@ -573,10 +573,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" watcher: dependency: transitive description: @@ -602,5 +602,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.4.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/integration_test/mixin/scenario_utils_mixin.dart b/integration_test/mixin/scenario_utils_mixin.dart index 06c2b69b6f..bc1c4ea2b6 100644 --- a/integration_test/mixin/scenario_utils_mixin.dart +++ b/integration_test/mixin/scenario_utils_mixin.dart @@ -4,7 +4,7 @@ import 'dart:io' hide HttpClient; import 'package:collection/collection.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:flutter/services.dart'; +import 'package:flutter/widgets.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/http/http_client.dart'; import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart'; @@ -282,7 +282,7 @@ mixin ScenarioUtilsMixin { IdentityInteractorsBindings().dispose(); } - Future hideKeyboard() async { - await SystemChannels.textInput.invokeMethod('TextInput.hide'); + void hideKeyboard() { + FocusManager.instance.primaryFocus?.unfocus(); } } diff --git a/integration_test/robots/composer_robot.dart b/integration_test/robots/composer_robot.dart index db02d3a228..7e72a3c60f 100644 --- a/integration_test/robots/composer_robot.dart +++ b/integration_test/robots/composer_robot.dart @@ -14,6 +14,7 @@ import 'package:tmail_ui_user/features/composer/domain/state/download_image_as_b import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart'; import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart'; import 'package:tmail_ui_user/features/composer/presentation/view/mobile/mobile_editor_view.dart'; +import 'package:tmail_ui_user/features/composer/presentation/widgets/list_recipients_collapsed_widget.dart'; import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/app_bar_composer_widget.dart'; import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/from_composer_mobile_widget.dart'; import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_composer_widget.dart'; @@ -29,6 +30,10 @@ import '../extensions/patrol_finder_extension.dart'; class ComposerRobot extends CoreRobot { ComposerRobot(super.$); + Future expandRecipientsFields() async { + await $(RecipientsCollapsedComposerWidget).$(GestureDetector).tap(); + } + Future addRecipientIntoField({ required PrefixEmailAddress prefixEmailAddress, required String email, diff --git a/integration_test/robots/email_robot.dart b/integration_test/robots/email_robot.dart index 92f8702353..63811fdfb0 100644 --- a/integration_test/robots/email_robot.dart +++ b/integration_test/robots/email_robot.dart @@ -16,7 +16,7 @@ class EmailRobot extends CoreRobot { } Future tapDownloadAllButton() async { - await $(AppLocalizations().archiveAndDownload).tap(); + await $(#download_all_attachments_button).tap(); await $.pumpAndSettle(); } diff --git a/integration_test/scenarios/app_grid_scenario.dart b/integration_test/scenarios/app_grid_scenario.dart index 9f975649e9..cfa72886f6 100644 --- a/integration_test/scenarios/app_grid_scenario.dart +++ b/integration_test/scenarios/app_grid_scenario.dart @@ -16,6 +16,7 @@ class AppGridScenario extends BaseTestScenario { @override Future runTestLogic() async { + PlatformInfo.isIntegrationTesting = true; final threadRobot = ThreadRobot($); final mailboxMenuRobot = MailboxMenuRobot($); final appGridRobot = AppGridRobot($); @@ -52,6 +53,7 @@ class AppGridScenario extends BaseTestScenario { } else if (PlatformInfo.isIOS) { await _expectMailboxViewInVisible(); } + PlatformInfo.isIntegrationTesting = false; } Future _expectMailboxViewVisible() => expectViewVisible($(MailboxView)); diff --git a/integration_test/scenarios/composer/upload_attachment_and_inline_image_scenario.dart b/integration_test/scenarios/composer/upload_attachment_and_inline_image_scenario.dart index a3be373498..fd10387adc 100644 --- a/integration_test/scenarios/composer/upload_attachment_and_inline_image_scenario.dart +++ b/integration_test/scenarios/composer/upload_attachment_and_inline_image_scenario.dart @@ -31,7 +31,7 @@ class ComposerUploadAttachmentAndInlineImageScenario extends BaseTestScenario { await _expectAttachment(pngName); await composerRobot.addInline(png); - await $.pumpAndSettle(); + await $.pumpAndSettle(duration: const Duration(seconds: 1)); await _expectInline(); await composerRobot.addAttachment(png); diff --git a/integration_test/scenarios/email/reply_to_own_sent_email_scenario.dart b/integration_test/scenarios/email/reply_to_own_sent_email_scenario.dart index fcae1e0a53..dbb87917f7 100644 --- a/integration_test/scenarios/email/reply_to_own_sent_email_scenario.dart +++ b/integration_test/scenarios/email/reply_to_own_sent_email_scenario.dart @@ -1,9 +1,11 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:model/email/prefix_email_address.dart'; +import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart'; import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_composer_widget.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import '../../base/base_test_scenario.dart'; +import '../../robots/composer_robot.dart'; import '../../robots/email_robot.dart'; import '../../robots/mailbox_menu_robot.dart'; import '../../robots/thread_robot.dart'; @@ -19,6 +21,7 @@ class ReplyToOwnSentEmailScenario extends BaseTestScenario { final threadRobot = ThreadRobot($); final mailboxMenuRobot = MailboxMenuRobot($); final emailRobot = EmailRobot($); + final composerRobot = ComposerRobot($); final sendEmailScenario = SendEmailScenario($, customSubject: subject); final appLocalizations = AppLocalizations(); @@ -29,9 +32,20 @@ class ReplyToOwnSentEmailScenario extends BaseTestScenario { ); await threadRobot.openEmailWithSubject(subject); await emailRobot.onTapReplyEmail(); + await _expectComposerViewVisible(); + + await composerRobot.grantContactPermission(); + + await composerRobot.expandRecipientsFields(); + await $.pumpAndSettle(); + _expectToFieldContainListEmailAddressCorrectly(); } + Future _expectComposerViewVisible() async { + await expectViewVisible($(ComposerView)); + } + void _expectToFieldContainListEmailAddressCorrectly() { expect( $(RecipientComposerWidget).which((widget) => diff --git a/integration_test/scenarios/email_detailed/compose_email_from_email_address_scenario.dart b/integration_test/scenarios/email_detailed/compose_email_from_email_address_scenario.dart index 055950732e..76fd93bfb2 100644 --- a/integration_test/scenarios/email_detailed/compose_email_from_email_address_scenario.dart +++ b/integration_test/scenarios/email_detailed/compose_email_from_email_address_scenario.dart @@ -49,6 +49,9 @@ class ComposeEmailFromEmailAddressScenario extends BaseTestScenario { await composerRobot.grantContactPermission(); + await composerRobot.expandRecipientsFields(); + await $.pumpAndSettle(); + await _expectToFieldContainListEmailAddressCorrectly(emailUser); } diff --git a/integration_test/scenarios/email_detailed/deformed_inlined_image_scenario.dart b/integration_test/scenarios/email_detailed/deformed_inlined_image_scenario.dart index 2e25e74008..d5e3761ecd 100644 --- a/integration_test/scenarios/email_detailed/deformed_inlined_image_scenario.dart +++ b/integration_test/scenarios/email_detailed/deformed_inlined_image_scenario.dart @@ -1,9 +1,8 @@ import 'package:core/presentation/views/html_viewer/html_content_viewer_widget.dart'; import 'package:core/utils/app_logger.dart'; import 'package:core/utils/platform_info.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart'; -import 'package:tmail_ui_user/features/email/presentation/email_view.dart'; import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart'; import '../../base/base_test_scenario.dart'; @@ -121,10 +120,12 @@ class DeformedInlinedImageScenario extends BaseTestScenario { } Future _expectEmailViewDisplaysNormalizedInlineImages() async { + GlobalKey? htmlContentViewKey; HtmlContentViewer? htmlContentViewer; await $(HtmlContentViewer) .which((view) { htmlContentViewer = view; + htmlContentViewKey = view.key as GlobalKey; return true; }) .first @@ -133,17 +134,6 @@ class DeformedInlinedImageScenario extends BaseTestScenario { log('DeformedInlinedImageScenario::_expectEmailViewDisplaysNormalizedInlineImages:initialWidth = ${htmlContentViewer?.initialWidth}'); expect(htmlContentViewer?.contentHtml.isNotEmpty, isTrue); - SingleEmailController? emailController; - await $(EmailView) - .which((view) { - emailController = view.controller; - return true; - }) - .first - .tap(); - expect(emailController, isNotNull); - - final htmlContentViewKey = emailController?.htmlContentViewKey; expect(htmlContentViewKey, isNotNull); final result = await htmlContentViewKey!.currentState!.webViewController.evaluateJavascript( diff --git a/integration_test/scenarios/email_detailed/forwarding_email_lost_attachments_scenario.dart b/integration_test/scenarios/email_detailed/forwarding_email_lost_attachments_scenario.dart index 2b107f58ab..01b5003984 100644 --- a/integration_test/scenarios/email_detailed/forwarding_email_lost_attachments_scenario.dart +++ b/integration_test/scenarios/email_detailed/forwarding_email_lost_attachments_scenario.dart @@ -55,6 +55,10 @@ class ForwardingEmailLostAttachmentsScenario extends BaseTestScenario { await _expectComposerViewVisible(); await composerRobot.grantContactPermission(); + + await composerRobot.expandRecipientsFields(); + await $.pumpAndSettle(); + await composerRobot.addRecipientIntoField( prefixEmailAddress: PrefixEmailAddress.to, email: emailUser, diff --git a/integration_test/scenarios/email_detailed/reply_all_email_scenario.dart b/integration_test/scenarios/email_detailed/reply_all_email_scenario.dart index 109481ac9c..e2372a203b 100644 --- a/integration_test/scenarios/email_detailed/reply_all_email_scenario.dart +++ b/integration_test/scenarios/email_detailed/reply_all_email_scenario.dart @@ -44,6 +44,9 @@ class ReplyAllEmailScenario extends BaseTestScenario { await composerRobot.grantContactPermission(); + await composerRobot.expandRecipientsFields(); + await $.pumpAndTrySettle(); + await _expectComposerSubjectDisplayedCorrectly(appLocalizations); await _expectToFieldContainListEmailAddressCorrectly(); await _expectCcFieldContainListEmailAddressCorrectly(); diff --git a/integration_test/scenarios/email_detailed/reply_email_with_reply_to_scenario.dart b/integration_test/scenarios/email_detailed/reply_email_with_reply_to_scenario.dart index a434b093ff..feaf60b8cc 100644 --- a/integration_test/scenarios/email_detailed/reply_email_with_reply_to_scenario.dart +++ b/integration_test/scenarios/email_detailed/reply_email_with_reply_to_scenario.dart @@ -44,6 +44,9 @@ class ReplyEmailWithReplyToScenario extends BaseTestScenario { await composerRobot.grantContactPermission(); + await composerRobot.expandRecipientsFields(); + await $.pumpAndTrySettle(); + await _expectComposerSubjectDisplayedCorrectly(appLocalizations); await _expectToFieldContainReplyToEmailAddress(); } diff --git a/integration_test/scenarios/email_detailed/reply_email_without_reply_to_scenario.dart b/integration_test/scenarios/email_detailed/reply_email_without_reply_to_scenario.dart index e2cf591741..ec504c191a 100644 --- a/integration_test/scenarios/email_detailed/reply_email_without_reply_to_scenario.dart +++ b/integration_test/scenarios/email_detailed/reply_email_without_reply_to_scenario.dart @@ -44,6 +44,9 @@ class ReplyEmailWithoutReplyToScenario extends BaseTestScenario { await composerRobot.grantContactPermission(); + await composerRobot.expandRecipientsFields(); + await $.pumpAndTrySettle(); + await _expectComposerSubjectDisplayedCorrectly(appLocalizations); await _expectToFieldContainFromEmailAddress(); } diff --git a/integration_test/scenarios/email_detailed/reply_to_list_email_scenario.dart b/integration_test/scenarios/email_detailed/reply_to_list_email_scenario.dart index 98ea2c8e10..6a705a27c4 100644 --- a/integration_test/scenarios/email_detailed/reply_to_list_email_scenario.dart +++ b/integration_test/scenarios/email_detailed/reply_to_list_email_scenario.dart @@ -44,6 +44,9 @@ class ReplyToListEmailScenario extends BaseTestScenario { await composerRobot.grantContactPermission(); + await composerRobot.expandRecipientsFields(); + await $.pumpAndTrySettle(); + await _expectComposerSubjectDisplayedCorrectly(appLocalizations); await _expectToFieldContainListPostEmailAddress(); } diff --git a/integration_test/scenarios/mailbox/long_press_empty_and_recover_spam_scenario.dart b/integration_test/scenarios/mailbox/long_press_empty_and_recover_spam_scenario.dart index 24c5e731f4..c807adc3a7 100644 --- a/integration_test/scenarios/mailbox/long_press_empty_and_recover_spam_scenario.dart +++ b/integration_test/scenarios/mailbox/long_press_empty_and_recover_spam_scenario.dart @@ -70,6 +70,7 @@ class LongPressEmptyAndRecoverSpamScenario extends BaseTestScenario { } Future _expectEmailWithSubjectVisible(String subject) async { + await $.scrollUntilVisible(finder: $(subject)); await expectViewVisible($(subject)); } diff --git a/integration_test/scenarios/mailbox/long_press_empty_and_recover_trash_scenario.dart b/integration_test/scenarios/mailbox/long_press_empty_and_recover_trash_scenario.dart index 86f786c0ea..41d2b82dbc 100644 --- a/integration_test/scenarios/mailbox/long_press_empty_and_recover_trash_scenario.dart +++ b/integration_test/scenarios/mailbox/long_press_empty_and_recover_trash_scenario.dart @@ -68,6 +68,7 @@ class LongPressEmptyAndRecoverTrashScenario extends BaseTestScenario { } Future _expectEmailWithSubjectVisible(String subject) async { + await $.scrollUntilVisible(finder: $(subject)); await expectViewVisible($(subject)); } diff --git a/integration_test/scenarios/mailbox/pull_to_refresh_scenario.dart b/integration_test/scenarios/mailbox/pull_to_refresh_scenario.dart index 0a9fd8a556..ed7c8d5199 100644 --- a/integration_test/scenarios/mailbox/pull_to_refresh_scenario.dart +++ b/integration_test/scenarios/mailbox/pull_to_refresh_scenario.dart @@ -37,11 +37,11 @@ class PullToRefreshScenario extends BaseTestScenario { _expectEmailWithSubjectInvisible(visibleAfterPullToRefresh); await threadRobot.pullToRefreshByEmailSubject(visibleBeforePullToRefresh); - _expectEmailWithSubjectVisible(visibleAfterPullToRefresh); + await _expectEmailWithSubjectVisible(visibleAfterPullToRefresh); } - _expectEmailWithSubjectVisible(String subject) { - expect($(subject), findsOneWidget); + Future _expectEmailWithSubjectVisible(String subject) async { + await expectViewVisible($(subject)); } _expectEmailWithSubjectInvisible(String subject) { diff --git a/integration_test/scenarios/reply_email_with_content_contain_image_base64_data_scenario.dart b/integration_test/scenarios/reply_email_with_content_contain_image_base64_data_scenario.dart index b0fc701a22..74a488e47c 100644 --- a/integration_test/scenarios/reply_email_with_content_contain_image_base64_data_scenario.dart +++ b/integration_test/scenarios/reply_email_with_content_contain_image_base64_data_scenario.dart @@ -46,6 +46,9 @@ class ReplyEmailWithContentContainImageBase64DataScenario extends BaseTestScenar await composerRobot.grantContactPermission(); + await composerRobot.expandRecipientsFields(); + await $.pumpAndSettle(); + await composerRobot.addRecipientIntoField( prefixEmailAddress: PrefixEmailAddress.to, email: emailUser, diff --git a/integration_test/scenarios/save_as_template_scenario.dart b/integration_test/scenarios/save_as_template_scenario.dart index 95586bd817..368573f8b4 100644 --- a/integration_test/scenarios/save_as_template_scenario.dart +++ b/integration_test/scenarios/save_as_template_scenario.dart @@ -17,11 +17,12 @@ class SaveAsTemplateScenario extends BaseTestScenario { await composerRobot.grantContactPermission(); await composerRobot.saveAsTemplate(); - + await $.pumpAndTrySettle(); await _expectSaveToastSuccessVisible(); await composerRobot.addSubject('test subject'); - await hideKeyboard(); + hideKeyboard(); + await $.pumpAndTrySettle(duration: const Duration(seconds: 1)); await composerRobot.saveAsTemplate(); await _expectUpdateToastSuccessVisible(); diff --git a/integration_test/scenarios/search/persist_filter_when_change_search_input_text_scenario.dart b/integration_test/scenarios/search/persist_filter_when_change_search_input_text_scenario.dart index 59baed91fe..6282ed54f5 100644 --- a/integration_test/scenarios/search/persist_filter_when_change_search_input_text_scenario.dart +++ b/integration_test/scenarios/search/persist_filter_when_change_search_input_text_scenario.dart @@ -14,7 +14,7 @@ class PersistFilterWhenChangeSearchInputTextScenario Future runTestLogic() async { const email = String.fromEnvironment('BASIC_AUTH_EMAIL'); const subject = 'Persist search filter'; - const queryStringFirst = 'Persist'; + const queryStringFirst = 'Persist search filter'; const queryStringSecond = 'Persist search'; final threadRobot = ThreadRobot($); diff --git a/ios/.gitignore b/ios/.gitignore index e96ef602b8..da38b0877b 100644 --- a/ios/.gitignore +++ b/ios/.gitignore @@ -24,6 +24,7 @@ Flutter/flutter_assets/ Flutter/flutter_export_environment.sh ServiceDefinitions.json Runner/GeneratedPluginRegistrant.* +Flutter/ephemeral/ # Exceptions to above rules. !default.mode1v3 diff --git a/ios/Podfile b/ios/Podfile index 8148d12783..b38c1ac3b0 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '12.0' +platform :ios, '14.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 07e29a3c0e..e4b97aa4dc 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -9,8 +9,6 @@ PODS: - AppAuth/Core (2.0.0) - AppAuth/ExternalUserAgent (2.0.0): - AppAuth/Core - - better_open_file (0.0.1): - - Flutter - CocoaAsyncSocket (7.6.5) - connectivity_plus (0.0.1): - Flutter @@ -52,6 +50,8 @@ PODS: - SwiftyGif - external_app_launcher (0.0.1): - Flutter + - external_path (2.0.1): + - Flutter - file_picker (0.0.1): - DKImagePickerController/PhotoGallery - Flutter @@ -176,6 +176,8 @@ PODS: - nanopb/encode (= 2.30909.1) - nanopb/decode (2.30909.1) - nanopb/encode (2.30909.1) + - open_file_ios (0.0.1): + - Flutter - OrderedSet (6.0.3) - package_info_plus (0.4.5): - Flutter @@ -186,10 +188,10 @@ PODS: - CocoaAsyncSocket (~> 7.6) - Flutter - FlutterMacOS - - pdfrx (0.0.3): + - pdfrx (0.0.6): - Flutter - FlutterMacOS - - permission_handler_apple (9.1.1): + - permission_handler_apple (9.3.0): - Flutter - photo_manager (2.0.0): - Flutter @@ -217,17 +219,17 @@ PODS: - UniversalDetector2 (2.0.1) - url_launcher_ios (0.0.1): - Flutter - - workmanager (0.0.1): + - workmanager_apple (0.0.1): - Flutter DEPENDENCIES: - app_links (from `.symlinks/plugins/app_links/ios`) - app_settings (from `.symlinks/plugins/app_settings/ios`) - - better_open_file (from `.symlinks/plugins/better_open_file/ios`) - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) - contacts_service (from `.symlinks/plugins/contacts_service/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - external_app_launcher (from `.symlinks/plugins/external_app_launcher/ios`) + - external_path (from `.symlinks/plugins/external_path/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) @@ -245,6 +247,7 @@ DEPENDENCIES: - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - flutter_web_auth_2 (from `.symlinks/plugins/flutter_web_auth_2/ios`) - lottie_native (from `.symlinks/plugins/lottie_native/ios`) + - open_file_ios (from `.symlinks/plugins/open_file_ios/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - patrol (from `.symlinks/plugins/patrol/darwin`) @@ -257,7 +260,7 @@ DEPENDENCIES: - share_plus (from `.symlinks/plugins/share_plus/ios`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - - workmanager (from `.symlinks/plugins/workmanager/ios`) + - workmanager_apple (from `.symlinks/plugins/workmanager_apple/ios`) SPEC REPOS: trunk: @@ -289,8 +292,6 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/app_links/ios" app_settings: :path: ".symlinks/plugins/app_settings/ios" - better_open_file: - :path: ".symlinks/plugins/better_open_file/ios" connectivity_plus: :path: ".symlinks/plugins/connectivity_plus/ios" contacts_service: @@ -299,6 +300,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/device_info_plus/ios" external_app_launcher: :path: ".symlinks/plugins/external_app_launcher/ios" + external_path: + :path: ".symlinks/plugins/external_path/ios" file_picker: :path: ".symlinks/plugins/file_picker/ios" firebase_core: @@ -333,6 +336,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/flutter_web_auth_2/ios" lottie_native: :path: ".symlinks/plugins/lottie_native/ios" + open_file_ios: + :path: ".symlinks/plugins/open_file_ios/ios" package_info_plus: :path: ".symlinks/plugins/package_info_plus/ios" path_provider_foundation: @@ -357,70 +362,71 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/shared_preferences_foundation/darwin" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" - workmanager: - :path: ".symlinks/plugins/workmanager/ios" + workmanager_apple: + :path: ".symlinks/plugins/workmanager_apple/ios" SPEC CHECKSUMS: - app_links: e7a6750a915a9e161c58d91bc610e8cd1d4d0ad0 - app_settings: 017320c6a680cdc94c799949d95b84cb69389ebc + app_links: 3da4c36b46cac3bf24eb897f1a6ce80bda109874 + app_settings: 3507c575c2b18a462c99948f61d5de21d4420999 AppAuth: 1c1a8afa7e12f2ec3a294d9882dfa5ab7d3cb063 - better_open_file: 03cf320415d4d3f46b6e00adc4a567d76c1a399d CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 - connectivity_plus: 07c49e96d7fc92bc9920617b83238c4d178b446a - contacts_service: 849e1f84281804c8bfbec1b4c3eedcb23c5d3eca - device_info_plus: 7545d84d8d1b896cb16a4ff98c19f07ec4b298ea + connectivity_plus: 4d5101c5877bedcda6cd1ccb825307911667d6b0 + contacts_service: 7c2ed10147f55891576c6a582f431e385d8de92d + device_info_plus: 8b1a7b1cce194cd48521ee7159feb70453ed4854 DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 - external_app_launcher: ad55ac844aa21f2d2197d7cec58ff0d0dc40bbc0 - file_picker: b159e0c068aef54932bb15dc9fd1571818edaf49 + external_app_launcher: 3411245965270a74040a3de17e27bd02b8abb905 + external_path: fd37c654b69a1336e33a2403f48383ae6100e443 + file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be Firebase: 0219acf760880eeec8ce479895bd7767466d9f81 - firebase_core: dee76ded6c693fdb38b8ea39aef7129e32e587a3 - firebase_messaging: 67fbcdaf6a7c81849590e542eff2409dc49d9fa5 + firebase_core: 08a35f8b03042881dffe36b86a3bb287e76d52f8 + firebase_messaging: 4840ee73783211d456bd6b0f73c878ac5592dd00 FirebaseCore: e317665b9d744727a97e623edbbed009320afdd7 FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd FirebaseMessaging: ac9062bcc35ed56e15a0241d8fd317022499baf8 - fk_user_agent: 1f47ec39291e8372b1d692b50084b0d54103c545 + fk_user_agent: 137145b086229251761678fe034da53753f4ce59 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_appauth: 88fcbc27871cbedac400db9d39b1363e4850179d - flutter_charset_detector_darwin: fb3692d6d72cb6afcce7b0dd1a9516be6e78556e - flutter_downloader: b7301ae057deadd4b1650dc7c05375f10ff12c39 - flutter_file_dialog: 4c014a45b105709a27391e266c277d7e588e9299 - flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e - flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4 - flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 - flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 - flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef - flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be - flutter_web_auth_2: 051cf9f5dc366f31b5dcc4e2952c2b954767be8a + flutter_appauth: d4abcf54856e5d8ba82ed7646ffc83245d4aa448 + flutter_charset_detector_darwin: 14f055ebeed6896144cc96b046749df51127a0a3 + flutter_downloader: 78da0da1084e709cbfd3b723c7ea349c71681f09 + flutter_file_dialog: ca8d7fbd1772d4f0c2777b4ab20a7787ef4e7dd8 + flutter_image_compress_common: 1697a328fd72bfb335507c6bca1a65fa5ad87df1 + flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99 + flutter_keyboard_visibility: 4625131e43015dbbe759d9b20daaf77e0e3f6619 + flutter_local_notifications: ad39620c743ea4c15127860f4b5641649a988100 + flutter_native_splash: 9e672d3818957718ee006a491730c09deeecace9 + flutter_secure_storage: 2c2ff13db9e0a5647389bff88b0ecac56e3f3418 + flutter_web_auth_2: 5c8d9dcd7848b5a9efb086d24e7a9adcae979c80 GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 lottie-ios: e047b1d2e6239b787cc5e9755b988869cf190494 - lottie_native: 96739b7fc232c7f440cbf5c2649100c51f117213 + lottie_native: c2e590a297861fc32a0188cf8dab39aa97f86d81 Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5 + open_file_ios: 5ff7526df64e4394b4fe207636b67a95e83078bb OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 - package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c - path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 - patrol: 0564cee315ff6c86fb802b3647db05cc2d3d0624 - pdfrx: 07fc287c47ea8d027c4ed56457f8a1aa74d73594 - permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6 - photo_manager: ff695c7a1dd5bc379974953a2b5c0a293f7c4c8a - pointer_interceptor_ios: 9280618c0b2eeb80081a343924aa8ad756c21375 - printing: 233e1b73bd1f4a05615548e9b5a324c98588640b + package_info_plus: 580e9a5f1b6ca5594e7c9ed5f92d1dfb2a66b5e1 + path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 + patrol: 5df5d241d7f95f0df12a6906bbf45acb43a1e537 + pdfrx: 310e84d01e06fd2af26e16507a0e48c27e99195c + permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d + photo_manager: d2fbcc0f2d82458700ee6256a15018210a81d413 + pointer_interceptor_ios: 6c19a55ea369c3f64424c9a95441e2b0e8beb8f3 + printing: 54ff03f28fe9ba3aa93358afb80a8595a071dd07 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda - receive_sharing_intent: 79c848f5b045674ad60b9fea3bafea59962ad2c1 + receive_sharing_intent: 222384f00ffe7e952bbfabaa9e3967cb87e5fe00 SDWebImage: f29024626962457f3470184232766516dee8dfea SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 - share_plus: c3fef564749587fc939ef86ffb283ceac0baf9f5 - shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 + share_plus: de6030e33b4e106470e09322d87cf2a4258d2d1d + shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 UniversalDetector2: 7c9ffd935cf050eeb19edf7e90f6febe3743a1af - url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe - workmanager: 0afdcf5628bbde6924c21af7836fed07b42e30e6 + url_launcher_ios: 694010445543906933d732453a59da0a173ae33d + workmanager_apple: 904529ae31e97fc5be632cf628507652294a0778 -PODFILE CHECKSUM: f2eb8f5a17c320a935d112236893d073c572e17e +PODFILE CHECKSUM: 40b12ce0bc437886ee4f4050970375d7d253708d -COCOAPODS: 1.15.2 +COCOAPODS: 1.16.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 03e25a3a0c..86df3a02fc 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -511,6 +511,7 @@ 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + C0BEA1D661C28FBC88584C44 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -743,6 +744,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; }; + C0BEA1D661C28FBC88584C44 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; E791D44F3C4EDE784D610B9E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 7bdae17d13..67880a9dec 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -26,6 +26,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit" shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/lib/features/email/data/network/email_api.dart b/lib/features/email/data/network/email_api.dart index 17ef3544f9..62ab655898 100644 --- a/lib/features/email/data/network/email_api.dart +++ b/lib/features/email/data/network/email_api.dart @@ -312,7 +312,7 @@ class EmailAPI with HandleSetErrorMixin { String externalStorageDirPath; if (Platform.isAndroid) { - externalStorageDirPath = await ExternalPath.getExternalStoragePublicDirectory(ExternalPath.DIRECTORY_DOWNLOADS); + externalStorageDirPath = await ExternalPath.getExternalStoragePublicDirectory(ExternalPath.DIRECTORY_DOWNLOAD); } else if (Platform.isIOS) { externalStorageDirPath = (await getApplicationDocumentsDirectory()).absolute.path; } else { diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index f3069f9c3e..484785f131 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'dart:io'; -import 'package:better_open_file/better_open_file.dart' as open_file; +import 'package:open_file/open_file.dart' as open_file; import 'package:core/core.dart'; import 'package:core/presentation/utils/html_transformer/text/sanitize_autolink_unescape_html_transformer.dart'; import 'package:core/presentation/utils/html_transformer/text/new_line_transformer.dart'; @@ -36,7 +36,6 @@ import 'package:model/error_type_handler/unknown_uri_exception.dart'; import 'package:model/model.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; -import 'package:share_plus/share_plus.dart'; import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; import 'package:tmail_ui_user/features/base/mixin/message_dialog_action_manager.dart'; @@ -968,6 +967,8 @@ class SingleEmailController extends BaseController with AppLoaderMixin { logError('SingleEmailController::_exportAttachmentAction(): $e'); consumeState(Stream.value(Left(ExportAttachmentFailure(e)))); } + } else { + consumeState(Stream.value(Left(ExportAttachmentFailure(NotFoundAccountIdException())))); } } @@ -1034,31 +1035,35 @@ class SingleEmailController extends BaseController with AppLoaderMixin { void _exportAllAttachmentsSuccessAction(ExportAllAttachmentsSuccess success) { popBack(); - _saveDownloadedZipAttachments(success.downloadedResponse.filePath); + _saveFileToStorage(success.downloadedResponse.filePath); } void _openDownloadedPreviewWorkGroupDocument(DownloadedResponse downloadedResponse) async { log('SingleEmailController::_openDownloadedPreviewWorkGroupDocument(): $downloadedResponse'); - if (downloadedResponse.mediaType == null) { - await Share.shareXFiles([XFile(downloadedResponse.filePath)]); + final filePath = downloadedResponse.filePath; + final mediaType = downloadedResponse.mediaType; + + if (mediaType == null) { + _saveFileToStorage(filePath); + return; } final openResult = await open_file.OpenFile.open( - downloadedResponse.filePath, - type: Platform.isAndroid ? downloadedResponse.mediaType!.mimeType : null, - uti: Platform.isIOS ? downloadedResponse.mediaType!.getDocumentUti().value : null); + filePath, + type: Platform.isAndroid ? mediaType.mimeType : null, + // "xdg" is default value + linuxDesktopName: Platform.isIOS + ? mediaType.getDocumentUti().value ?? 'xdg' + : 'xdg', + ); if (openResult.type != open_file.ResultType.done) { logError('SingleEmailController::_openDownloadedPreviewWorkGroupDocument(): no preview available'); - if (currentOverlayContext != null && currentContext != null) { - appToast.showToastErrorMessage( - currentOverlayContext!, - AppLocalizations.of(currentContext!).noPreviewAvailable); - } + _saveFileToStorage(filePath); } } - Future _saveDownloadedZipAttachments(String filePath) async { + Future _saveFileToStorage(String filePath) async { final params = SaveFileDialogParams(sourceFilePath: filePath); await FlutterFileDialog.saveFile(params: params); } diff --git a/lib/features/email/presentation/widgets/attachments_info.dart b/lib/features/email/presentation/widgets/attachments_info.dart index b200a03346..dcfbf92f5f 100644 --- a/lib/features/email/presentation/widgets/attachments_info.dart +++ b/lib/features/email/presentation/widgets/attachments_info.dart @@ -68,6 +68,7 @@ class AttachmentsInfo extends StatelessWidget { ), if (onTapDownloadAllButton != null) TMailButtonWidget( + key: const Key('download_all_attachments_button'), text: AppLocalizations.of(context).downloadAll, icon: !responsiveUtils.isMobile(context) ? imagePaths.icDownloadAttachment diff --git a/lib/features/home/presentation/home_controller.dart b/lib/features/home/presentation/home_controller.dart index d97cff328d..c1a8decb54 100644 --- a/lib/features/home/presentation/home_controller.dart +++ b/lib/features/home/presentation/home_controller.dart @@ -102,7 +102,7 @@ class HomeController extends ReloadableController { .then((_) => FlutterDownloader.registerCallback(downloadCallback)); } - static void downloadCallback(String id, DownloadTaskStatus status, int progress) {} + static void downloadCallback(String id, int status, int progress) {} Future _handleNavigateToScreen() async { await Future.delayed(2.seconds); diff --git a/lib/features/offline_mode/bindings/sending_email_interactor_bindings.dart b/lib/features/offline_mode/bindings/sending_email_interactor_bindings.dart deleted file mode 100644 index d3a1376815..0000000000 --- a/lib/features/offline_mode/bindings/sending_email_interactor_bindings.dart +++ /dev/null @@ -1,145 +0,0 @@ -import 'package:core/data/model/source_type/data_source_type.dart'; -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/utils/file_utils.dart'; -import 'package:core/utils/preview_eml_file_utils.dart'; -import 'package:core/utils/print_utils.dart'; -import 'package:get/get.dart'; -import 'package:tmail_ui_user/features/base/interactors_bindings.dart'; -import 'package:tmail_ui_user/features/caching/utils/local_storage_manager.dart'; -import 'package:tmail_ui_user/features/caching/utils/session_storage_manager.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.dart'; -import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart'; -import 'package:tmail_ui_user/features/email/data/datasource/html_datasource.dart'; -import 'package:tmail_ui_user/features/email/data/datasource/print_file_datasource.dart'; -import 'package:tmail_ui_user/features/email/data/datasource_impl/email_datasource_impl.dart'; -import 'package:tmail_ui_user/features/email/data/datasource_impl/email_hive_cache_datasource_impl.dart'; -import 'package:tmail_ui_user/features/email/data/datasource_impl/email_local_storage_datasource_impl.dart'; -import 'package:tmail_ui_user/features/email/data/datasource_impl/email_session_storage_datasource_impl.dart'; -import 'package:tmail_ui_user/features/email/data/datasource_impl/html_datasource_impl.dart'; -import 'package:tmail_ui_user/features/email/data/datasource_impl/print_file_datasource_impl.dart'; -import 'package:tmail_ui_user/features/email/data/local/html_analyzer.dart'; -import 'package:tmail_ui_user/features/email/data/network/email_api.dart'; -import 'package:tmail_ui_user/features/email/data/repository/email_repository_impl.dart'; -import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart'; -import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart'; -import 'package:tmail_ui_user/features/mailbox/data/datasource/state_datasource.dart'; -import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart'; -import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_datasource_impl.dart'; -import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/state_datasource_impl.dart'; -import 'package:tmail_ui_user/features/mailbox/data/local/mailbox_cache_manager.dart'; -import 'package:tmail_ui_user/features/mailbox/data/local/state_cache_manager.dart'; -import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart'; -import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_isolate_worker.dart'; -import 'package:tmail_ui_user/features/mailbox/data/repository/mailbox_repository_impl.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; -import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_manager.dart'; -import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_worker_queue.dart'; -import 'package:tmail_ui_user/features/offline_mode/manager/opened_email_cache_manager.dart'; -import 'package:tmail_ui_user/features/offline_mode/manager/opened_email_cache_worker_queue.dart'; -import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart'; -import 'package:tmail_ui_user/features/server_settings/data/datasource/server_settings_data_source.dart'; -import 'package:tmail_ui_user/features/server_settings/data/datasource_impl/remote_server_settings_data_source_impl.dart'; -import 'package:tmail_ui_user/features/server_settings/data/network/server_settings_api.dart'; -import 'package:tmail_ui_user/features/server_settings/data/repository/server_settings_repository_impl.dart'; -import 'package:tmail_ui_user/features/server_settings/domain/repository/server_settings_repository.dart'; -import 'package:tmail_ui_user/features/thread/data/local/email_cache_manager.dart'; -import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart'; -import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart'; -import 'package:tmail_ui_user/main/utils/ios_sharing_manager.dart'; - -class SendEmailInteractorBindings extends InteractorsBindings { - - @override - void bindingsDataSource() { - Get.lazyPut(() => Get.find()); - Get.lazyPut(() => Get.find()); - Get.lazyPut(() => Get.find()); - Get.lazyPut(() => Get.find()); - Get.lazyPut(() => Get.find()); - Get.lazyPut(() => Get.find()); - } - - @override - void bindingsDataSourceImpl() { - Get.lazyPut(() => EmailDataSourceImpl( - Get.find(), - Get.find())); - Get.lazyPut(() => MailboxDataSourceImpl( - Get.find(), - Get.find(), - Get.find())); - Get.lazyPut(() => MailboxCacheDataSourceImpl( - Get.find(), - Get.find())); - Get.lazyPut(() => HtmlDataSourceImpl( - Get.find(), - Get.find())); - Get.lazyPut(() => StateDataSourceImpl( - Get.find(), - Get.find(), - Get.find())); - Get.lazyPut(() => PrintFileDataSourceImpl( - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), - )); - Get.lazyPut(() => EmailHiveCacheDataSourceImpl( - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find())); - Get.lazyPut(() => EmailLocalStorageDataSourceImpl( - Get.find(), - Get.find(), - Get.find())); - Get.lazyPut(() => EmailSessionStorageDatasourceImpl( - Get.find(), - Get.find())); - Get.lazyPut(() => RemoteServerSettingsDataSourceImpl( - Get.find(), - Get.find())); - } - - @override - void bindingsInteractor() { - Get.lazyPut(() => SendEmailInteractor(Get.find())); - } - - @override - void bindingsRepository() { - Get.lazyPut(() => Get.find()); - Get.lazyPut(() => Get.find()); - Get.lazyPut(() => Get.find()); - } - - @override - void bindingsRepositoryImpl() { - Get.lazyPut(() => EmailRepositoryImpl( - { - DataSourceType.network: Get.find(), - DataSourceType.hiveCache: Get.find(), - DataSourceType.local: Get.find(), - DataSourceType.session: Get.find(), - }, - Get.find(), - Get.find(), - Get.find(), - )); - Get.lazyPut(() => MailboxRepositoryImpl( - { - DataSourceType.network: Get.find(), - DataSourceType.local: Get.find() - }, - Get.find(), - )); - Get.lazyPut(() => ServerSettingsRepositoryImpl( - Get.find())); - } - -} \ No newline at end of file diff --git a/lib/features/offline_mode/config/work_manager_config.dart b/lib/features/offline_mode/config/work_manager_config.dart deleted file mode 100644 index 77ec26f9d3..0000000000 --- a/lib/features/offline_mode/config/work_manager_config.dart +++ /dev/null @@ -1,19 +0,0 @@ - -import 'package:core/core.dart'; -import 'package:tmail_ui_user/features/offline_mode/work_manager/work_dispatcher.dart'; -import 'package:workmanager/workmanager.dart'; - -class WorkManagerConfig { - static WorkManagerConfig? _instance; - - WorkManagerConfig._(); - - factory WorkManagerConfig() => _instance ??= WorkManagerConfig._(); - - Future initialize() { - return Workmanager().initialize( - callbackDispatcher, - isInDebugMode: BuildUtils.isDebugMode - ); - } -} \ No newline at end of file diff --git a/lib/features/offline_mode/config/work_manager_constants.dart b/lib/features/offline_mode/config/work_manager_constants.dart deleted file mode 100644 index d53ab15318..0000000000 --- a/lib/features/offline_mode/config/work_manager_constants.dart +++ /dev/null @@ -1,5 +0,0 @@ - -class WorkManagerConstants { - static const String workerTypeKey = 'worker_type'; - static const int delayTime = 2000; -} \ No newline at end of file diff --git a/lib/features/offline_mode/controller/work_manager_controller.dart b/lib/features/offline_mode/controller/work_manager_controller.dart deleted file mode 100644 index 1b8865693f..0000000000 --- a/lib/features/offline_mode/controller/work_manager_controller.dart +++ /dev/null @@ -1,92 +0,0 @@ -import 'dart:async'; -import 'package:collection/collection.dart'; -import 'package:core/utils/app_logger.dart'; -import 'package:tmail_ui_user/features/offline_mode/config/work_manager_constants.dart'; -import 'package:tmail_ui_user/features/offline_mode/exceptions/workmanager_exception.dart'; -import 'package:tmail_ui_user/features/offline_mode/work_manager/one_time_work_request.dart'; -import 'package:tmail_ui_user/features/offline_mode/work_manager/periodic_work_request.dart'; -import 'package:tmail_ui_user/features/offline_mode/work_manager/work_request.dart'; -import 'package:tmail_ui_user/features/offline_mode/work_manager/worker_type.dart'; -import 'package:workmanager/workmanager.dart'; - -class WorkManagerController { - - static WorkManagerController? _instance; - - WorkManagerController._(); - - factory WorkManagerController() => _instance ??= WorkManagerController._(); - - Future enqueue(WorkRequest workRequest) async { - try { - log('WorkSchedulerController::enqueue():workRequest: $workRequest'); - if (workRequest is OneTimeWorkRequest) { - await Workmanager().registerOneOffTask( - workRequest.uniqueId, - workRequest.taskId, - tag: workRequest.tag, - initialDelay: workRequest.initialDelay, - constraints: workRequest.constraints, - backoffPolicy: workRequest.backoffPolicy, - backoffPolicyDelay: workRequest.backoffPolicyDelay, - outOfQuotaPolicy: workRequest.outOfQuotaPolicy, - inputData: workRequest.inputData - ); - } if (workRequest is PeriodicWorkRequest) { - await Workmanager().registerPeriodicTask( - workRequest.uniqueId, - workRequest.taskId, - tag: workRequest.tag, - frequency: workRequest.frequency, - initialDelay: workRequest.initialDelay, - constraints: workRequest.constraints, - backoffPolicy: workRequest.backoffPolicy, - backoffPolicyDelay: workRequest.backoffPolicyDelay, - outOfQuotaPolicy: workRequest.outOfQuotaPolicy, - inputData: workRequest.inputData - ); - } - } catch (e) { - logError('WorkSchedulerController::enqueue(): EXCEPTION: $e'); - } - } - - Future handleBackgroundTask(String taskName, Map? inputData) async { - log('WorkSchedulerController::handleBackgroundTask():taskName: $taskName | inputData: $inputData'); - try { - if (inputData != null && inputData.isNotEmpty) { - final workerType = inputData.remove(WorkManagerConstants.workerTypeKey); - final dataObject = inputData; - log('WorkSchedulerController::handleBackgroundTask():workerType: $workerType | dataObject: $dataObject'); - final matchedType = WorkerType.values.firstWhereOrNull((type) => type.name == workerType); - - if (matchedType != null) { - final worker = matchedType.getWorker(); - await worker.bindDI(); - final result = await worker.doWork(taskName, dataObject); - return result; - } else { - return Future.error(CanNotFoundWorkerType()); - } - } else { - return Future.error(CanNotFoundInputData()); - } - } catch (e) { - logError('WorkSchedulerController::handleBackgroundTask():EXCEPTION: $e'); - return Future.error(e); - } - } - - Future cancelByWorkType(WorkerType type) => Workmanager().cancelByTag(type.name); - - Future cancelByUniqueId(String uniqueId) { - try { - return Workmanager().cancelByUniqueName(uniqueId); - } catch (e) { - logError('WorkSchedulerController::cancelByUniqueId():EXCEPTION: $e'); - return Future.value(); - } - } - - Future cancelAll() => Workmanager().cancelAll(); -} \ No newline at end of file diff --git a/lib/features/offline_mode/exceptions/workmanager_exception.dart b/lib/features/offline_mode/exceptions/workmanager_exception.dart deleted file mode 100644 index a1204f0915..0000000000 --- a/lib/features/offline_mode/exceptions/workmanager_exception.dart +++ /dev/null @@ -1,3 +0,0 @@ -class CanNotFoundInputData implements Exception {} - -class CanNotFoundWorkerType implements Exception {} \ No newline at end of file diff --git a/lib/features/offline_mode/work_manager/one_time_work_request.dart b/lib/features/offline_mode/work_manager/one_time_work_request.dart deleted file mode 100644 index f5aaf9c92b..0000000000 --- a/lib/features/offline_mode/work_manager/one_time_work_request.dart +++ /dev/null @@ -1,30 +0,0 @@ - -import 'package:tmail_ui_user/features/offline_mode/work_manager/work_request.dart'; -import 'package:workmanager/workmanager.dart'; - -/// A WorkRequest for non-repeating work. -class OneTimeWorkRequest extends WorkRequest { - OneTimeWorkRequest({ - required String uniqueId, - required String taskId, - String? tag, - Map? inputData, - Duration initialDelay = Duration.zero, - Duration backoffPolicyDelay = Duration.zero, - ExistingWorkPolicy? existingWorkPolicy, - BackoffPolicy? backoffPolicy, - OutOfQuotaPolicy? outOfQuotaPolicy, - Constraints? constraints - }) : super( - uniqueId: uniqueId, - taskId: taskId, - tag: tag, - inputData: inputData, - initialDelay: initialDelay, - backoffPolicyDelay: backoffPolicyDelay, - existingWorkPolicy: existingWorkPolicy, - backoffPolicy: backoffPolicy, - outOfQuotaPolicy: outOfQuotaPolicy, - constraints: constraints - ); -} \ No newline at end of file diff --git a/lib/features/offline_mode/work_manager/periodic_work_request.dart b/lib/features/offline_mode/work_manager/periodic_work_request.dart deleted file mode 100644 index a051a600e6..0000000000 --- a/lib/features/offline_mode/work_manager/periodic_work_request.dart +++ /dev/null @@ -1,36 +0,0 @@ - -import 'package:tmail_ui_user/features/offline_mode/work_manager/work_request.dart'; -import 'package:workmanager/workmanager.dart'; - -/// A WorkRequest for repeating work. -class PeriodicWorkRequest extends WorkRequest { - final Duration? frequency; - - PeriodicWorkRequest({ - required String uniqueId, - required String taskId, - String? tag, - Map? inputData, - Duration initialDelay = Duration.zero, - Duration backoffPolicyDelay = Duration.zero, - ExistingWorkPolicy? existingWorkPolicy, - BackoffPolicy? backoffPolicy, - OutOfQuotaPolicy? outOfQuotaPolicy, - Constraints? constraints, - this.frequency - }) : super( - uniqueId: uniqueId, - taskId: taskId, - tag: tag, - inputData: inputData, - initialDelay: initialDelay, - backoffPolicyDelay: backoffPolicyDelay, - existingWorkPolicy: existingWorkPolicy, - backoffPolicy: backoffPolicy, - outOfQuotaPolicy: outOfQuotaPolicy, - constraints: constraints - ); - - @override - List get props => [super.props, frequency]; -} \ No newline at end of file diff --git a/lib/features/offline_mode/work_manager/sending_email_worker.dart b/lib/features/offline_mode/work_manager/sending_email_worker.dart deleted file mode 100644 index 670aac94d4..0000000000 --- a/lib/features/offline_mode/work_manager/sending_email_worker.dart +++ /dev/null @@ -1,279 +0,0 @@ -import 'dart:async'; - -import 'package:core/data/network/config/dynamic_url_interceptors.dart'; -import 'package:core/presentation/state/failure.dart'; -import 'package:core/presentation/state/success.dart'; -import 'package:core/utils/app_logger.dart'; -import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:jmap_dart_client/jmap/core/session/session.dart'; -import 'package:jmap_dart_client/jmap/core/user_name.dart'; -import 'package:jmap_dart_client/jmap/mail/email/email.dart'; -import 'package:model/email/email_action_type.dart'; -import 'package:model/extensions/account_id_extensions.dart'; -import 'package:model/extensions/session_extension.dart'; -import 'package:tmail_ui_user/features/caching/config/hive_cache_config.dart'; -import 'package:tmail_ui_user/features/caching/utils/cache_utils.dart'; -import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.dart'; -import 'package:tmail_ui_user/features/email/domain/state/unsubscribe_email_state.dart'; -import 'package:tmail_ui_user/features/email/domain/usecases/unsubscribe_email_interactor.dart'; -import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart'; -import 'package:tmail_ui_user/features/home/domain/state/get_session_state.dart'; -import 'package:tmail_ui_user/features/home/domain/usecases/get_session_interactor.dart'; -import 'package:tmail_ui_user/features/login/data/network/interceptors/authorization_interceptors.dart'; -import 'package:tmail_ui_user/features/login/domain/state/get_authenticated_account_state.dart'; -import 'package:tmail_ui_user/features/login/domain/state/get_credential_state.dart'; -import 'package:tmail_ui_user/features/login/domain/state/get_stored_token_oidc_state.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart'; -import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart'; -import 'package:tmail_ui_user/features/offline_mode/bindings/sending_email_interactor_bindings.dart'; -import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart'; -import 'package:tmail_ui_user/features/offline_mode/model/sending_state.dart'; -import 'package:tmail_ui_user/features/offline_mode/work_manager/worker.dart'; -import 'package:tmail_ui_user/features/sending_queue/domain/extensions/sending_email_extension.dart'; -import 'package:tmail_ui_user/features/sending_queue/domain/model/sending_email.dart'; -import 'package:tmail_ui_user/features/sending_queue/presentation/bindings/sending_queue_interactor_bindings.dart'; -import 'package:tmail_ui_user/features/sending_queue/presentation/utils/sending_queue_isolate_manager.dart'; -import 'package:tmail_ui_user/main/bindings/main_bindings.dart'; -import 'package:tmail_ui_user/main/routes/route_navigation.dart'; - -class SendingEmailWorker extends Worker { - - SendEmailInteractor? _sendEmailInteractor; - GetAuthenticatedAccountInteractor? _getAuthenticatedAccountInteractor; - DynamicUrlInterceptors? _dynamicUrlInterceptors; - AuthorizationInterceptors? _authorizationInterceptors; - GetSessionInteractor? _getSessionInteractor; - SendingQueueIsolateManager? _sendingQueueIsolateManager; - SendingEmailCacheManager? _sendingEmailCacheManager; - UnsubscribeEmailInteractor? _unsubscribeEmailInteractor; - - late Completer _completer; - late SendingEmail _sendingEmail; - - AccountId? _currentAccountId; - Session? _currentSession; - - static SendingEmailWorker? _instance; - - SendingEmailWorker._(); - - factory SendingEmailWorker() => _instance ??= SendingEmailWorker._(); - - @override - Future doWork(String taskId, Map inputData) { - _completer = Completer(); - _sendingEmail = SendingEmail.fromJson(inputData); - log('SendingEmailObserver::observe():_sendingEmail: $_sendingEmail'); - _updatingSendingStateToMainUI( - sendingId: _sendingEmail.sendingId, - sendingState: SendingState.running - ); - _getAuthenticatedAccount(); - return _completer.future; - } - - @override - Future bindDI() async { - await Future.wait([ - MainBindings().dependencies(), - HiveCacheConfig.instance.setUp() - ]); - - await Future.sync(() { - SendingQueueInteractorBindings().dependencies(); - SendEmailInteractorBindings().dependencies(); - MailboxDashBoardBindings().dependencies(); - }); - - _getInteractorBindings(); - - await _sendingEmailCacheManager?.closeSendingEmailHiveCacheBox(); - } - - @override - void handleFailureViewState(Failure failure) { - log('SendingEmailObserver::_handleFailureViewState(): $failure'); - if (failure is SendEmailFailure) { - _handleSendEmailFailure(failure); - } else if (failure is GetAuthenticatedAccountFailure || - failure is GetSessionFailure || - failure is GetStoredTokenOidcFailure || - failure is GetCredentialFailure) { - _handleWorkerTaskToRetry(); - } else if (failure is UnsubscribeEmailFailure) { - _handleWorkerTaskSuccess(); - } - } - - @override - void handleSuccessViewState(Success success) { - log('SendingEmailObserver::handleSuccessViewState(): $success'); - if (success is GetSessionSuccess) { - _handleGetSessionSuccess(success); - } else if (success is GetStoredTokenOidcSuccess) { - _handleGetAccountByOidcSuccess(success); - } else if (success is GetCredentialViewState) { - _handleGetAccountByBasicAuthSuccess(success); - } else if (success is SendEmailSuccess) { - _handleSendEmailSuccess(success); - } else if (success is UnsubscribeEmailSuccess) { - _handleWorkerTaskSuccess(); - } - } - - @override - void handleOnError(Object? error, StackTrace stackTrace) { - super.handleOnError(error, stackTrace); - _handleWorkerTaskToRetry(); - } - - void _getInteractorBindings() { - _getAuthenticatedAccountInteractor = getBinding(); - _dynamicUrlInterceptors = getBinding(); - _authorizationInterceptors = getBinding(); - _getSessionInteractor = getBinding(); - _sendEmailInteractor = getBinding(); - _sendingQueueIsolateManager = getBinding(); - _sendingEmailCacheManager = getBinding(); - _unsubscribeEmailInteractor = getBinding(); - } - - void _updatingSendingStateToMainUI({String? sendingId, SendingState? sendingState}) { - final eventAction = _generateEventAction( - sendingId ?? _sendingEmail.sendingId, - sendingState ?? _sendingEmail.sendingState, - accountId: _currentAccountId, - userName: _currentSession?.username - ); - log('SendingEmailObserver::_updatingSendingStateToMainUI():eventAction: $eventAction'); - _sendingQueueIsolateManager?.addEvent(eventAction); - } - - void _getAuthenticatedAccount() { - consumeState(_getAuthenticatedAccountInteractor!.execute()); - } - - void _getSessionAction() { - consumeState(_getSessionInteractor!.execute()); - } - - void _handleGetSessionSuccess(GetSessionSuccess success) async { - _currentSession = success.session; - _currentAccountId = success.session.accountId; - final apiUrl = success.session.getQualifiedApiUrl(baseUrl: _dynamicUrlInterceptors?.jmapUrl); - if (apiUrl.isNotEmpty && _currentSession != null && _currentAccountId != null) { - _dynamicUrlInterceptors?.changeBaseUrl(apiUrl); - _sendEmailAction(_currentAccountId!, _currentSession!); - } else { - _handleWorkerTaskToRetry(); - } - } - - void _handleGetAccountByBasicAuthSuccess(GetCredentialViewState credentialViewState) { - _dynamicUrlInterceptors?.setJmapUrl(credentialViewState.baseUrl.toString()); - _authorizationInterceptors?.setBasicAuthorization( - credentialViewState.userName, - credentialViewState.password, - ); - _dynamicUrlInterceptors?.changeBaseUrl(credentialViewState.baseUrl.toString()); - _getSessionAction(); - } - - void _sendEmailAction(AccountId accountId, Session session) { - consumeState( - _sendEmailInteractor!.execute( - session, - accountId, - _sendingEmail.toEmailRequest(), - mailboxRequest: _getMailboxRequest() - ) - ); - } - - CreateNewMailboxRequest? _getMailboxRequest() { - if (_sendingEmail.mailboxNameRequest != null) { - return CreateNewMailboxRequest( - _sendingEmail.mailboxNameRequest!); - } else { - return null; - } - } - - void _handleGetAccountByOidcSuccess(GetStoredTokenOidcSuccess storedTokenOidcSuccess) { - _dynamicUrlInterceptors?.setJmapUrl(storedTokenOidcSuccess.baseUrl.toString()); - _authorizationInterceptors?.setTokenAndAuthorityOidc( - newToken: storedTokenOidcSuccess.tokenOidc, - newConfig: storedTokenOidcSuccess.oidcConfiguration - ); - _dynamicUrlInterceptors?.changeBaseUrl(storedTokenOidcSuccess.baseUrl.toString()); - _getSessionAction(); - } - - void _handleSendEmailSuccess(SendEmailSuccess success) { - if (success.emailRequest.emailActionType == EmailActionType.composeFromUnsubscribeMailtoLink && - success.emailRequest.previousEmailId != null) { - _unsubscribeMail(success.emailRequest.previousEmailId!); - } else { - _handleWorkerTaskSuccess(); - } - } - - void _handleSendEmailFailure(SendEmailFailure failure) { - _handleWorkerTaskFailure(failure.exception); - } - - void _handleWorkerTaskToRetry() async { - _updatingSendingStateToMainUI(sendingState: SendingState.canceled); - log('SendingEmailObserver::_handleWorkerTaskToRetry():'); - await Future.delayed( - const Duration(milliseconds: 1000), - () => _completer.complete(false) - ); - } - - void _handleWorkerTaskFailure(dynamic error) async { - log('SendingEmailObserver::_handleWorkerTaskFailure():error: $error'); - _updatingSendingStateToMainUI(sendingState: SendingState.error); - await Future.delayed( - const Duration(milliseconds: 1000), - () => _completer.completeError(error) - ); - } - - void _handleWorkerTaskSuccess() async { - log('SendingEmailObserver::_handleWorkerTaskSuccess():'); - _updatingSendingStateToMainUI(sendingState: SendingState.success); - await Future.delayed( - const Duration(milliseconds: 1000), - () => _completer.complete(true) - ); - } - - String _generateEventAction( - String sendingId, - SendingState sendingState, - { - AccountId? accountId, - UserName? userName - } - ) => TupleKey(sendingId, sendingState.name, accountId?.asString, userName?.value).toString(); - - void _unsubscribeMail(EmailId emailId) { - if (_unsubscribeEmailInteractor != null && - _currentSession != null && - _currentAccountId != null - ) { - consumeState( - _unsubscribeEmailInteractor!.execute( - _currentSession!, - _currentAccountId!, - emailId - ) - ); - } else { - _handleWorkerTaskSuccess(); - } - } -} \ No newline at end of file diff --git a/lib/features/offline_mode/work_manager/work_dispatcher.dart b/lib/features/offline_mode/work_manager/work_dispatcher.dart deleted file mode 100644 index 82a33b5324..0000000000 --- a/lib/features/offline_mode/work_manager/work_dispatcher.dart +++ /dev/null @@ -1,8 +0,0 @@ - -import 'package:tmail_ui_user/features/offline_mode/controller/work_manager_controller.dart'; -import 'package:workmanager/workmanager.dart'; - -@pragma('vm:entry-point') -void callbackDispatcher() { - Workmanager().executeTask(WorkManagerController().handleBackgroundTask); -} diff --git a/lib/features/offline_mode/work_manager/work_request.dart b/lib/features/offline_mode/work_manager/work_request.dart deleted file mode 100644 index e6be561135..0000000000 --- a/lib/features/offline_mode/work_manager/work_request.dart +++ /dev/null @@ -1,44 +0,0 @@ - -import 'package:equatable/equatable.dart'; -import 'package:workmanager/workmanager.dart'; - -/// Represents the scheduling of requests -abstract class WorkRequest with EquatableMixin { - final String uniqueId; - final String taskId; - final String? tag; - final Map? inputData; - final Duration initialDelay; - final Duration backoffPolicyDelay; - final ExistingWorkPolicy? existingWorkPolicy; - final BackoffPolicy? backoffPolicy; - final OutOfQuotaPolicy? outOfQuotaPolicy; - final Constraints? constraints; - - WorkRequest( { - required this.uniqueId, - required this.taskId, - this.tag, - this.inputData, - this.initialDelay = Duration.zero, - this.backoffPolicyDelay = Duration.zero, - this.existingWorkPolicy, - this.backoffPolicy, - this.outOfQuotaPolicy, - this.constraints - }); - - @override - List get props => [ - uniqueId, - taskId, - tag, - inputData, - initialDelay, - backoffPolicyDelay, - existingWorkPolicy, - backoffPolicy, - outOfQuotaPolicy, - constraints - ]; -} \ No newline at end of file diff --git a/lib/features/offline_mode/work_manager/worker.dart b/lib/features/offline_mode/work_manager/worker.dart deleted file mode 100644 index e74755b5d8..0000000000 --- a/lib/features/offline_mode/work_manager/worker.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'dart:async'; -import 'package:core/presentation/state/failure.dart'; -import 'package:core/presentation/state/success.dart'; -import 'package:core/utils/app_logger.dart'; -import 'package:dartz/dartz.dart'; - -abstract class Worker { - Future bindDI(); - - Future doWork(String taskId, Map inputData); - - void consumeState(Stream> newStateStream) { - newStateStream.listen( - _handleStateStream, - onError: handleOnError - ); - } - - void _handleStateStream(Either newState) { - newState.fold(handleFailureViewState, handleSuccessViewState); - } - - void handleFailureViewState(Failure failure) {} - - void handleSuccessViewState(Success success) {} - - void handleOnError(Object? error, StackTrace stackTrace) { - logError('WorkObserver::handleOnError():error: $error | stackTrace: $stackTrace'); - } -} \ No newline at end of file diff --git a/lib/features/offline_mode/work_manager/worker_type.dart b/lib/features/offline_mode/work_manager/worker_type.dart deleted file mode 100644 index c7c493f727..0000000000 --- a/lib/features/offline_mode/work_manager/worker_type.dart +++ /dev/null @@ -1,14 +0,0 @@ - -import 'package:tmail_ui_user/features/offline_mode/work_manager/sending_email_worker.dart'; -import 'package:tmail_ui_user/features/offline_mode/work_manager/worker.dart'; - -enum WorkerType { - sendingEmail; - - Worker getWorker() { - switch(this) { - case WorkerType.sendingEmail: - return SendingEmailWorker(); - } - } -} \ No newline at end of file diff --git a/lib/l10n/intl_messages.arb b/lib/l10n/intl_messages.arb index 09627c5ced..3cca847d5c 100644 --- a/lib/l10n/intl_messages.arb +++ b/lib/l10n/intl_messages.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-07T12:02:25.245876", + "@@last_modified": "2025-10-14T15:18:48.964794", "initializing_data": "Initializing data...", "@initializing_data": { "type": "text", @@ -4592,12 +4592,6 @@ "placeholders_order": [], "placeholders": {} }, - "archiveAndDownload": "Archive and download", - "@archiveAndDownload": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, "creatingAnArchiveForDownloading": "Creating an archive for downloading", "@creatingAnArchiveForDownloading": { "type": "text", diff --git a/lib/main/localizations/app_localizations.dart b/lib/main/localizations/app_localizations.dart index f82ee052cb..e1a59144ae 100644 --- a/lib/main/localizations/app_localizations.dart +++ b/lib/main/localizations/app_localizations.dart @@ -4838,13 +4838,6 @@ class AppLocalizations { ); } - String get archiveAndDownload { - return Intl.message( - 'Archive and download', - name: 'archiveAndDownload', - ); - } - String get creatingAnArchiveForDownloading { return Intl.message( 'Creating an archive for downloading', diff --git a/model/pubspec.lock b/model/pubspec.lock index 915ffec9af..39417484da 100644 --- a/model/pubspec.lock +++ b/model/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" barcode: dependency: transitive description: @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -133,10 +133,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" charcode: dependency: transitive description: @@ -157,10 +157,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -173,10 +173,10 @@ packages: dependency: "direct main" description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" convert: dependency: transitive description: @@ -284,10 +284,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" ffi: dependency: transitive description: @@ -651,10 +651,10 @@ packages: dependency: "direct main" description: name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" url: "https://pub.dev" source: hosted - version: "0.19.0" + version: "0.20.2" io: dependency: transitive description: @@ -700,18 +700,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -748,10 +748,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -764,10 +764,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: "direct main" description: @@ -804,10 +804,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_parsing: dependency: transitive description: @@ -1050,26 +1050,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -1082,26 +1082,26 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" timing: dependency: transitive description: @@ -1242,10 +1242,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" watcher: dependency: transitive description: @@ -1311,5 +1311,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.6.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.27.0" diff --git a/model/pubspec.yaml b/model/pubspec.yaml index b0df477a1e..c69e3bde70 100644 --- a/model/pubspec.yaml +++ b/model/pubspec.yaml @@ -42,7 +42,7 @@ dependencies: quiver: 3.2.1 - intl: 0.19.0 + intl: 0.20.2 uri: 1.0.0 @@ -52,7 +52,7 @@ dependencies: mime: 1.0.4 - collection: 1.19.0 + collection: 1.19.1 dartz: 0.10.1 diff --git a/pubspec.lock b/pubspec.lock index acb364630e..1d5213b2e4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -69,10 +69,10 @@ packages: dependency: transitive description: name: archive - sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" url: "https://pub.dev" source: hosted - version: "3.6.1" + version: "4.0.7" args: dependency: transitive description: @@ -85,10 +85,10 @@ packages: dependency: "direct main" description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" auto_size_text: dependency: transitive description: @@ -113,14 +113,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.8" - better_open_file: - dependency: "direct main" - description: - name: better_open_file - sha256: aa67d9bc38160401e48023833f93c789b4e2b1c0eb8b6643bd5816d0c1c65dbd - url: "https://pub.dev" - source: hosted - version: "3.6.4" bidi: dependency: transitive description: @@ -133,10 +125,10 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -213,10 +205,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" charcode: dependency: transitive description: @@ -245,10 +237,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -261,10 +253,10 @@ packages: dependency: "direct main" description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" connectivity_plus: dependency: "direct main" description: @@ -293,7 +285,7 @@ packages: description: path: "." ref: master - resolved-ref: "083024c6200f4773e34c471b4001cd76fe1c9cec" + resolved-ref: d39739e8e9a43bba2c6ea6c885653c615e114e07 url: "https://github.com/linagora/flutter_contacts.git" source: git version: "0.6.3" @@ -375,6 +367,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.4" + dart_pubspec_licenses: + dependency: transitive + description: + name: dart_pubspec_licenses + sha256: "23ddb78ff9204d08e3109ced67cd3c6c6a066f581b0edf5ee092fc3e1127f4ea" + url: "https://pub.dev" + source: hosted + version: "3.0.4" dart_style: dependency: transitive description: @@ -423,6 +423,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.4" + desktop_webview_window: + dependency: transitive + description: + name: desktop_webview_window + sha256: "57cf20d81689d5cbb1adfd0017e96b669398a669d927906073b0e42fc64111c0" + url: "https://pub.dev" + source: hosted + version: "0.2.3" device_info_plus: dependency: "direct main" description: @@ -523,20 +531,19 @@ packages: external_app_launcher: dependency: "direct main" description: - path: "." - ref: master - resolved-ref: cb31d10b5a7261f774b6e312d82c5cf1899979b6 - url: "https://github.com/putnokiabel/external_app_launcher.git" - source: git - version: "4.0.0" + name: external_app_launcher + sha256: "5657341c5aa7bf7383efdf3e68db80cb3019e80afa9f1df3250c14818e844857" + url: "https://pub.dev" + source: hosted + version: "4.0.3" external_path: dependency: "direct main" description: name: external_path - sha256: "2095c626fbbefe70d5a4afc9b1137172a68ee2c276e51c3c1283394485bea8f4" + sha256: "68a18a2aa51ec012d7013ea2a80305dc5372f3577a2bbcc7dcc5550b25a5a73b" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "2.2.0" fading_edge_scrollview: dependency: "direct main" description: @@ -549,10 +556,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" fcm: dependency: "direct main" description: @@ -755,10 +762,10 @@ packages: description: path: "." ref: main - resolved-ref: "6c929093a154a2d16fa414f7d9a907e13f15b0ea" + resolved-ref: "860803b73cf48c7a28b3b67d05a13b3a4adbe249" url: "https://github.com/linagora/flutter-date-range-picker.git" source: git - version: "2.0.1" + version: "2.0.2" flutter_dotenv: dependency: "direct main" description: @@ -770,12 +777,11 @@ packages: flutter_downloader: dependency: "direct main" description: - path: "." - ref: "fixbug/android-api-35" - resolved-ref: "777e59823b7383ebb1acf3e777a14ce037ee9eb6" - url: "https://github.com/linagora/flutter_downloader.git" - source: git - version: "1.10.2" + name: flutter_downloader + sha256: "93a9ddbd561f8a3f5483b4189453fba145a0a1014a88143c96a966296b78a118" + url: "https://pub.dev" + source: hosted + version: "1.12.0" flutter_file_dialog: dependency: "direct main" description: @@ -1118,18 +1124,18 @@ packages: dependency: "direct main" description: name: flutter_web_auth_2 - sha256: "3ea3a0cc539ca74319f4f2f7484f62742fe5b2ff9a0fca37575426d6e6f07901" + sha256: "3c14babeaa066c371f3a743f204dd0d348b7d42ffa6fae7a9847a521aff33696" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "4.1.0" flutter_web_auth_2_platform_interface: dependency: transitive description: name: flutter_web_auth_2_platform_interface - sha256: e8669e262005a8354389ba2971f0fc1c36188481234ff50d013aaf993f30f739 + sha256: c63a472c8070998e4e422f6b34a17070e60782ac442107c70000dd1bed645f4d url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "4.1.0" flutter_web_plugins: dependency: transitive description: flutter @@ -1252,10 +1258,10 @@ packages: description: path: "." ref: main - resolved-ref: daf002dd591ee3e93c61240dc9d6504a4e205038 + resolved-ref: "33c6f89b1a2cf47f8c148939268488b2bbc19144" url: "https://github.com/linagora/html-editor-enhanced.git" source: git - version: "3.2.5" + version: "3.3.0" html_unescape: dependency: transitive description: @@ -1300,10 +1306,10 @@ packages: dependency: transitive description: name: image - sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" + sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" url: "https://pub.dev" source: hosted - version: "4.1.3" + version: "4.5.4" infinite_listview: dependency: transitive description: @@ -1324,17 +1330,18 @@ packages: dependency: "direct main" description: name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" url: "https://pub.dev" source: hosted - version: "0.19.0" + version: "0.20.2" intl_generator: dependency: "direct main" description: - name: intl_generator - sha256: "120e03ccefe0c215801e44a8ccbaeabe6c895c5792f44298133745ab0a0e0bf5" - url: "https://pub.dev" - source: hosted + path: "." + ref: master + resolved-ref: "20ca4d1c3ed3a7e9e2e86700af928ded9db4ff11" + url: "https://github.com/linagora/intl_generator.git" + source: git version: "0.4.1" io: dependency: transitive @@ -1389,18 +1396,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -1414,7 +1421,7 @@ packages: description: path: "." ref: master - resolved-ref: "17879a3de917152eb5473058ef2c3302d2c01f3e" + resolved-ref: "66d09a271f20243badd92352a8bb5866b430020d" url: "https://github.com/linagora/linagora-design-flutter.git" source: git version: "0.0.1" @@ -1454,10 +1461,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -1470,10 +1477,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: "direct main" description: @@ -1513,6 +1520,70 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + open_file: + dependency: "direct main" + description: + name: open_file + sha256: d17e2bddf5b278cb2ae18393d0496aa4f162142ba97d1a9e0c30d476adf99c0e + url: "https://pub.dev" + source: hosted + version: "3.5.10" + open_file_android: + dependency: transitive + description: + name: open_file_android + sha256: "58141fcaece2f453a9684509a7275f231ac0e3d6ceb9a5e6de310a7dff9084aa" + url: "https://pub.dev" + source: hosted + version: "1.0.6" + open_file_ios: + dependency: transitive + description: + name: open_file_ios + sha256: "02996f01e5f6863832068e97f8f3a5ef9b613516db6897f373b43b79849e4d07" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + open_file_linux: + dependency: transitive + description: + name: open_file_linux + sha256: d189f799eecbb139c97f8bc7d303f9e720954fa4e0fa1b0b7294767e5f2d7550 + url: "https://pub.dev" + source: hosted + version: "0.0.5" + open_file_mac: + dependency: transitive + description: + name: open_file_mac + sha256: "1440b1e37ceb0642208cfeb2c659c6cda27b25187a90635c9d1acb7d0584d324" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + open_file_platform_interface: + dependency: transitive + description: + name: open_file_platform_interface + sha256: "101b424ca359632699a7e1213e83d025722ab668b9fd1412338221bf9b0e5757" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + open_file_web: + dependency: transitive + description: + name: open_file_web + sha256: e3dbc9584856283dcb30aef5720558b90f88036360bd078e494ab80a80130c4f + url: "https://pub.dev" + source: hosted + version: "0.0.4" + open_file_windows: + dependency: transitive + description: + name: open_file_windows + sha256: d26c31ddf935a94a1a3aa43a23f4fff8a5ff4eea395fe7a8cb819cf55431c875 + url: "https://pub.dev" + source: hosted + version: "0.0.3" package_config: dependency: transitive description: @@ -1541,10 +1612,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_drawing: dependency: transitive description: @@ -1613,42 +1684,42 @@ packages: dependency: "direct dev" description: name: patrol - sha256: "2bb991db06b5e1eb2ec5c803067c41316d94d01dda93ddf16f5342073d791a20" + sha256: "782988d05af24427296e48417c36c520598656e00ba73c401a19ecd65262ee0b" url: "https://pub.dev" source: hosted - version: "3.14.0" + version: "3.19.0" patrol_finders: dependency: "direct dev" description: name: patrol_finders - sha256: "8787f9d5c3417b72e8959a55ad51c024cc0594d15e5db85bc179c4d8faa0c493" + sha256: "4a658d7d560de523f92deb3fa3326c78747ca0bf7e7f4b8788c012463138b628" url: "https://pub.dev" source: hosted - version: "2.7.2" + version: "2.9.0" patrol_log: dependency: "direct dev" description: name: patrol_log - sha256: "98b2701400c7a00b11533ab942bdeb44c3c714746e7cdb12e6cb93b6d06361da" + sha256: "9fed4143980df1e3bbcfa00d0b443c7d68f04f9132317b7698bbc37f8a5a58c5" url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.5.0" pattern_formatter: dependency: transitive description: name: pattern_formatter - sha256: e870e12352f4d5537b8822826a0b1e3912ba91c504d79450dcaed4db79c211d3 + sha256: f5fe03f7425524237465561a6a5f049616b09f99e35138df515f6b7b9aaa823b url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.0.1" pdf: dependency: transitive description: name: pdf - sha256: "243f05342fc0bdf140eba5b069398985cdbdd3dbb1d776cf43d5ea29cc570ba6" + sha256: "28eacad99bffcce2e05bba24e50153890ad0255294f4dd78a17075a2ba5c8416" url: "https://pub.dev" source: hosted - version: "3.10.8" + version: "3.11.3" pdf_widget_wrapper: dependency: transitive description: @@ -1661,10 +1732,18 @@ packages: dependency: transitive description: name: pdfrx - sha256: "29c7b03d27d647c80da8cc08bd1256c74df90e5640fdd676646e4bd04f90553a" + sha256: "7925ac63d7394ac85da084a88b4948b130f865fdf06a419fb8cc139724e1757e" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + pdfrx_engine: + dependency: transitive + description: + name: pdfrx_engine + sha256: "3f3553fa4618a376ebd452feb087015bbff8b79d1295d99077fb9ae34726dedc" url: "https://pub.dev" source: hosted - version: "1.0.94" + version: "0.1.13" percent_indicator: dependency: "direct main" description: @@ -1677,42 +1756,50 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: "33c6a1253d1f95fd06fa74b65b7ba907ae9811f9d5c1d3150e51417d04b8d6a8" + sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 url: "https://pub.dev" source: hosted - version: "10.2.0" + version: "12.0.1" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: "59c6322171c29df93a22d150ad95f3aa19ed86542eaec409ab2691b8f35f9a47" + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" url: "https://pub.dev" source: hosted - version: "10.3.6" + version: "13.0.1" permission_handler_apple: dependency: transitive description: name: permission_handler_apple - sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5" + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 + url: "https://pub.dev" + source: hosted + version: "9.4.7" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" url: "https://pub.dev" source: hosted - version: "9.1.4" + version: "0.1.3+5" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4" + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 url: "https://pub.dev" source: hosted - version: "3.12.0" + version: "4.3.0" permission_handler_windows: dependency: transitive description: name: permission_handler_windows - sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098 + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.2.1" petitparser: dependency: transitive description: @@ -1801,6 +1888,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.1" + posix: + dependency: transitive + description: + name: posix + sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" + url: "https://pub.dev" + source: hosted + version: "6.0.3" printing: dependency: transitive description: @@ -1926,58 +2021,58 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: ee6257848f822b8481691f20c3e6d2bfee2e9eccb2a3d249907fcfb198c55b41 + sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" url: "https://pub.dev" source: hosted - version: "2.0.18" + version: "2.5.3" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" + sha256: bd14436108211b0d4ee5038689a56d4ae3620fd72fd6036e113bf1345bc74d9e url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.4.13" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" + sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.5.4" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.1" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.1" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf + sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.4.3" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.1" shelf: dependency: transitive description: @@ -2027,26 +2122,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -2059,58 +2154,58 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" super_tag_editor: dependency: "direct main" description: name: super_tag_editor - sha256: fbf81653bc01a89e6fe63b9ae01cc12d557020cf74c870ed49e8e406ad710aac + sha256: "83823674fa1048eb0411d169c9072028fa80ba6998ef18b357c29f58b835ea75" url: "https://pub.dev" source: hosted - version: "0.3.3" + version: "0.4.1" syncfusion_flutter_core: dependency: transitive description: name: syncfusion_flutter_core - sha256: "87cbeee9b916e013eedbd43bf07f253c34dd5184c88325e5227434e0f8b89a68" + sha256: bfd026c0f9822b49ff26fed11cd3334519acb6a6ad4b0c81d9cd18df6af1c4c0 url: "https://pub.dev" source: hosted - version: "26.1.40" + version: "30.2.7" syncfusion_flutter_datepicker: dependency: transitive description: name: syncfusion_flutter_datepicker - sha256: ebc10c86618a8c410f4707dc6ff354daccb13d5f8a65f5fffa69a07806e4e0dd + sha256: b5f35cc808e91b229d41613efe71dadab1549a35bfd493f922fc06ccc2fe908c url: "https://pub.dev" source: hosted - version: "26.1.40" + version: "30.2.7" synchronized: dependency: transitive description: name: synchronized - sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" + sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 url: "https://pub.dev" source: hosted - version: "3.3.0+3" + version: "3.4.0" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" textfield_tags: dependency: "direct main" description: @@ -2123,10 +2218,10 @@ packages: dependency: "direct main" description: name: timeago - sha256: "054cedf68706bb142839ba0ae6b135f6b68039f0b8301cbe8784ae653d5ff8de" + sha256: b05159406a97e1cbb2b9ee4faa9fb096fe0e2dfcd8b08fcd2a00553450d3422e url: "https://pub.dev" source: hosted - version: "3.7.0" + version: "3.7.1" timezone: dependency: transitive description: @@ -2147,8 +2242,8 @@ packages: dependency: "direct main" description: path: "." - ref: main - resolved-ref: dea73316291d9d3871da14a4f2b13130865dbbd8 + ref: "update/flutter-3.32.8" + resolved-ref: a67d478c6d73582e37f49f78c2d83ca7c240db73 url: "https://github.com/linagora/twake-previewer-flutter.git" source: git version: "0.0.15" @@ -2308,10 +2403,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" watcher: dependency: transitive description: @@ -2380,10 +2475,34 @@ packages: dependency: "direct main" description: name: workmanager - sha256: e0be7e35d644643f164ee45d2ce14414f0e0fdde19456aa66065f35a0b1d2ea1 + sha256: "065673b2a465865183093806925419d311a9a5e0995aa74ccf8920fd695e2d10" + url: "https://pub.dev" + source: hosted + version: "0.9.0+3" + workmanager_android: + dependency: transitive + description: + name: workmanager_android + sha256: "9ae744db4ef891f5fcd2fb8671fccc712f4f96489a487a1411e0c8675e5e8cb7" + url: "https://pub.dev" + source: hosted + version: "0.9.0+2" + workmanager_apple: + dependency: transitive + description: + name: workmanager_apple + sha256: "1cc12ae3cbf5535e72f7ba4fde0c12dd11b757caf493a28e22d684052701f2ca" + url: "https://pub.dev" + source: hosted + version: "0.9.1+2" + workmanager_platform_interface: + dependency: transitive + description: + name: workmanager_platform_interface + sha256: f40422f10b970c67abb84230b44da22b075147637532ac501729256fcea10a47 url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.9.1+1" xdg_directories: dependency: transitive description: @@ -2409,5 +2528,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.6.0 <4.0.0" - flutter: ">=3.27.0" + dart: ">=3.8.1 <4.0.0" + flutter: ">=3.32.0" diff --git a/pubspec.yaml b/pubspec.yaml index d4b6374aea..625d7a24a2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -102,29 +102,29 @@ dependencies: url: https://github.com/linagora/linagora-design-flutter.git ref: master - # TODO: Fix bug where apps cannot be launched on iOS 18. We will change it when the PR in upstream repository will be merged - # https://github.com/GeekyAnts/external_app_launcher/pull/42 - external_app_launcher: + ### Original dependency is abandoned, so we use fork + ### https://github.com/linagora/intl_generator/pull/1 + intl_generator: git: - url: https://github.com/putnokiabel/external_app_launcher.git + url: https://github.com/linagora/intl_generator.git ref: master ### Dependencies from pub.dev ### - super_tag_editor: 0.3.3 + super_tag_editor: 0.4.1 + + external_app_launcher: 4.0.3 cupertino_icons: 1.0.6 get: 4.6.6 - intl_generator: 0.4.1 - flutter_svg: 2.1.0 dio: 5.0.0 equatable: 2.0.5 - shared_preferences: 2.0.18 + shared_preferences: 2.5.3 dartz: 0.10.1 @@ -136,21 +136,21 @@ dependencies: http_parser: 4.0.2 - collection: 1.19.0 + collection: 1.19.1 filesize: 2.0.1 uuid: 3.0.7 - flutter_downloader: 1.10.2 + flutter_downloader: 1.12.0 - external_path: 1.0.3 + external_path: 2.2.0 path_provider: 2.1.5 device_info_plus: 9.0.1 - permission_handler: 10.2.0 + permission_handler: 12.0.1 share_plus: 7.2.1 @@ -168,9 +168,9 @@ dependencies: flutter_portal: 1.1.3 - timeago: 3.7.0 + timeago: 3.7.1 - better_open_file: 3.6.4 + open_file: 3.5.10 flutter_appauth: 9.0.1 @@ -178,7 +178,7 @@ dependencies: worker_manager: 5.0.3 - async: 2.11.0 + async: 2.13.0 html: 0.15.3 @@ -208,9 +208,9 @@ dependencies: flutter_appauth_platform_interface: 9.0.0 - intl: 0.19.0 + intl: 0.20.2 - workmanager: 0.5.1 + workmanager: 0.9.0+3 flutter_typeahead: 5.0.2 @@ -246,7 +246,7 @@ dependencies: web_socket_channel: 3.0.3 - flutter_web_auth_2: 3.1.1 + flutter_web_auth_2: 4.1.0 app_links: 6.3.2 @@ -261,7 +261,7 @@ dependencies: twake_previewer_flutter: git: url: https://github.com/linagora/twake-previewer-flutter.git - ref: main + ref: update/flutter-3.32.8 lottie_native: 0.1.2 @@ -287,11 +287,11 @@ dev_dependencies: http_mock_adapter: 0.4.2 - patrol: 3.14.0 + patrol: 3.19.0 - patrol_log: 0.3.0 + patrol_log: 0.5.0 - patrol_finders: 2.7.2 + patrol_finders: 2.9.0 plugin_platform_interface: 2.1.8 @@ -308,15 +308,6 @@ dependency_overrides: ref: 18f92b53295e9eb77ebd4830d905a72cd404a126 path: overrides/hive - # TODO: The package publisher fixed the issue with android API 35. - # However, they bundled it with the Flutter 3.27.4. - # When this app upgrade to Flutter 3.27.4, we will update this package - # and remove this override. - flutter_downloader: - git: - url: https://github.com/linagora/flutter_downloader.git - ref: fixbug/android-api-35 - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/rule_filter/pubspec.lock b/rule_filter/pubspec.lock index 33c3885a02..073e3e1394 100644 --- a/rule_filter/pubspec.lock +++ b/rule_filter/pubspec.lock @@ -29,18 +29,18 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -109,10 +109,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -141,10 +141,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" convert: dependency: transitive description: @@ -197,10 +197,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" file: dependency: transitive description: @@ -328,18 +328,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -368,10 +368,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -384,10 +384,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: transitive description: @@ -416,10 +416,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" pool: dependency: transitive description: @@ -493,26 +493,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -525,26 +525,26 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" timing: dependency: transitive description: @@ -573,10 +573,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" watcher: dependency: transitive description: @@ -602,5 +602,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.4.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/server_settings/pubspec.lock b/server_settings/pubspec.lock index 564aa328a6..1d92bfe451 100644 --- a/server_settings/pubspec.lock +++ b/server_settings/pubspec.lock @@ -29,18 +29,18 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -109,10 +109,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -141,10 +141,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" convert: dependency: transitive description: @@ -197,10 +197,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" file: dependency: transitive description: @@ -320,18 +320,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -352,10 +352,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -368,10 +368,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: transitive description: @@ -400,10 +400,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" pool: dependency: transitive description: @@ -477,26 +477,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -509,26 +509,26 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" timing: dependency: transitive description: @@ -557,10 +557,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "15.0.0" watcher: dependency: transitive description: @@ -586,5 +586,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.4.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54"