diff --git a/.fvmrc b/.fvmrc index 971587f29..ee6eaac06 100644 --- a/.fvmrc +++ b/.fvmrc @@ -1,3 +1,3 @@ { - "flutter": "3.24.0" + "flutter": "3.24.3" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cf85a701..9c7816f26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,90 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 2024-10-03 + +### Changes + +--- + +Packages with breaking changes: + + - There are no breaking changes in this release. + +Packages with other changes: + + - [`studyu_app` - `v2.7.11`](#studyu_app---v2711) + - [`studyu_core` - `v4.4.8`](#studyu_core---v448) + - [`studyu_designer_v2` - `v1.9.2`](#studyu_designer_v2---v192) + - [`studyu_flutter_common` - `v1.8.9`](#studyu_flutter_common---v189) + +--- + +#### `studyu_app` - `v2.7.11` + + - **FIX**: upgrade deps. + - **FIX**: notification scheduling. + - **FIX**: upgrade fvm to flutter v3.24.3. + - **FIX**: prompt user to restart after reset. + - **FIX**: debug screen. + +#### `studyu_core` - `v4.4.8` + + - **FIX**: upgrade deps. + - **FIX**: upgrade fvm to flutter v3.24.3. + +#### `studyu_designer_v2` - `v1.9.2` + + - **FIX**: upgrade deps. + - **FIX**: upgrade fvm to flutter v3.24.3. + +#### `studyu_flutter_common` - `v1.8.9` + + - **FIX**: upgrade deps. + - **FIX**: upgrade fvm to flutter v3.24.3. + + +## 2024-09-05 + +### Changes + +--- + +Packages with breaking changes: + + - There are no breaking changes in this release. + +Packages with other changes: + + - [`studyu_app` - `v2.7.10`](#studyu_app---v2710) + - [`studyu_core` - `v4.4.7`](#studyu_core---v447) + - [`studyu_designer_v2` - `v1.9.1`](#studyu_designer_v2---v191) + - [`studyu_flutter_common` - `v1.8.8`](#studyu_flutter_common---v188) + +--- + +#### `studyu_app` - `v2.7.10` + + - **FIX**: schedule notifications for 7 days. + - **FIX**: refactor notification cancelling and add missing translations. + - **FIX**: upgrade to flutter v3.24.2. + - **FIX**: maybe prevent blank screen in notification debug view. + +#### `studyu_core` - `v4.4.7` + + - **FIX**: upgrade to flutter v3.24.2. + - **FIX**: result history filter. + +#### `studyu_designer_v2` - `v1.9.1` + + - **FIX**: upgrade to flutter v3.24.2. + - **FIX**: hotfix to sanitize export contents. + +#### `studyu_flutter_common` - `v1.8.8` + + - **FIX**: upgrade to flutter v3.24.2. + + ## 2024-08-12 ### Changes diff --git a/app/CHANGELOG.md b/app/CHANGELOG.md index bc822767f..be4e8a7ce 100644 --- a/app/CHANGELOG.md +++ b/app/CHANGELOG.md @@ -1,3 +1,18 @@ +## 2.7.11 + + - **FIX**: upgrade deps. + - **FIX**: notification scheduling. + - **FIX**: upgrade fvm to flutter v3.24.3. + - **FIX**: prompt user to restart after reset. + - **FIX**: debug screen. + +## 2.7.10 + + - **FIX**: schedule notifications for 7 days. + - **FIX**: refactor notification cancelling and add missing translations. + - **FIX**: upgrade to flutter v3.24.2. + - **FIX**: maybe prevent blank screen in notification debug view. + ## 2.7.9 - **FIX**: upgrade deps. diff --git a/app/android/Gemfile.lock b/app/android/Gemfile.lock index 36bc73a61..0e8d36c18 100644 --- a/app/android/Gemfile.lock +++ b/app/android/Gemfile.lock @@ -10,20 +10,20 @@ GEM artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.3.0) - aws-partitions (1.962.0) - aws-sdk-core (3.201.3) + aws-partitions (1.981.0) + aws-sdk-core (3.209.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.8) + aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.88.0) - aws-sdk-core (~> 3, >= 3.201.0) + aws-sdk-kms (1.94.0) + aws-sdk-core (~> 3, >= 3.207.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.157.0) - aws-sdk-core (~> 3, >= 3.201.0) + aws-sdk-s3 (1.166.0) + aws-sdk-core (~> 3, >= 3.207.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) - aws-sigv4 (1.9.1) + aws-sigv4 (1.10.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) base64 (0.2.0) @@ -39,7 +39,7 @@ GEM dotenv (2.8.1) emoji_regex (3.2.3) excon (0.111.0) - faraday (1.10.3) + faraday (1.10.4) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -65,10 +65,10 @@ GEM faraday-patron (1.0.0) faraday-rack (1.0.0) faraday-retry (1.0.3) - faraday_middleware (1.2.0) + faraday_middleware (1.2.1) faraday (~> 1.0) fastimage (2.3.1) - fastlane (2.222.0) + fastlane (2.223.1) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -147,12 +147,12 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.6) + http-cookie (1.0.7) domain_name (~> 0.5) httpclient (2.8.3) jmespath (1.6.2) json (2.7.2) - jwt (2.8.2) + jwt (2.9.1) base64 mini_magick (4.13.2) mini_mime (1.1.5) @@ -171,8 +171,7 @@ GEM trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.3.4) - strscan + rexml (3.3.8) rouge (2.0.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) @@ -185,7 +184,6 @@ GEM simctl (1.6.10) CFPropertyList naturally - strscan (3.1.0) terminal-notifier (2.0.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) @@ -195,7 +193,7 @@ GEM tty-spinner (0.9.3) tty-cursor (~> 0.7) uber (0.1.0) - unicode-display_width (2.5.0) + unicode-display_width (2.6.0) word_wrap (1.0.0) xcodeproj (1.25.0) CFPropertyList (>= 2.3.3, < 4.0) diff --git a/app/ios/Gemfile.lock b/app/ios/Gemfile.lock index 550f7ffaa..0e8d36c18 100644 --- a/app/ios/Gemfile.lock +++ b/app/ios/Gemfile.lock @@ -10,20 +10,20 @@ GEM artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.3.0) - aws-partitions (1.956.0) - aws-sdk-core (3.201.1) + aws-partitions (1.981.0) + aws-sdk-core (3.209.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.8) + aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.88.0) - aws-sdk-core (~> 3, >= 3.201.0) + aws-sdk-kms (1.94.0) + aws-sdk-core (~> 3, >= 3.207.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.156.0) - aws-sdk-core (~> 3, >= 3.201.0) + aws-sdk-s3 (1.166.0) + aws-sdk-core (~> 3, >= 3.207.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) - aws-sigv4 (1.8.0) + aws-sigv4 (1.10.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) base64 (0.2.0) @@ -39,7 +39,7 @@ GEM dotenv (2.8.1) emoji_regex (3.2.3) excon (0.111.0) - faraday (1.10.3) + faraday (1.10.4) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -60,15 +60,15 @@ GEM faraday-httpclient (1.0.1) faraday-multipart (1.0.4) multipart-post (~> 2) - faraday-net_http (1.0.1) + faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) faraday-retry (1.0.3) - faraday_middleware (1.2.0) + faraday_middleware (1.2.1) faraday (~> 1.0) fastimage (2.3.1) - fastlane (2.221.1) + fastlane (2.223.1) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -126,7 +126,7 @@ GEM google-apis-core (>= 0.11.0, < 2.a) google-apis-storage_v1 (0.31.0) google-apis-core (>= 0.11.0, < 2.a) - google-cloud-core (1.7.0) + google-cloud-core (1.7.1) google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) @@ -147,12 +147,12 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.6) + http-cookie (1.0.7) domain_name (~> 0.5) httpclient (2.8.3) jmespath (1.6.2) json (2.7.2) - jwt (2.8.2) + jwt (2.9.1) base64 mini_magick (4.13.2) mini_mime (1.1.5) @@ -164,15 +164,14 @@ GEM optparse (0.5.0) os (1.1.4) plist (3.7.1) - public_suffix (6.0.0) + public_suffix (6.0.1) rake (13.2.1) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.9) - strscan + rexml (3.3.8) rouge (2.0.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) @@ -185,7 +184,6 @@ GEM simctl (1.6.10) CFPropertyList naturally - strscan (3.1.0) terminal-notifier (2.0.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) @@ -195,15 +193,15 @@ GEM tty-spinner (0.9.3) tty-cursor (~> 0.7) uber (0.1.0) - unicode-display_width (2.5.0) + unicode-display_width (2.6.0) word_wrap (1.0.0) - xcodeproj (1.24.0) + xcodeproj (1.25.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) nanaimo (~> 0.3.0) - rexml (~> 3.2.4) + rexml (>= 3.3.2, < 4.0) xcpretty (0.3.0) rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) diff --git a/app/ios/Podfile.lock b/app/ios/Podfile.lock index 1d65fb369..a7c092136 100644 --- a/app/ios/Podfile.lock +++ b/app/ios/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - app_links (0.0.1): + - app_links (0.0.2): - Flutter - audio_session (0.0.1): - Flutter @@ -26,11 +26,11 @@ PODS: - record_darwin (1.0.0): - Flutter - FlutterMacOS - - Sentry/HybridSDK (8.32.0) - - sentry_flutter (8.6.0): + - Sentry/HybridSDK (8.36.0) + - sentry_flutter (8.9.0): - Flutter - FlutterMacOS - - Sentry/HybridSDK (= 8.32.0) + - Sentry/HybridSDK (= 8.36.0) - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS @@ -46,6 +46,7 @@ PODS: - Flutter - webview_flutter_wkwebview (0.0.1): - Flutter + - FlutterMacOS DEPENDENCIES: - app_links (from `.symlinks/plugins/app_links/ios`) @@ -67,7 +68,7 @@ DEPENDENCIES: - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`) - - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`) + - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/darwin`) SPEC REPOS: trunk: @@ -113,10 +114,10 @@ EXTERNAL SOURCES: wakelock_plus: :path: ".symlinks/plugins/wakelock_plus/ios" webview_flutter_wkwebview: - :path: ".symlinks/plugins/webview_flutter_wkwebview/ios" + :path: ".symlinks/plugins/webview_flutter_wkwebview/darwin" SPEC CHECKSUMS: - app_links: e70ca16b4b0f88253b3b3660200d4a10b4ea9795 + app_links: e7a6750a915a9e161c58d91bc610e8cd1d4d0ad0 audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207 camera_avfoundation: dd002b0330f4981e1bbcb46ae9b62829237459a4 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 @@ -129,14 +130,14 @@ SPEC CHECKSUMS: path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 record_darwin: df0a677188e5fed18472550298e675f19ddaffbe - Sentry: 96ae1dcdf01a644bc3a3b1dc279cecaf48a833fb - sentry_flutter: 090351ce1ff5f96a4b33ef9455b7e3b28185387d + Sentry: f8374b5415bc38dfb5645941b3ae31230fbeae57 + sentry_flutter: 0eb93e5279eb41e2392212afe1ccd2fecb4f8cbe shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1 - webview_flutter_wkwebview: 2a23822e9039b7b1bc52e5add778e5d89ad488d1 + webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4 PODFILE CHECKSUM: 666752a84cc2c75e2476eadd0afa8f31ee5056b0 diff --git a/app/lib/l10n/app_de.arb b/app/lib/l10n/app_de.arb index bd312db03..145f4e374 100644 --- a/app/lib/l10n/app_de.arb +++ b/app/lib/l10n/app_de.arb @@ -52,6 +52,9 @@ "study_current": "Aktuelle Studie:", "opt_out": "Aussteigen", "delete_data": "Aussteigen und Daten löschen", + "soft_delete_desc": "Sie werden Ihren Fortschritt in der Studie ", + "soft_delete_desc_2": " unwiederbringlich verlieren. Bereits abgeschlossene Studien werden nicht gelöscht.\nIhre anonymisierten Daten bis zu diesem Zeitpunkt können weiterhin für Forschungszwecke verwendet werden.", + "hard_delete_desc": "Sie werden alle Daten von Ihrem Gerät und unseren Servern löschen. Sie können Ihre Daten nicht wiederherstellen. Ihre anonymisierten Daten werden nicht mehr für Forschungszwecke zur Verfügung stehen.", "summary": "Übersicht", "consent": "Einverständnis", diff --git a/app/lib/l10n/app_en.arb b/app/lib/l10n/app_en.arb index b2301dba5..61bd46ea1 100644 --- a/app/lib/l10n/app_en.arb +++ b/app/lib/l10n/app_en.arb @@ -51,7 +51,10 @@ "intervention_current": "Current intervention", "study_current": "Current study:", "opt_out": "Leave study", - "delete_data": "Leave study & delete all data", + "delete_data": "Leave study and delete all data", + "soft_delete_desc": "You will lose your progress in ", + "soft_delete_desc_2": " and won't be able to recover it. Previously completed studies will not be deleted.\nYour anonymized data up to this point may still be used for research purposes.", + "hard_delete_desc": "You are about to delete all data from your device and our servers. You will not be able to restore your data.\nYour anonymized data will not be available for research purposes anymore.", "your_journey": "Your Journey", "journey_results_available": "Results available", diff --git a/app/lib/screens/app_onboarding/loading_screen.dart b/app/lib/screens/app_onboarding/loading_screen.dart index 6dfebcb62..8e8fb2317 100644 --- a/app/lib/screens/app_onboarding/loading_screen.dart +++ b/app/lib/screens/app_onboarding/loading_screen.dart @@ -10,6 +10,7 @@ import 'package:studyu_app/screens/app_onboarding/preview.dart'; import 'package:studyu_app/screens/study/onboarding/eligibility_screen.dart'; import 'package:studyu_app/screens/study/tasks/task_screen.dart'; import 'package:studyu_app/util/cache.dart'; +import 'package:studyu_app/util/schedule_notifications.dart'; import 'package:studyu_core/core.dart'; import 'package:studyu_flutter_common/studyu_flutter_common.dart'; @@ -39,7 +40,7 @@ class _LoadingScreenState extends State { if (!mounted) return; if (selectedSubjectId == null) { - Navigator.pushReplacementNamed(context, Routes.welcome); + await noSubjectFound(); return; } StudySubject? subject = await _retrieveSubject(selectedSubjectId); @@ -51,10 +52,15 @@ class _LoadingScreenState extends State { state.init(context); Navigator.pushReplacementNamed(context, Routes.dashboard); } else { - Navigator.pushReplacementNamed(context, Routes.welcome); + await noSubjectFound(); } } + Future noSubjectFound() async { + await cancelNotifications(context); + if (mounted) Navigator.pushReplacementNamed(context, Routes.welcome); + } + Future _fetchRemoteSubject(String selectedStudyObjectId) { return SupabaseQuery.getById( selectedStudyObjectId, diff --git a/app/lib/screens/app_onboarding/welcome.dart b/app/lib/screens/app_onboarding/welcome.dart index 175f5c04a..d4f5c3025 100644 --- a/app/lib/screens/app_onboarding/welcome.dart +++ b/app/lib/screens/app_onboarding/welcome.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; - import 'package:studyu_app/routes.dart'; +import 'package:studyu_app/util/debug_screen.dart'; class WelcomeScreen extends StatelessWidget { const WelcomeScreen({super.key}); @@ -16,9 +16,14 @@ class WelcomeScreen extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ const Spacer(), - const Image( - image: AssetImage('assets/icon/logo.png'), - height: 200, + GestureDetector( + onDoubleTap: () { + DebugScreen.showDebugScreen(context); + }, + child: const Image( + image: AssetImage('assets/icon/logo.png'), + height: 200, + ), ), const SizedBox(height: 20), OutlinedButton.icon( diff --git a/app/lib/screens/study/dashboard/contact_tab/faq.dart b/app/lib/screens/study/dashboard/contact_tab/faq.dart index 97e1cfc5a..337af3ae7 100644 --- a/app/lib/screens/study/dashboard/contact_tab/faq.dart +++ b/app/lib/screens/study/dashboard/contact_tab/faq.dart @@ -174,7 +174,7 @@ final data_de = [ ], ), Entry( - 'das Studium', + 'Die Studie', [ Entry( 'Wie lange dauert es, bis die Studie abgeschlossen ist?', diff --git a/app/lib/screens/study/dashboard/dashboard.dart b/app/lib/screens/study/dashboard/dashboard.dart index 108970a69..dd9ced3f6 100644 --- a/app/lib/screens/study/dashboard/dashboard.dart +++ b/app/lib/screens/study/dashboard/dashboard.dart @@ -7,14 +7,12 @@ import 'package:flutter/scheduler.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; import 'package:package_info_plus/package_info_plus.dart'; -import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; import 'package:studyu_app/models/app_state.dart'; import 'package:studyu_app/routes.dart'; import 'package:studyu_app/screens/study/dashboard/task_overview_tab/task_overview.dart'; import 'package:studyu_app/screens/study/report/report_details.dart'; -import 'package:studyu_app/util/notifications.dart'; -import 'package:studyu_app/util/schedule_notifications.dart'; +import 'package:studyu_app/util/debug_screen.dart'; import 'package:studyu_core/core.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -90,10 +88,6 @@ class _DashboardScreenState extends State super.dispose(); } - Future receivePermission() async { - return await Permission.ignoreBatteryOptimizations.request().isGranted; - } - @override Widget build(BuildContext context) { if (subject == null) { @@ -170,58 +164,7 @@ class _DashboardScreenState extends State context: context, applicationIcon: GestureDetector( onDoubleTap: () { - showDialog( - context: context, - builder: (_) => AlertDialog( - title: const SelectableText( - 'Notification Log', - ), - content: Column( - children: [ - ElevatedButton( - onPressed: () { - final Uri emailLaunchUri = Uri( - scheme: 'mailto', - path: subject!.study.contact.email, - queryParameters: { - 'subject': - '[StudyU] Debug Information', - 'body': StudyNotifications - .scheduledNotificationsDebug, - }, - ); - launchUrl(emailLaunchUri); - }, - child: const Text('Send via email'), - ), - FutureBuilder( - future: receivePermission(), - builder: ( - context, - AsyncSnapshot snapshot, - ) { - if (snapshot.hasData) { - final String data = - "ignoreBatteryOptimizations: ${snapshot.data}"; - StudyNotifications - .scheduledNotificationsDebug = - "${StudyNotifications.scheduledNotificationsDebug}\n\n$data\n"; - return Text(data); - } else { - return const CircularProgressIndicator(); - } - }, - ), - SelectableText( - StudyNotifications - .scheduledNotificationsDebug!, - ), - ], - ), - scrollable: true, - ), - ); - testNotifications(context); + DebugScreen.showDebugScreen(context); }, child: const Image( image: AssetImage('assets/icon/icon.png'), diff --git a/app/lib/screens/study/dashboard/settings.dart b/app/lib/screens/study/dashboard/settings.dart index 485666fb9..df45f8fe9 100644 --- a/app/lib/screens/study/dashboard/settings.dart +++ b/app/lib/screens/study/dashboard/settings.dart @@ -8,6 +8,7 @@ import 'package:studyu_app/models/app_state.dart'; import 'package:studyu_app/routes.dart'; import 'package:studyu_app/util/app_analytics.dart'; import 'package:studyu_app/util/localization.dart'; +import 'package:studyu_app/util/schedule_notifications.dart'; import 'package:studyu_core/core.dart'; import 'package:studyu_flutter_common/studyu_flutter_common.dart'; @@ -161,13 +162,12 @@ class OptOutAlertDialog extends StatelessWidget { Widget build(BuildContext context) { final theme = Theme.of(context); return AlertDialog( - title: Text('${AppLocalizations.of(context)!.opt_out} ?'), + title: Text('${AppLocalizations.of(context)!.opt_out}?'), content: RichText( text: TextSpan( style: const TextStyle(color: Colors.black), children: [ - // todo translate - const TextSpan(text: 'You will lose your progress in '), + TextSpan(text: AppLocalizations.of(context)!.soft_delete_desc), TextSpan( text: subject!.study.title, style: TextStyle( @@ -176,11 +176,7 @@ class OptOutAlertDialog extends StatelessWidget { fontSize: 16, ), ), - const TextSpan( - text: " and won't be able to recover it. Previously completed " - 'studies will not be deleted.\nYour anonymized data up to this ' - 'point may still be used for research purposes.', - ), + TextSpan(text: AppLocalizations.of(context)!.soft_delete_desc_2), ], ), ), @@ -192,13 +188,7 @@ class OptOutAlertDialog extends StatelessWidget { onPressed: () async { await subject!.softDelete(); await deleteActiveStudyReference(); - if (context.mounted) { - final studyNotifications = context - .read() - .studyNotifications - ?.flutterLocalNotificationsPlugin; - await studyNotifications?.cancelAll(); - } + if (context.mounted) await cancelNotifications(context); if (context.mounted) { Navigator.pushNamedAndRemoveUntil( context, @@ -220,12 +210,9 @@ class DeleteAlertDialog extends StatelessWidget { @override Widget build(BuildContext context) => AlertDialog( - title: Text('${AppLocalizations.of(context)!.delete_data} ?'), - // todo translate - content: const Text( - 'You are about to delete all data from your device and our servers. ' - 'You will not be able to restore your data.\nYour anonymized data will ' - 'not be available for research purposes anymore.', + title: Text('${AppLocalizations.of(context)!.delete_data}?'), + content: Text( + AppLocalizations.of(context)!.hard_delete_desc, ), actions: [ ElevatedButton.icon( @@ -236,13 +223,7 @@ class DeleteAlertDialog extends StatelessWidget { try { await subject!.delete(); // hard-delete await deleteLocalData(); - if (context.mounted) { - final studyNotifications = context - .read() - .studyNotifications - ?.flutterLocalNotificationsPlugin; - await studyNotifications?.cancelAll(); - } + if (context.mounted) await cancelNotifications(context); if (context.mounted) { Navigator.pushNamedAndRemoveUntil( context, diff --git a/app/lib/util/debug_screen.dart b/app/lib/util/debug_screen.dart new file mode 100644 index 000000000..98a53663e --- /dev/null +++ b/app/lib/util/debug_screen.dart @@ -0,0 +1,225 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:provider/provider.dart'; +import 'package:studyu_app/models/app_state.dart'; +import 'package:studyu_app/util/notifications.dart'; +import 'package:studyu_app/util/schedule_notifications.dart'; +import 'package:studyu_core/core.dart'; +import 'package:studyu_flutter_common/studyu_flutter_common.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class DebugScreen { + static void showDebugScreen(BuildContext context) { + final studyNotifications = context.read().studyNotifications; + + final pendingNotifications = studyNotifications != null + ? studyNotifications.flutterLocalNotificationsPlugin + .pendingNotificationRequests() + : Future.value([]); + + final pendingNotificationsPlugin = + FlutterLocalNotificationsPlugin().pendingNotificationRequests(); + + bool? ignoreBatteryOptimizations; + int? pendingNotificationRes; + int? pendingNotificationsPluginRes; + + showDialog( + context: context, + builder: (_) => AlertDialog( + title: const SelectableText( + 'Debug Screen', + ), + content: Column( + children: [ + ElevatedButton( + onPressed: () { + AppConfig.getAppContact().then((value) { + final Uri emailLaunchUri = Uri( + scheme: 'mailto', + path: value.email, + queryParameters: { + 'subject': '[StudyU] Debug Information', + 'body': 'ignoreBatteryOptimizations: ${ignoreBatteryOptimizations ?? 'null'}\n' + 'pendingNotificationsNumber: ${pendingNotificationRes ?? 'null'}\n' + 'pendingNotificationsPluginNumber: ${pendingNotificationsPluginRes ?? 'null'}\n' + 'scheduledNotificationsDebug: ${StudyNotifications.scheduledNotificationsDebug}', + }, + ); + launchUrl(emailLaunchUri); + }); + }, + style: ElevatedButton.styleFrom( + backgroundColor: Theme.of(context).primaryColor, + ), + child: const Text('Send debug information via email'), + ), + if (context.read().studyNotifications != null) + ElevatedButton( + onPressed: () { + testNotification(context); + }, + style: ElevatedButton.styleFrom( + backgroundColor: Theme.of(context).colorScheme.secondary, + ), + child: const Text('Receive test notification'), + ), + ElevatedButton( + onPressed: () { + showDialog( + context: context, + builder: (_) => AlertDialog( + title: const Text('Reset App?'), + content: const Text( + 'This will delete all data and reset the app.', + ), + actions: [ + TextButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: const Text('Cancel'), + ), + TextButton( + onPressed: () async { + await _deleteCacheDir(); + await _deleteAppDir(); + await SecureStorage.deleteAll(); + if (context.mounted) { + Navigator.of(context).pop(); + Navigator.of(context).pop(); + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text( + 'App reset successfully! Please restart the app.', + ), + ), + ); + await Future.delayed(const Duration(seconds: 1)); + await SystemChannels.platform + .invokeMethod('SystemNavigator.pop'); + } + }, + child: const Text('Reset'), + ), + ], + ), + ); + }, + style: ElevatedButton.styleFrom( + backgroundColor: Theme.of(context).colorScheme.error, + ), + child: const Text('Reset App'), + ), + FutureBuilder( + future: receivePermission(), + builder: ( + context, + AsyncSnapshot snapshot, + ) { + if (snapshot.hasData) { + final String data = + "ignoreBatteryOptimizations: ${snapshot.data}"; + ignoreBatteryOptimizations = snapshot.data; + return Text(data); + } else { + return const CircularProgressIndicator(); + } + }, + ), + FutureBuilder( + future: pendingNotifications, + builder: ( + context, + AsyncSnapshot snapshot, + ) { + if (snapshot.hasData) { + pendingNotificationRes = snapshot.data!.length; + return Text( + 'Number of Pending Notifications: $pendingNotificationRes', + ); + } else if (snapshot.hasError) { + return Text( + 'Pending Notifications: Error: ${snapshot.error}', + ); + } else { + return const CircularProgressIndicator(); + } + }, + ), + FutureBuilder>( + future: pendingNotificationsPlugin, + builder: ( + context, + AsyncSnapshot> snapshot, + ) { + if (snapshot.hasData) { + pendingNotificationsPluginRes = snapshot.data!.length; + return Text( + 'Local Notifications Plugin Number of Pending Notifications: $pendingNotificationsPluginRes', + ); + } else if (snapshot.hasError) { + return Text( + 'Pending Notifications Plugin: Error: ${snapshot.error}', + ); + } else { + return const CircularProgressIndicator(); + } + }, + ), + const Text("Scheduled Notifications:"), + SelectableText( + StudyNotifications.scheduledNotificationsDebug ?? 'No data', + ), + ], + ), + scrollable: true, + ), + ); + } + + static Future testNotification(BuildContext context) async { + final studyNotifications = context.read().studyNotifications; + if (studyNotifications == null) { + Navigator.of(context).pop(); + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text( + 'Notifications are not initialized yet. Please start a study and open this through the about section.', + ), + ), + ); + return; + } + await studyNotifications.flutterLocalNotificationsPlugin.show( + /*******************/ + 99, + 'StudyU Test Notification', + 'This notification confirms that you receive StudyU notifications', + /*******************/ + notificationDetails, + ); + } + + static Future receivePermission() async { + return await Permission.ignoreBatteryOptimizations.request().isGranted; + } + + static Future _deleteCacheDir() async { + final cacheDir = await getTemporaryDirectory(); + + if (cacheDir.existsSync()) { + cacheDir.deleteSync(recursive: true); + } + } + + static Future _deleteAppDir() async { + final appDir = await getApplicationSupportDirectory(); + if (appDir.existsSync()) { + appDir.deleteSync(recursive: true); + } + } +} diff --git a/app/lib/util/notifications.dart b/app/lib/util/notifications.dart index f5537381e..bca124296 100644 --- a/app/lib/util/notifications.dart +++ b/app/lib/util/notifications.dart @@ -39,7 +39,7 @@ class StudyNotifications { static final NotificationValidators validator = NotificationValidators(false, false, false); - static const bool debug = false; //kDebugMode; + static const bool debug = kDebugMode; //kDebugMode; static String? scheduledNotificationsDebug; /// Private constructor diff --git a/app/lib/util/schedule_notifications.dart b/app/lib/util/schedule_notifications.dart index a87613953..9113b54db 100644 --- a/app/lib/util/schedule_notifications.dart +++ b/app/lib/util/schedule_notifications.dart @@ -31,12 +31,11 @@ Future scheduleReminderForDate( if (date.isSameDate(DateTime.now()) && !StudyUTimeOfDay(hour: date.hour, minute: date.minute) .earlierThan(reminder, exact: true)) { - final String debugStr = - 'Skipped #$currentId: $reminderTime, ${task.title}, ${studyNotification.taskInstance.id}'; - //StudyNotifications.scheduledNotificationsDebug += '\n\n$debugStr'; + /* final String debugStr = 'Skipped #$currentId: $reminderTime, ${task.title}, ${studyNotification.taskInstance.id}'; + // StudyNotifications.scheduledNotificationsDebug += '\n\n$debugStr'; if (StudyNotifications.debug) { print(debugStr); - } + } */ continue; } @@ -96,24 +95,24 @@ Future scheduleNotifications(BuildContext context) async { content: Text('Schedule Notifications'), ), ); + print('Schedule Notifications'); } // Notifications not supported on web if (kIsWeb) return; final appState = context.read(); final subject = appState.activeSubject!; final body = AppLocalizations.of(context)!.study_notification_body; - final studyNotifications = appState.studyNotifications ?? + context.read().studyNotifications ??= await StudyNotifications.create(subject, context); - final notificationsPlugin = - studyNotifications.flutterLocalNotificationsPlugin; - await notificationsPlugin.cancelAll(); + appState.studyNotifications!.flutterLocalNotificationsPlugin; + notificationsPlugin.cancelAll(); StudyNotifications.scheduledNotificationsDebug = "Timestamp: ${DateTime.now()}\nSubject ID: ${subject.id}\n"; final List studyNotificationList = []; - for (int index = 0; index <= 3; index++) { + for (int index = 0; index <= 7; index++) { final date = DateTime.now().add(Duration(days: index)); final tasks = subject.scheduleFor(date); studyNotificationList.addAll(_buildNotificationList(subject, date, tasks)); @@ -157,21 +156,32 @@ List _buildNotificationList( return taskNotifications; } -Future testNotifications(BuildContext context) async { - // Notifications not supported on web - if (kIsWeb) return; +Future? cancelNotifications(BuildContext context) async { + if (kIsWeb) return Future.value(); // Notifications not supported on web final appState = context.read(); - final subject = appState.activeSubject; - final studyNotifications = appState.studyNotifications ?? - await StudyNotifications.create(subject, context); - await studyNotifications.flutterLocalNotificationsPlugin.show( - /*******************/ - 99, - 'StudyU Test Notification', - 'This notification confirms that you receive StudyU notifications', - /*******************/ - notificationDetails, - ); + final notificationsPlugin = + appState.studyNotifications?.flutterLocalNotificationsPlugin; + + await notificationsPlugin?.cancelAll(); + await FlutterLocalNotificationsPlugin().cancelAll(); + final list1 = await notificationsPlugin?.pendingNotificationRequests() ?? []; + final list2 = + await FlutterLocalNotificationsPlugin().pendingNotificationRequests(); + StudyNotifications.scheduledNotificationsDebug = 'cleared'; + if (context.mounted) context.read().studyNotifications = null; + if (StudyNotifications.debug) { + if (context.mounted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + 'Notifications cancelled and pending notifications are empty: ${list1.isEmpty && list2.isEmpty}', + ), + ), + ); + } + print('Notifications cancelled'); + } + return Future.value(); } class StudyNotification { diff --git a/app/pubspec.lock b/app/pubspec.lock index 189e740e6..b031054fe 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: app_links - sha256: ae5f9a1b7d40d26178f605414be81ed4260350b4fae8259fe5ca4f89fe70c4af + sha256: ad1a6d598e7e39b46a34f746f9a8b011ee147e4c275d407fa457e7a62f84dd99 url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.3.2" app_links_linux: dependency: transitive description: @@ -77,10 +77,10 @@ packages: dependency: transitive description: name: bidi - sha256: "1a7d0c696324b2089f72e7671fd1f1f64fef44c980f3cebc84e803967c597b63" + sha256: "9a712c7ddf708f7c41b1923aa83648a3ed44cfd75b04f72d598c45e5be287f9d" url: "https://pub.dev" source: hosted - version: "2.0.10" + version: "2.0.12" boolean_selector: dependency: transitive description: @@ -93,26 +93,26 @@ packages: dependency: transitive description: name: cached_network_image - sha256: "4a5d8d2c728b0f3d0245f69f921d7be90cae4c2fd5288f773088672c0893f819" + sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" url: "https://pub.dev" source: hosted - version: "3.4.0" + version: "3.4.1" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: ff0c949e323d2a1b52be73acce5b4a7b04063e61414c8ca542dbba47281630a7 + sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.1.1" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: "6322dde7a5ad92202e64df659241104a43db20ed594c41ca18de1014598d7996" + sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.1" camera: dependency: "direct main" description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: camera_android_camerax - sha256: "8bd9cab67551642eb33ceb33ece7acc0890014fc90ddfae637c7e2b683657e65" + sha256: "803e45c406de922bd107199089be3f3d5ae7ab0a1ff119a27a0062325541c50e" url: "https://pub.dev" source: hosted - version: "0.6.7+2" + version: "0.6.9" camera_avfoundation: dependency: transitive description: @@ -181,10 +181,10 @@ packages: dependency: transitive description: name: chewie - sha256: "2243e41e79e865d426d9dd9c1a9624aa33c4ad11de2d0cd680f826e2cd30e879" + sha256: "335df378c025588aef400c704bd71f0daea479d4cd57c471c88c056c1144e7cd" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.8.5" cli_util: dependency: transitive description: @@ -221,10 +221,10 @@ packages: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" csslib: dependency: transitive description: @@ -277,10 +277,10 @@ packages: dependency: transitive description: name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" file: dependency: transitive description: @@ -301,10 +301,10 @@ packages: dependency: "direct main" description: name: fl_chart - sha256: d0f0d49112f2f4b192481c16d05b6418bd7820e021e265a3c22db98acf7ed7fb + sha256: "94307bef3a324a0d329d3ab77b2f0c6e5ed739185ffc029ed28c0f9b019ea7ef" url: "https://pub.dev" source: hosted - version: "0.68.0" + version: "0.69.0" flutter: dependency: "direct main" description: flutter @@ -314,10 +314,10 @@ packages: dependency: transitive description: name: flutter_cache_manager - sha256: a77f77806a790eb9ba0118a5a3a936e81c4fea2b61533033b2b0c3d50bbde5ea + sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386" url: "https://pub.dev" source: hosted - version: "3.4.0" + version: "3.4.1" flutter_dotenv: dependency: transitive description: @@ -338,26 +338,26 @@ packages: dependency: "direct dev" description: name: flutter_launcher_icons - sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + sha256: "619817c4b65b322b5104b6bb6dfe6cda62d9729bd7ad4303ecc8b4e690a67a77" url: "https://pub.dev" source: hosted - version: "0.13.1" + version: "0.14.1" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "5.0.0" flutter_local_notifications: dependency: "direct main" description: name: flutter_local_notifications - sha256: dd6676d8c2926537eccdf9f72128bbb2a9d0814689527b17f92c248ff192eaf3 + sha256: "49eeef364fddb71515bc78d5a8c51435a68bccd6e4d68e25a942c5e47761ae71" url: "https://pub.dev" source: hosted - version: "17.2.1+2" + version: "17.2.3" flutter_local_notifications_linux: dependency: transitive description: @@ -383,10 +383,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "9d98bd47ef9d34e803d438f17fd32b116d31009f534a6fa5ce3a1167f189a6de" + sha256: "9ee02950848f61c4129af3d6ec84a1cfc0e47931abc746b03e7a3bc3e8ff6eda" url: "https://pub.dev" source: hosted - version: "2.0.21" + version: "2.0.22" flutter_secure_storage: dependency: transitive description: @@ -452,10 +452,10 @@ packages: dependency: "direct main" description: name: flutter_timezone - sha256: "0cb5498dedfaac615c779138194052f04524c31d958fab33d378f22b6cc14686" + sha256: ea53c61c9152f271a5e30624a624184804947b6a733ff2b64186bb2579446892 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "3.0.1" flutter_web_plugins: dependency: "direct main" description: flutter @@ -465,26 +465,26 @@ packages: dependency: "direct main" description: name: flutter_widget_from_html - sha256: e79144d8a37b7d1075fc1fdebc32708bd142ad9fdf1c7d9444f5e964cc03158b + sha256: "9e2a6201c4d2eb910b6b3ebb2a9f5c490fc61c9a1aa35eafdde38f0fc659cf4c" url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.2" flutter_widget_from_html_core: dependency: transitive description: name: flutter_widget_from_html_core - sha256: df7c7c9e5ea144f7ab0adfbad733b4d4f7d408ab733c94e6e9fdcb327af92aa1 + sha256: b1048fd119a14762e2361bd057da608148a895477846d6149109b2151d2f7abf url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.2" functions_client: dependency: transitive description: name: functions_client - sha256: "229648c4c78e0cb13dfb5e7508a3d2e7058f126ba364b94f8199ba4cead96d4e" + sha256: b09f01be55ceec6a7a0916a0934e0c58d551292790901f15a24ae9d5654ea1f9 url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.3" fwfh_cached_network_image: dependency: transitive description: @@ -505,18 +505,18 @@ packages: dependency: transitive description: name: fwfh_just_audio - sha256: "4ff7927619ff4855567a61e126269e1fef985a9fe7e78682592da17bf658aabb" + sha256: "38dc2c55803bd3cef33042c473e0c40b891ad4548078424641a32032f6a1245f" url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.2" fwfh_svg: dependency: transitive description: name: fwfh_svg - sha256: c6bb6b513f7ce2766aba76d7276caf9a96b6fee729ac3a492c366a42f82ef02e + sha256: "550b1014d12b5528d8bdb6e3b44b58721f3fb1f65d7a852d1623a817008bdfc4" url: "https://pub.dev" source: hosted - version: "0.8.2" + version: "0.8.3" fwfh_url_launcher: dependency: transitive description: @@ -529,18 +529,18 @@ packages: dependency: transitive description: name: fwfh_webview - sha256: "2cd2b1e463ddaf26b7d4f74e1a855126c4a836fdaff9551636693e07a07422b6" + sha256: f67890bc0d6278da98bd197469ae9511c859f7db327e92299fe0ea0cf46c4057 url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.2" gotrue: dependency: transitive description: name: gotrue - sha256: a8784341bcc08f88ba7a4b04a40a37059c7e71c315f058d45c31d09e8a951194 + sha256: f3d4b70b8df6d05be2c6d558e8887576766685918be4ef87dbb8d7e547aeb049 url: "https://pub.dev" source: hosted - version: "2.8.3" + version: "2.9.0" gtk: dependency: transitive description: @@ -617,10 +617,10 @@ packages: dependency: transitive description: name: just_audio - sha256: ee50602364ba83fa6308f5512dd560c713ec3e1f2bc75f0db43618f0d82ef71a + sha256: d8e8aaf417d33e345299c17f6457f72bd4ba0c549dc34607abb5183a354edc4d url: "https://pub.dev" source: hosted - version: "0.9.39" + version: "0.9.40" just_audio_platform_interface: dependency: transitive description: @@ -633,10 +633,10 @@ packages: dependency: transitive description: name: just_audio_web - sha256: "0edb481ad4aa1ff38f8c40f1a3576013c3420bf6669b686fe661627d49bc606c" + sha256: "9a98035b8b24b40749507687520ec5ab404e291d2b0937823ff45d92cb18d448" url: "https://pub.dev" source: hosted - version: "0.4.11" + version: "0.4.13" jwt_decode: dependency: transitive description: @@ -681,10 +681,10 @@ packages: dependency: transitive description: name: lints - sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "5.0.0" logger: dependency: transitive description: @@ -737,10 +737,10 @@ packages: dependency: transitive description: name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" nested: dependency: transitive description: @@ -761,10 +761,10 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: "4de6c36df77ffbcef0a5aefe04669d33f2d18397fea228277b852a2d4e58e860" + sha256: a75164ade98cb7d24cfd0a13c6408927c6b217fa60dee5a7ff5c116a58f28918 url: "https://pub.dev" source: hosted - version: "8.0.1" + version: "8.0.2" package_info_plus_platform_interface: dependency: transitive description: @@ -801,10 +801,10 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "490539678396d4c3c0b06efdaab75ae60675c3e0c66f72bc04c2e2c1e0e2abeb" + sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7" url: "https://pub.dev" source: hosted - version: "2.2.9" + version: "2.2.10" path_provider_foundation: dependency: transitive description: @@ -841,10 +841,10 @@ packages: dependency: "direct main" description: name: pdf - sha256: "81d5522bddc1ef5c28e8f0ee40b71708761753c163e0c93a40df56fd515ea0f0" + sha256: "05df53f8791587402493ac97b9869d3824eccbc77d97855f4545cf72df3cae07" url: "https://pub.dev" source: hosted - version: "3.11.0" + version: "3.11.1" permission_handler: dependency: "direct main" description: @@ -857,10 +857,10 @@ packages: dependency: transitive description: name: permission_handler_android - sha256: eaf2a1ec4472775451e88ca6a7b86559ef2f1d1ed903942ed135e38ea0097dca + sha256: "76e4ab092c1b240d31177bb64d2b0bea43f43d0e23541ec866151b9f7b2490fa" url: "https://pub.dev" source: hosted - version: "12.0.8" + version: "12.0.12" permission_handler_apple: dependency: transitive description: @@ -873,18 +873,18 @@ packages: dependency: transitive description: name: permission_handler_html - sha256: "6cac773d389e045a8d4f85418d07ad58ef9e42a56e063629ce14c4c26344de24" + sha256: af26edbbb1f2674af65a8f4b56e1a6f526156bc273d0e65dd8075fab51c78851 url: "https://pub.dev" source: hosted - version: "0.1.2" + version: "0.1.3+2" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: fe0ffe274d665be8e34f9c59705441a7d248edebbe5d9e3ec2665f88b79358ea + sha256: e9c8eadee926c4532d0305dff94b85bf961f16759c3af791486613152af4b4f9 url: "https://pub.dev" source: hosted - version: "4.2.2" + version: "4.2.3" permission_handler_windows: dependency: transitive description: @@ -921,10 +921,10 @@ packages: dependency: transitive description: name: postgrest - sha256: "675540a5e93e89fc28cc4ef0999ed2916c00a1c73de73f3a0d5067ce36dd41a2" + sha256: "3c6aea8d41cbb7cc33190a67fd8b0f21735a74d5871e52ada4c274aa3aa50dbb" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.0" provider: dependency: "direct main" description: @@ -945,10 +945,10 @@ packages: dependency: "direct main" description: name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" rainbow_color: dependency: "direct main" description: @@ -969,10 +969,10 @@ packages: dependency: transitive description: name: realtime_client - sha256: a99b7817e203c57ada746e9fe113820410cf84d9029f4310c57737aae890b0f7 + sha256: "5d449be6dd49a413847b6da5cf48b44f7379047bc0ddc6f301d387d2ce4633b9" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" record: dependency: "direct main" description: @@ -985,18 +985,18 @@ packages: dependency: transitive description: name: record_android - sha256: "9ccf6a206dc72b486cf37893690e70c17610e8f05dba8da1a808e73dc2f49a04" + sha256: d7af0b3119725a0f561817c72b5f5eca4d7a76d441deef519ae04e4824c0734c url: "https://pub.dev" source: hosted - version: "1.2.4" + version: "1.2.6" record_darwin: dependency: transitive description: name: record_darwin - sha256: b038c26d1066eb81f4e7433bfb85f0d450ca3fac0002a7216b83a21b775ecf21 + sha256: fe90d302acb1f3cee1ade5df9c150ca5cee33b48d8cdf1cf433bf577d7f00134 url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" record_linux: dependency: transitive description: @@ -1017,10 +1017,10 @@ packages: dependency: transitive description: name: record_web - sha256: "703adb626d31e2dd86a8f6b34e306e03cd323e0c5e16e11bbc0385b07a8df97e" + sha256: "656b7a865f90651fab997c2a563364f5fd60a0b527d5dadbb915d62d84fc3867" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.3" record_windows: dependency: transitive description: @@ -1041,66 +1041,66 @@ packages: dependency: transitive description: name: rxdart - sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" + sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" url: "https://pub.dev" source: hosted - version: "0.27.7" + version: "0.28.0" sentry: dependency: transitive description: name: sentry - sha256: "76ad4fab90ff82427c26939bd79dc4df345a081e2b1cd5954b947e340b9af9a5" + sha256: "033287044a6644a93498969449d57c37907e56f5cedb17b88a3ff20a882261dd" url: "https://pub.dev" source: hosted - version: "8.6.0" + version: "8.9.0" sentry_flutter: dependency: "direct main" description: name: sentry_flutter - sha256: a7c92014701093a7c0a373e1a47c54ec428d8468d8bf2b793fee7ea1b085c21b + sha256: "3780b5a0bb6afd476857cfbc6c7444d969c29a4d9bd1aa5b6960aa76c65b737a" url: "https://pub.dev" source: hosted - version: "8.6.0" + version: "8.9.0" sentry_logging: dependency: "direct main" description: name: sentry_logging - sha256: e381684f55c6b780df0ad030677fe6eb69582034f68291b5336c6a1b89195762 + sha256: f798a08dc7931f1a86ffd2d2d9b38b2dbeeb4df05a91cd5cd47606ed89408ee7 url: "https://pub.dev" source: hosted - version: "8.6.0" + version: "8.9.0" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: c272f9cabca5a81adc9b0894381e9c1def363e980f960fa903c604c471b22f68 + sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "041be4d9d2dc6079cf342bc8b761b03787e3b71192d658220a56cac9c04a0294" + sha256: "480ba4345773f56acda9abf5f50bd966f581dac5d514e5fc4a18c62976bbba7e" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.2" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "671e7a931f55a08aa45be2a13fe7247f2a41237897df434b30d2012388191833" + sha256: c4b35f6cb8f63c147312c054ce7c2254c8066745125264f0c88739c417fc9d9f url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.5.2" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "2ba0510d3017f91655b7543e9ee46d48619de2a2af38e5c790423f7007c7ccc1" + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" shared_preferences_platform_interface: dependency: transitive description: @@ -1113,18 +1113,18 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: "59dc807b94d29d52ddbb1b3c0d3b9d0a67fc535a64e62a5542c8db0513fcb6c2" + sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "398084b47b7f92110683cac45c6dc4aae853db47e470e5ddcd52cab7f7196ab2" + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" sky_engine: dependency: transitive description: flutter @@ -1150,18 +1150,18 @@ packages: dependency: transitive description: name: sqflite - sha256: a43e5a27235518c03ca238e7b4732cf35eabe863a369ceba6cbefa537a66f16d + sha256: ff5a2436ef8ebdfda748fbfe957f9981524cb5ff11e7bafa8c42771840e8a788 url: "https://pub.dev" source: hosted - version: "2.3.3+1" + version: "2.3.3+2" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4" + sha256: "2d8e607db72e9cb7748c9c6e739e2c9618320a5517de693d5a24609c4671b1a4" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.5.4+4" stack_trace: dependency: transitive description: @@ -1174,10 +1174,10 @@ packages: dependency: transitive description: name: storage_client - sha256: e37f1b9d40f43078d12bd2d1b6b08c2c16fbdbafc58b57bc44922da6ea3f5625 + sha256: "060aa8651ad2b30ce6fc30f4652317f45d21f8c6f6cc222b2430fc7f69f7d8ba" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.0" stream_channel: dependency: transitive description: @@ -1208,38 +1208,38 @@ packages: path: "../core" relative: true source: path - version: "4.4.6" + version: "4.4.8" studyu_flutter_common: dependency: "direct main" description: path: "../flutter_common" relative: true source: path - version: "1.8.7" + version: "1.8.9" supabase: dependency: "direct main" description: name: supabase - sha256: f6d21d0b555aa997d8170afd112407df0aaf44820cbe93b3520e2f7ea3ec0904 + sha256: c3a03d656110e13dd80ccabba7a5c591fece4c56ec3a21108e51b1e18d9c9a94 url: "https://pub.dev" source: hosted - version: "2.2.7" + version: "2.4.0" supabase_flutter: dependency: "direct main" description: name: supabase_flutter - sha256: bcac7745e423ffe4aea86fefc3ccef259f979005c7a40558089c11f8606fd085 + sha256: "79e5067f08572c7900bc77251e6c1e0cac80c3059b5820ba2b86469b22822b75" url: "https://pub.dev" source: hosted - version: "2.5.11" + version: "2.7.0" synchronized: dependency: transitive description: name: synchronized - sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" + sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" url: "https://pub.dev" source: hosted - version: "3.1.0+1" + version: "3.3.0+3" term_glyph: dependency: transitive description: @@ -1308,10 +1308,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "94d8ad05f44c6d4e2ffe5567ab4d741b82d62e3c8e288cc1fcea45965edf47c9" + sha256: e35a698ac302dd68e41f73250bd9517fe3ab5fa4f18fe4647a0872db61bacbab url: "https://pub.dev" source: hosted - version: "6.3.8" + version: "6.3.10" url_launcher_ios: dependency: transitive description: @@ -1332,10 +1332,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" + sha256: "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.2.1" url_launcher_platform_interface: dependency: transitive description: @@ -1364,10 +1364,10 @@ packages: dependency: "direct main" description: name: uuid - sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90" + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff url: "https://pub.dev" source: hosted - version: "4.4.2" + version: "4.5.1" vector_graphics: dependency: transitive description: @@ -1404,18 +1404,18 @@ packages: dependency: transitive description: name: video_player - sha256: e30df0d226c4ef82e2c150ebf6834b3522cf3f654d8e2f9419d376cdc071425d + sha256: "4a8c3492d734f7c39c2588a3206707a05ee80cef52e8c7f3b2078d430c84bc17" url: "https://pub.dev" source: hosted - version: "2.9.1" + version: "2.9.2" video_player_android: dependency: transitive description: name: video_player_android - sha256: "4de50df9ee786f5891d3281e1e633d7b142ef1acf47392592eb91cba5d355849" + sha256: "66090f295f98422408f310c9472d0ced04240171021079ef5f11439773f53831" url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.7.6" video_player_avfoundation: dependency: transitive description: @@ -1428,10 +1428,10 @@ packages: dependency: transitive description: name: video_player_platform_interface - sha256: "236454725fafcacf98f0f39af0d7c7ab2ce84762e3b63f2cbb3ef9a7e0550bc6" + sha256: "229d7642ccd9f3dc4aba169609dd6b5f3f443bb4cc15b82f7785fcada5af9bbb" url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.2.3" video_player_web: dependency: transitive description: @@ -1444,18 +1444,18 @@ packages: dependency: transitive description: name: vm_service - sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "14.2.4" + version: "14.2.5" wakelock_plus: dependency: "direct main" description: name: wakelock_plus - sha256: "4fa83a128b4127619e385f686b4f080a5d2de46cff8e8c94eccac5fcf76550e5" + sha256: bf4ee6f17a2fa373ed3753ad0e602b7603f8c75af006d5b9bdade263928c0484 url: "https://pub.dev" source: hosted - version: "1.2.7" + version: "1.2.8" wakelock_plus_platform_interface: dependency: transitive description: @@ -1468,34 +1468,42 @@ packages: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "1.1.0" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + url: "https://pub.dev" + source: hosted + version: "0.1.6" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42" + sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" url: "https://pub.dev" source: hosted - version: "2.4.5" + version: "3.0.1" webview_flutter: dependency: transitive description: name: webview_flutter - sha256: "6869c8786d179f929144b4a1f86e09ac0eddfe475984951ea6c634774c16b522" + sha256: ec81f57aa1611f8ebecf1d2259da4ef052281cb5ad624131c93546c79ccc7736 url: "https://pub.dev" source: hosted - version: "4.8.0" + version: "4.9.0" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - sha256: c66651fba15f9d7ddd31daec42da8d6bce46c85610a7127e3ebcb39a4395c3c9 + sha256: ed021f27ae621bc97a6019fb601ab16331a3db4bf8afa305e9f6689bdb3edced url: "https://pub.dev" source: hosted - version: "3.16.6" + version: "3.16.8" webview_flutter_platform_interface: dependency: transitive description: @@ -1508,18 +1516,18 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: "9c62cc46fa4f2d41e10ab81014c1de470a6c6f26051a2de32111b2ee55287feb" + sha256: "1942a12224ab31e9508cf00c0c6347b931b023b8a4f0811e5dec3b06f94f117d" url: "https://pub.dev" source: hosted - version: "3.14.0" + version: "3.15.0" win32: dependency: transitive description: name: win32 - sha256: "015002c060f1ae9f41a818f2d5640389cc05283e368be19dc8d77cecb43c40c9" + sha256: "4d45dc9069dba4619dc0ebd93c7cec5e66d8482cb625a370ac806dcc8165f2ec" url: "https://pub.dev" source: hosted - version: "5.5.3" + version: "5.5.5" xdg_directories: dependency: transitive description: @@ -1548,10 +1556,10 @@ packages: dependency: transitive description: name: yet_another_json_isolate - sha256: "381dd593e4199fe41a7b6467cef77a41d91fa8ef41465e135f12c99a76be463b" + sha256: "56155e9e0002cc51ea7112857bbcdc714d4c35e176d43e4d3ee233009ff410c9" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.3" sdks: - dart: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 92fa5b012..c6df2a083 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -1,5 +1,5 @@ name: studyu_app -version: 2.7.9 +version: 2.7.11 description: Partake in digital N-of-1 trials with the innovative StudyU Health App publish_to: none homepage: https://studyu.health @@ -13,46 +13,46 @@ dependencies: collection: ^1.18.0 cross_file: ^0.3.4+2 cupertino_icons: ^1.0.8 - fl_chart: ^0.68.0 + fl_chart: ^0.69.0 flutter: sdk: flutter flutter_file_dialog: ^3.0.2 - flutter_local_notifications: ^17.2.1+2 + flutter_local_notifications: ^17.2.3 flutter_localizations: sdk: flutter - flutter_timezone: ^2.1.0 + flutter_timezone: ^3.0.1 flutter_web_plugins: sdk: flutter - flutter_widget_from_html: ^0.15.1 + flutter_widget_from_html: ^0.15.2 intersperse: ^2.0.0 intl: ^0.19.0 material_design_icons_flutter: ^7.0.7296 - package_info_plus: ^8.0.1 + package_info_plus: ^8.0.2 path: ^1.9.0 path_provider: ^2.1.4 - pdf: ^3.11.0 + pdf: ^3.11.1 permission_handler: ^11.3.1 provider: ^6.1.2 - quiver: ^3.2.1 + quiver: ^3.2.2 rainbow_color: ^2.0.1 record: ^5.1.2 - sentry_flutter: ^8.6.0 - sentry_logging: ^8.6.0 - shared_preferences: ^2.3.1 - studyu_core: ^4.4.6 - studyu_flutter_common: ^1.8.7 - supabase: ^2.2.7 - supabase_flutter: ^2.5.11 + sentry_flutter: ^8.9.0 + sentry_logging: ^8.9.0 + shared_preferences: ^2.3.2 + studyu_core: ^4.4.8 + studyu_flutter_common: ^1.8.9 + supabase: ^2.4.0 + supabase_flutter: ^2.7.0 timeline_tile: ^2.0.0 timezone: ^0.9.4 universal_html: ^2.2.4 url_launcher: ^6.3.0 - uuid: ^4.4.2 - wakelock_plus: ^1.2.7 + uuid: ^4.5.1 + wakelock_plus: ^1.2.8 dev_dependencies: - flutter_launcher_icons: ^0.13.1 - flutter_lints: ^4.0.0 + flutter_launcher_icons: ^0.14.1 + flutter_lints: ^5.0.0 flutter_test: sdk: flutter lint: ^2.3.0 diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 00d17b8df..8cba989c2 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -1,3 +1,13 @@ +## 4.4.8 + + - **FIX**: upgrade deps. + - **FIX**: upgrade fvm to flutter v3.24.3. + +## 4.4.7 + + - **FIX**: upgrade to flutter v3.24.2. + - **FIX**: result history filter. + ## 4.4.6 - **FIX**: upgrade deps. diff --git a/core/lib/src/models/tables/study_subject.dart b/core/lib/src/models/tables/study_subject.dart index 5a2d0136d..8797ab371 100644 --- a/core/lib/src/models/tables/study_subject.dart +++ b/core/lib/src/models/tables/study_subject.dart @@ -376,7 +376,8 @@ class StudySubject extends SupabaseObjectFunctions { return SupabaseQuery.extractSupabaseList( await env.client .from(tableName) - .select('*,study!study_subject_studyId_fkey(*),subject_progress(*)'), + .select('*,study!study_subject_studyId_fkey(*),subject_progress(*)') + .eq('user_id', userId), ); } diff --git a/core/pubspec.lock b/core/pubspec.lock index 167655df1..13ddb887b 100644 --- a/core/pubspec.lock +++ b/core/pubspec.lock @@ -82,10 +82,10 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: dd09dd4e2b078992f42aac7f1a622f01882a8492fef08486b27ddde929c19f04 + sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d" url: "https://pub.dev" source: hosted - version: "2.4.12" + version: "2.4.13" build_runner_core: dependency: transitive description: @@ -146,18 +146,18 @@ packages: dependency: transitive description: name: coverage - sha256: "576aaab8b1abdd452e0f656c3e73da9ead9d7880e15bdc494189d9c1a1baf0db" + sha256: c1fb2dce3c0085f39dc72668e85f8e0210ec7de05345821ff58530567df345a5 url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.2" crypto: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" csv: dependency: "direct main" description: @@ -170,10 +170,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" + sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" url: "https://pub.dev" source: hosted - version: "2.3.6" + version: "2.3.7" file: dependency: transitive description: @@ -202,10 +202,10 @@ packages: dependency: transitive description: name: functions_client - sha256: "229648c4c78e0cb13dfb5e7508a3d2e7058f126ba364b94f8199ba4cead96d4e" + sha256: b09f01be55ceec6a7a0916a0934e0c58d551292790901f15a24ae9d5654ea1f9 url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.3" glob: dependency: transitive description: @@ -218,10 +218,10 @@ packages: dependency: transitive description: name: gotrue - sha256: a8784341bcc08f88ba7a4b04a40a37059c7e71c315f058d45c31d09e8a951194 + sha256: f3d4b70b8df6d05be2c6d558e8887576766685918be4ef87dbb8d7e547aeb049 url: "https://pub.dev" source: hosted - version: "2.8.3" + version: "2.9.0" graphs: dependency: transitive description: @@ -338,18 +338,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" mime: dependency: transitive description: name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" node_preamble: dependency: transitive description: @@ -386,10 +386,10 @@ packages: dependency: transitive description: name: postgrest - sha256: "675540a5e93e89fc28cc4ef0999ed2916c00a1c73de73f3a0d5067ce36dd41a2" + sha256: "3c6aea8d41cbb7cc33190a67fd8b0f21735a74d5871e52ada4c274aa3aa50dbb" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.0" pub_semver: dependency: transitive description: @@ -410,18 +410,18 @@ packages: dependency: "direct main" description: name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" realtime_client: dependency: transitive description: name: realtime_client - sha256: a99b7817e203c57ada746e9fe113820410cf84d9029f4310c57737aae890b0f7 + sha256: "5d449be6dd49a413847b6da5cf48b44f7379047bc0ddc6f301d387d2ce4633b9" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" retry: dependency: transitive description: @@ -434,18 +434,18 @@ packages: dependency: transitive description: name: rxdart - sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" + sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" url: "https://pub.dev" source: hosted - version: "0.27.7" + version: "0.28.0" sentry: dependency: "direct main" description: name: sentry - sha256: "76ad4fab90ff82427c26939bd79dc4df345a081e2b1cd5954b947e340b9af9a5" + sha256: "033287044a6644a93498969449d57c37907e56f5cedb17b88a3ff20a882261dd" url: "https://pub.dev" source: hosted - version: "8.6.0" + version: "8.9.0" shelf: dependency: transitive description: @@ -466,10 +466,10 @@ packages: dependency: transitive description: name: shelf_static - sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.1.3" shelf_web_socket: dependency: transitive description: @@ -498,10 +498,10 @@ packages: dependency: transitive description: name: source_map_stack_trace - sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" source_maps: dependency: transitive description: @@ -530,18 +530,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.12.0" storage_client: dependency: transitive description: name: storage_client - sha256: e37f1b9d40f43078d12bd2d1b6b08c2c16fbdbafc58b57bc44922da6ea3f5625 + sha256: "060aa8651ad2b30ce6fc30f4652317f45d21f8c6f6cc222b2430fc7f69f7d8ba" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.0" stream_channel: dependency: transitive description: @@ -570,10 +570,10 @@ packages: dependency: "direct main" description: name: supabase - sha256: f6d21d0b555aa997d8170afd112407df0aaf44820cbe93b3520e2f7ea3ec0904 + sha256: c3a03d656110e13dd80ccabba7a5c591fece4c56ec3a21108e51b1e18d9c9a94 url: "https://pub.dev" source: hosted - version: "2.2.7" + version: "2.4.0" term_glyph: dependency: transitive description: @@ -626,18 +626,18 @@ packages: dependency: "direct main" description: name: uuid - sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90" + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff url: "https://pub.dev" source: hosted - version: "4.4.2" + version: "4.5.1" vm_service: dependency: transitive description: name: vm_service - sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b url: "https://pub.dev" source: hosted - version: "14.2.4" + version: "14.3.0" watcher: dependency: transitive description: @@ -650,18 +650,26 @@ packages: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.1.6" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42" + sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" url: "https://pub.dev" source: hosted - version: "2.4.5" + version: "3.0.1" webkit_inspection_protocol: dependency: transitive description: @@ -682,9 +690,9 @@ packages: dependency: transitive description: name: yet_another_json_isolate - sha256: "381dd593e4199fe41a7b6467cef77a41d91fa8ef41465e135f12c99a76be463b" + sha256: "56155e9e0002cc51ea7112857bbcdc714d4c35e176d43e4d3ee233009ff410c9" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.3" sdks: - dart: ">=3.5.0-259.0.dev <4.0.0" + dart: ">=3.5.0 <4.0.0" diff --git a/core/pubspec.yaml b/core/pubspec.yaml index 50ff8d0e2..f9a9bf0fb 100644 --- a/core/pubspec.yaml +++ b/core/pubspec.yaml @@ -1,5 +1,5 @@ name: studyu_core -version: 4.4.6 +version: 4.4.8 description: This package contains StudyU models and common functions for the app and designer packages homepage: https://studyu.health repository: https://github.com/hpi-studyu/studyu @@ -12,13 +12,13 @@ dependencies: csv: ^6.0.0 json_annotation: ^4.9.0 logger: ^2.4.0 - quiver: ^3.2.1 - sentry: ^8.6.0 - supabase: ^2.2.7 - uuid: ^4.4.2 + quiver: ^3.2.2 + sentry: ^8.9.0 + supabase: ^2.4.0 + uuid: ^4.5.1 dev_dependencies: - build_runner: ^2.4.12 + build_runner: ^2.4.13 json_serializable: ^6.8.0 lint: ^2.3.0 test: ^1.25.8 diff --git a/designer_v2/CHANGELOG.md b/designer_v2/CHANGELOG.md index 1f59cbc59..c25f7159c 100644 --- a/designer_v2/CHANGELOG.md +++ b/designer_v2/CHANGELOG.md @@ -1,3 +1,13 @@ +## 1.9.2 + + - **FIX**: upgrade deps. + - **FIX**: upgrade fvm to flutter v3.24.3. + +## 1.9.1 + + - **FIX**: upgrade to flutter v3.24.2. + - **FIX**: hotfix to sanitize export contents. + ## 1.9.0 - **FIX**: legend spacing. diff --git a/designer_v2/lib/features/analyze/study_export_zip.dart b/designer_v2/lib/features/analyze/study_export_zip.dart index 00e04776a..74f76fe35 100644 --- a/designer_v2/lib/features/analyze/study_export_zip.dart +++ b/designer_v2/lib/features/analyze/study_export_zip.dart @@ -21,7 +21,11 @@ extension StudyExportZipX on StudyExportData { }; files.forEach((filename, content) { - final archiveFile = ArchiveFile.string(filename, content); + final archiveFile = ArchiveFile.string( + filename, + // todo sanitize contents manually until archive v4 is released + content.replaceAll('’', "'").replaceAll('…', '...'), + ); archive.addFile(archiveFile); }); diff --git a/designer_v2/lib/repositories/auth_repository.dart b/designer_v2/lib/repositories/auth_repository.dart index e028d881d..25ac63266 100644 --- a/designer_v2/lib/repositories/auth_repository.dart +++ b/designer_v2/lib/repositories/auth_repository.dart @@ -87,6 +87,7 @@ class AuthRepository implements IAuthRepository { allowPasswordReset = true; case AuthChangeEvent.tokenRefreshed: print("authRepo tokenRefreshed"); + // ignore: deprecated_member_use case AuthChangeEvent.userDeleted: print("authRepo userDeleted"); _authStateStreamController.add(null); diff --git a/designer_v2/lib/utils/file_download.dart b/designer_v2/lib/utils/file_download.dart index 1e7514b5a..9723dfac8 100644 --- a/designer_v2/lib/utils/file_download.dart +++ b/designer_v2/lib/utils/file_download.dart @@ -16,7 +16,7 @@ dynamic downloadFile({required String fileContent, required String filename}) { void downloadBytes({required List bytes, required String filename}) { if (!kIsWeb) { throw Exception( - "The StudyU designer only support the web platform".hardcoded, + "The StudyU Designer only support the web platform".hardcoded, ); } final content = base64Encode(bytes); diff --git a/designer_v2/pubspec.lock b/designer_v2/pubspec.lock index 7fad5b9ce..781ecd17b 100644 --- a/designer_v2/pubspec.lock +++ b/designer_v2/pubspec.lock @@ -34,10 +34,10 @@ packages: dependency: transitive description: name: app_links - sha256: ae5f9a1b7d40d26178f605414be81ed4260350b4fae8259fe5ca4f89fe70c4af + sha256: ad1a6d598e7e39b46a34f746f9a8b011ee147e4c275d407fa457e7a62f84dd99 url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.3.2" app_links_linux: dependency: transitive description: @@ -130,10 +130,10 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: dd09dd4e2b078992f42aac7f1a622f01882a8492fef08486b27ddde929c19f04 + sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d" url: "https://pub.dev" source: hosted - version: "2.4.12" + version: "2.4.13" build_runner_core: dependency: transitive description: @@ -226,18 +226,18 @@ packages: dependency: transitive description: name: coverage - sha256: "576aaab8b1abdd452e0f656c3e73da9ead9d7880e15bdc494189d9c1a1baf0db" + sha256: c1fb2dce3c0085f39dc72668e85f8e0210ec7de05345821ff58530567df345a5 url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.2" crypto: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" csv: dependency: "direct main" description: @@ -258,34 +258,34 @@ packages: dependency: "direct dev" description: name: custom_lint - sha256: "7c0aec12df22f9082146c354692056677f1e70bc43471644d1fdb36c6fdda799" + sha256: "6e1ec47427ca968f22bce734d00028ae7084361999b41673291138945c5baca0" url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.7" custom_lint_builder: dependency: transitive description: name: custom_lint_builder - sha256: d7dc41e709dde223806660268678be7993559e523eb3164e2a1425fd6f7615a9 + sha256: ba2f90fff4eff71d202d097eb14b14f87087eaaef742e956208c0eb9d3a40a21 url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.7" custom_lint_core: dependency: transitive description: name: custom_lint_core - sha256: a85e8f78f4c52f6c63cdaf8c872eb573db0231dcdf3c3a5906d493c1f8bc20e6 + sha256: "4ddbbdaa774265de44c97054dcec058a83d9081d071785ece601e348c18c267d" url: "https://pub.dev" source: hosted - version: "0.6.3" + version: "0.6.5" dart_style: dependency: transitive description: name: dart_style - sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" + sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" url: "https://pub.dev" source: hosted - version: "2.3.6" + version: "2.3.7" diff_match_patch: dependency: transitive description: @@ -322,10 +322,10 @@ packages: dependency: transitive description: name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" file: dependency: transitive description: @@ -372,18 +372,18 @@ packages: dependency: "direct dev" description: name: flutter_launcher_icons - sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + sha256: "619817c4b65b322b5104b6bb6dfe6cda62d9729bd7ad4303ecc8b4e690a67a77" url: "https://pub.dev" source: hosted - version: "0.13.1" + version: "0.14.1" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "5.0.0" flutter_localizations: dependency: "direct main" description: flutter @@ -480,10 +480,10 @@ packages: dependency: transitive description: name: functions_client - sha256: "229648c4c78e0cb13dfb5e7508a3d2e7058f126ba364b94f8199ba4cead96d4e" + sha256: b09f01be55ceec6a7a0916a0934e0c58d551292790901f15a24ae9d5654ea1f9 url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.3" glob: dependency: transitive description: @@ -496,18 +496,18 @@ packages: dependency: "direct main" description: name: go_router - sha256: ddc16d34b0d74cb313986918c0f0885a7ba2fc24d8fb8419de75f0015144ccfe + sha256: "5cf5fdcf853b0629deb35891c7af643be900c3dcaed7489009f9e7dbcfe55ab6" url: "https://pub.dev" source: hosted - version: "14.2.3" + version: "14.2.8" gotrue: dependency: transitive description: name: gotrue - sha256: a8784341bcc08f88ba7a4b04a40a37059c7e71c315f058d45c31d09e8a951194 + sha256: f3d4b70b8df6d05be2c6d558e8887576766685918be4ef87dbb8d7e547aeb049 url: "https://pub.dev" source: hosted - version: "2.8.3" + version: "2.9.0" graphs: dependency: transitive description: @@ -653,10 +653,10 @@ packages: dependency: transitive description: name: lints - sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "5.0.0" logger: dependency: transitive description: @@ -717,10 +717,10 @@ packages: dependency: transitive description: name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" multi_select_flutter: dependency: transitive description: @@ -765,10 +765,10 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "490539678396d4c3c0b06efdaab75ae60675c3e0c66f72bc04c2e2c1e0e2abeb" + sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7" url: "https://pub.dev" source: hosted - version: "2.2.9" + version: "2.2.10" path_provider_foundation: dependency: transitive description: @@ -877,10 +877,10 @@ packages: dependency: transitive description: name: postgrest - sha256: "675540a5e93e89fc28cc4ef0999ed2916c00a1c73de73f3a0d5067ce36dd41a2" + sha256: "3c6aea8d41cbb7cc33190a67fd8b0f21735a74d5871e52ada4c274aa3aa50dbb" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.0" process: dependency: transitive description: @@ -909,10 +909,10 @@ packages: dependency: transitive description: name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" reactive_color_picker: dependency: "direct main" description: @@ -949,10 +949,10 @@ packages: dependency: transitive description: name: realtime_client - sha256: a99b7817e203c57ada746e9fe113820410cf84d9029f4310c57737aae890b0f7 + sha256: "5d449be6dd49a413847b6da5cf48b44f7379047bc0ddc6f301d387d2ce4633b9" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" retry: dependency: transitive description: @@ -973,10 +973,10 @@ packages: dependency: transitive description: name: riverpod_analyzer_utils - sha256: ee72770090078e6841d51355292335f1bc254907c6694283389dcb8156d99a4d + sha256: ac28d7bc678471ec986b42d88e5a0893513382ff7542c7ac9634463b044ac72c url: "https://pub.dev" source: hosted - version: "0.5.3" + version: "0.5.4" riverpod_annotation: dependency: "direct main" description: @@ -989,66 +989,66 @@ packages: dependency: "direct dev" description: name: riverpod_generator - sha256: "1ad626afbd8b01d168870b13c0b036f8a5bdb57c14cd426dc5b4595466bd6e2f" + sha256: "63311e361ffc578d655dfc31b48dfa4ed3bc76fd06f9be845e9bf97c5c11a429" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.3" riverpod_lint: dependency: "direct dev" description: name: riverpod_lint - sha256: b95a8cdc6102397f7d51037131c25ce7e51be900be021af4bf0c2d6f1b8f7aa7 + sha256: a35a92f2c2a4b7a5d95671c96c5432b42c20f26bb3e985e83d0b186471b61a85 url: "https://pub.dev" source: hosted - version: "2.3.12" + version: "2.3.13" rxdart: dependency: "direct main" description: name: rxdart - sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" + sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" url: "https://pub.dev" source: hosted - version: "0.27.7" + version: "0.28.0" sentry: dependency: transitive description: name: sentry - sha256: "76ad4fab90ff82427c26939bd79dc4df345a081e2b1cd5954b947e340b9af9a5" + sha256: "033287044a6644a93498969449d57c37907e56f5cedb17b88a3ff20a882261dd" url: "https://pub.dev" source: hosted - version: "8.6.0" + version: "8.9.0" shared_preferences: dependency: transitive description: name: shared_preferences - sha256: c272f9cabca5a81adc9b0894381e9c1def363e980f960fa903c604c471b22f68 + sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "041be4d9d2dc6079cf342bc8b761b03787e3b71192d658220a56cac9c04a0294" + sha256: "480ba4345773f56acda9abf5f50bd966f581dac5d514e5fc4a18c62976bbba7e" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.2" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "671e7a931f55a08aa45be2a13fe7247f2a41237897df434b30d2012388191833" + sha256: c4b35f6cb8f63c147312c054ce7c2254c8066745125264f0c88739c417fc9d9f url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.5.2" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "2ba0510d3017f91655b7543e9ee46d48619de2a2af38e5c790423f7007c7ccc1" + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" shared_preferences_platform_interface: dependency: transitive description: @@ -1061,18 +1061,18 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: "59dc807b94d29d52ddbb1b3c0d3b9d0a67fc535a64e62a5542c8db0513fcb6c2" + sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "398084b47b7f92110683cac45c6dc4aae853db47e470e5ddcd52cab7f7196ab2" + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" shelf: dependency: transitive description: @@ -1093,10 +1093,10 @@ packages: dependency: transitive description: name: shelf_static - sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.1.3" shelf_web_socket: dependency: transitive description: @@ -1122,10 +1122,10 @@ packages: dependency: transitive description: name: source_map_stack_trace - sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" source_maps: dependency: transitive description: @@ -1170,10 +1170,10 @@ packages: dependency: transitive description: name: storage_client - sha256: e37f1b9d40f43078d12bd2d1b6b08c2c16fbdbafc58b57bc44922da6ea3f5625 + sha256: "060aa8651ad2b30ce6fc30f4652317f45d21f8c6f6cc222b2430fc7f69f7d8ba" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.0" stream_channel: dependency: transitive description: @@ -1204,30 +1204,30 @@ packages: path: "../core" relative: true source: path - version: "4.4.6" + version: "4.4.8" studyu_flutter_common: dependency: "direct main" description: path: "../flutter_common" relative: true source: path - version: "1.8.7" + version: "1.8.9" supabase: dependency: "direct main" description: name: supabase - sha256: f6d21d0b555aa997d8170afd112407df0aaf44820cbe93b3520e2f7ea3ec0904 + sha256: c3a03d656110e13dd80ccabba7a5c591fece4c56ec3a21108e51b1e18d9c9a94 url: "https://pub.dev" source: hosted - version: "2.2.7" + version: "2.4.0" supabase_flutter: dependency: "direct main" description: name: supabase_flutter - sha256: bcac7745e423ffe4aea86fefc3ccef259f979005c7a40558089c11f8606fd085 + sha256: "79e5067f08572c7900bc77251e6c1e0cac80c3059b5820ba2b86469b22822b75" url: "https://pub.dev" source: hosted - version: "2.5.11" + version: "2.7.0" sync_http: dependency: transitive description: @@ -1240,10 +1240,10 @@ packages: dependency: transitive description: name: synchronized - sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" + sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" url: "https://pub.dev" source: hosted - version: "3.1.0+1" + version: "3.3.0+3" term_glyph: dependency: transitive description: @@ -1304,10 +1304,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "94d8ad05f44c6d4e2ffe5567ab4d741b82d62e3c8e288cc1fcea45965edf47c9" + sha256: e35a698ac302dd68e41f73250bd9517fe3ab5fa4f18fe4647a0872db61bacbab url: "https://pub.dev" source: hosted - version: "6.3.8" + version: "6.3.10" url_launcher_ios: dependency: transitive description: @@ -1328,10 +1328,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" + sha256: "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.2.1" url_launcher_platform_interface: dependency: transitive description: @@ -1360,10 +1360,10 @@ packages: dependency: "direct main" description: name: uuid - sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90" + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff url: "https://pub.dev" source: hosted - version: "4.4.2" + version: "4.5.1" vector_math: dependency: transitive description: @@ -1376,10 +1376,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "14.2.4" + version: "14.2.5" watcher: dependency: transitive description: @@ -1392,18 +1392,26 @@ packages: dependency: transitive description: name: web - sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.1.0" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + url: "https://pub.dev" + source: hosted + version: "0.1.6" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "3.0.1" webdriver: dependency: transitive description: @@ -1424,10 +1432,10 @@ packages: dependency: transitive description: name: win32 - sha256: "015002c060f1ae9f41a818f2d5640389cc05283e368be19dc8d77cecb43c40c9" + sha256: "4d45dc9069dba4619dc0ebd93c7cec5e66d8482cb625a370ac806dcc8165f2ec" url: "https://pub.dev" source: hosted - version: "5.5.3" + version: "5.5.5" xdg_directories: dependency: transitive description: @@ -1456,10 +1464,10 @@ packages: dependency: transitive description: name: yet_another_json_isolate - sha256: "381dd593e4199fe41a7b6467cef77a41d91fa8ef41465e135f12c99a76be463b" + sha256: "56155e9e0002cc51ea7112857bbcdc714d4c35e176d43e4d3ee233009ff410c9" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.3" sdks: - dart: ">=3.5.0-259.0.dev <4.0.0" - flutter: ">=3.22.0" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/designer_v2/pubspec.yaml b/designer_v2/pubspec.yaml index aaad60e5f..680a62b2e 100644 --- a/designer_v2/pubspec.yaml +++ b/designer_v2/pubspec.yaml @@ -1,5 +1,5 @@ name: studyu_designer_v2 -version: 1.9.0 +version: 1.9.2 description: Implement digital N-of-1 studies seamlessly with the StudyU Health Designer publish_to: none homepage: https://studyu.health @@ -24,7 +24,7 @@ dependencies: flutter_riverpod: ^2.5.1 flutter_web_plugins: sdk: flutter - go_router: ^14.2.3 + go_router: ^14.2.8 intl: ^0.19.0 material_color_utilities: ^0.11.1 material_design_icons_flutter: ^7.0.7296 @@ -34,19 +34,19 @@ dependencies: reactive_multi_select_flutter: ^2.0.1 reactive_range_slider: ^2.1.0 riverpod_annotation: ^2.3.5 - rxdart: ^0.27.7 # custom_lint 0.6.4 - studyu_core: ^4.4.6 - studyu_flutter_common: ^1.8.7 - supabase: ^2.2.7 - supabase_flutter: ^2.5.11 + rxdart: ^0.28.0 + studyu_core: ^4.4.8 + studyu_flutter_common: ^1.8.9 + supabase: ^2.4.0 + supabase_flutter: ^2.7.0 url_launcher: ^6.3.0 - uuid: ^4.4.2 + uuid: ^4.5.1 dev_dependencies: - build_runner: ^2.4.12 - custom_lint: ^0.6.4 - flutter_launcher_icons: ^0.13.1 - flutter_lints: ^4.0.0 + build_runner: ^2.4.13 + custom_lint: ^0.6.7 + flutter_launcher_icons: ^0.14.1 + flutter_lints: ^5.0.0 flutter_test: sdk: flutter integration_test: @@ -54,8 +54,8 @@ dev_dependencies: json_diff: ^0.2.1 lint: ^2.3.0 patrol_finders: ^2.1.2 - riverpod_generator: ^2.4.2 - riverpod_lint: ^2.3.12 + riverpod_generator: ^2.4.3 + riverpod_lint: ^2.3.13 test: ^1.24.9 flutter: diff --git a/flutter_common/CHANGELOG.md b/flutter_common/CHANGELOG.md index be7cd94b2..3deb64cd1 100644 --- a/flutter_common/CHANGELOG.md +++ b/flutter_common/CHANGELOG.md @@ -1,3 +1,12 @@ +## 1.8.9 + + - **FIX**: upgrade deps. + - **FIX**: upgrade fvm to flutter v3.24.3. + +## 1.8.8 + + - **FIX**: upgrade to flutter v3.24.2. + ## 1.8.7 - **FIX**: upgrade deps. diff --git a/flutter_common/pubspec.lock b/flutter_common/pubspec.lock index 66e19ca95..ac0266734 100644 --- a/flutter_common/pubspec.lock +++ b/flutter_common/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: app_links - sha256: ae5f9a1b7d40d26178f605414be81ed4260350b4fae8259fe5ca4f89fe70c4af + sha256: ad1a6d598e7e39b46a34f746f9a8b011ee147e4c275d407fa457e7a62f84dd99 url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.3.2" app_links_linux: dependency: transitive description: @@ -77,10 +77,10 @@ packages: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" csv: dependency: transitive description: @@ -101,10 +101,10 @@ packages: dependency: transitive description: name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" file: dependency: transitive description: @@ -138,10 +138,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "5.0.0" flutter_secure_storage: dependency: "direct main" description: @@ -204,18 +204,18 @@ packages: dependency: transitive description: name: functions_client - sha256: "229648c4c78e0cb13dfb5e7508a3d2e7058f126ba364b94f8199ba4cead96d4e" + sha256: b09f01be55ceec6a7a0916a0934e0c58d551292790901f15a24ae9d5654ea1f9 url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.3" gotrue: dependency: transitive description: name: gotrue - sha256: a8784341bcc08f88ba7a4b04a40a37059c7e71c315f058d45c31d09e8a951194 + sha256: f3d4b70b8df6d05be2c6d558e8887576766685918be4ef87dbb8d7e547aeb049 url: "https://pub.dev" source: hosted - version: "2.8.3" + version: "2.9.0" gtk: dependency: transitive description: @@ -300,10 +300,10 @@ packages: dependency: transitive description: name: lints - sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "5.0.0" logger: dependency: transitive description: @@ -340,10 +340,10 @@ packages: dependency: transitive description: name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" path: dependency: transitive description: @@ -364,10 +364,10 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "490539678396d4c3c0b06efdaab75ae60675c3e0c66f72bc04c2e2c1e0e2abeb" + sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7" url: "https://pub.dev" source: hosted - version: "2.2.9" + version: "2.2.10" path_provider_foundation: dependency: transitive description: @@ -420,26 +420,26 @@ packages: dependency: transitive description: name: postgrest - sha256: "675540a5e93e89fc28cc4ef0999ed2916c00a1c73de73f3a0d5067ce36dd41a2" + sha256: "3c6aea8d41cbb7cc33190a67fd8b0f21735a74d5871e52ada4c274aa3aa50dbb" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.0" quiver: dependency: transitive description: name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" realtime_client: dependency: transitive description: name: realtime_client - sha256: a99b7817e203c57ada746e9fe113820410cf84d9029f4310c57737aae890b0f7 + sha256: "5d449be6dd49a413847b6da5cf48b44f7379047bc0ddc6f301d387d2ce4633b9" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" retry: dependency: transitive description: @@ -452,50 +452,50 @@ packages: dependency: transitive description: name: rxdart - sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" + sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" url: "https://pub.dev" source: hosted - version: "0.27.7" + version: "0.28.0" sentry: dependency: transitive description: name: sentry - sha256: "76ad4fab90ff82427c26939bd79dc4df345a081e2b1cd5954b947e340b9af9a5" + sha256: "033287044a6644a93498969449d57c37907e56f5cedb17b88a3ff20a882261dd" url: "https://pub.dev" source: hosted - version: "8.6.0" + version: "8.9.0" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: c272f9cabca5a81adc9b0894381e9c1def363e980f960fa903c604c471b22f68 + sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "041be4d9d2dc6079cf342bc8b761b03787e3b71192d658220a56cac9c04a0294" + sha256: "480ba4345773f56acda9abf5f50bd966f581dac5d514e5fc4a18c62976bbba7e" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.2" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "671e7a931f55a08aa45be2a13fe7247f2a41237897df434b30d2012388191833" + sha256: c4b35f6cb8f63c147312c054ce7c2254c8066745125264f0c88739c417fc9d9f url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.5.2" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "2ba0510d3017f91655b7543e9ee46d48619de2a2af38e5c790423f7007c7ccc1" + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" shared_preferences_platform_interface: dependency: transitive description: @@ -508,18 +508,18 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: "59dc807b94d29d52ddbb1b3c0d3b9d0a67fc535a64e62a5542c8db0513fcb6c2" + sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "398084b47b7f92110683cac45c6dc4aae853db47e470e5ddcd52cab7f7196ab2" + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" sky_engine: dependency: transitive description: flutter @@ -553,10 +553,10 @@ packages: dependency: transitive description: name: storage_client - sha256: e37f1b9d40f43078d12bd2d1b6b08c2c16fbdbafc58b57bc44922da6ea3f5625 + sha256: "060aa8651ad2b30ce6fc30f4652317f45d21f8c6f6cc222b2430fc7f69f7d8ba" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.0" stream_channel: dependency: transitive description: @@ -579,31 +579,31 @@ packages: path: "../core" relative: true source: path - version: "4.4.6" + version: "4.4.8" supabase: dependency: transitive description: name: supabase - sha256: f6d21d0b555aa997d8170afd112407df0aaf44820cbe93b3520e2f7ea3ec0904 + sha256: c3a03d656110e13dd80ccabba7a5c591fece4c56ec3a21108e51b1e18d9c9a94 url: "https://pub.dev" source: hosted - version: "2.2.7" + version: "2.4.0" supabase_flutter: dependency: "direct main" description: name: supabase_flutter - sha256: bcac7745e423ffe4aea86fefc3ccef259f979005c7a40558089c11f8606fd085 + sha256: "79e5067f08572c7900bc77251e6c1e0cac80c3059b5820ba2b86469b22822b75" url: "https://pub.dev" source: hosted - version: "2.5.11" + version: "2.7.0" synchronized: dependency: "direct main" description: name: synchronized - sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" + sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" url: "https://pub.dev" source: hosted - version: "3.1.0+1" + version: "3.3.0+3" term_glyph: dependency: transitive description: @@ -640,10 +640,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "94d8ad05f44c6d4e2ffe5567ab4d741b82d62e3c8e288cc1fcea45965edf47c9" + sha256: e35a698ac302dd68e41f73250bd9517fe3ab5fa4f18fe4647a0872db61bacbab url: "https://pub.dev" source: hosted - version: "6.3.8" + version: "6.3.10" url_launcher_ios: dependency: transitive description: @@ -664,10 +664,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" + sha256: "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.2.1" url_launcher_platform_interface: dependency: transitive description: @@ -696,10 +696,10 @@ packages: dependency: "direct main" description: name: uuid - sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90" + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff url: "https://pub.dev" source: hosted - version: "4.4.2" + version: "4.5.1" vector_math: dependency: transitive description: @@ -712,34 +712,42 @@ packages: dependency: transitive description: name: vm_service - sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "14.2.4" + version: "14.2.5" web: dependency: transitive description: name: web - sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.1.0" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + url: "https://pub.dev" + source: hosted + version: "0.1.6" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "3.0.1" win32: dependency: transitive description: name: win32 - sha256: "015002c060f1ae9f41a818f2d5640389cc05283e368be19dc8d77cecb43c40c9" + sha256: "4d45dc9069dba4619dc0ebd93c7cec5e66d8482cb625a370ac806dcc8165f2ec" url: "https://pub.dev" source: hosted - version: "5.5.3" + version: "5.5.5" xdg_directories: dependency: transitive description: @@ -752,10 +760,10 @@ packages: dependency: transitive description: name: yet_another_json_isolate - sha256: "381dd593e4199fe41a7b6467cef77a41d91fa8ef41465e135f12c99a76be463b" + sha256: "56155e9e0002cc51ea7112857bbcdc714d4c35e176d43e4d3ee233009ff410c9" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.3" sdks: - dart: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/flutter_common/pubspec.yaml b/flutter_common/pubspec.yaml index 4eda24714..cf9ffe7c7 100644 --- a/flutter_common/pubspec.yaml +++ b/flutter_common/pubspec.yaml @@ -1,5 +1,5 @@ name: studyu_flutter_common -version: 1.8.7 +version: 1.8.9 description: StudyU common flutter components and functions for app and designer homepage: https://studyu.health repository: https://github.com/hpi-studyu/studyu @@ -13,14 +13,14 @@ dependencies: flutter_dotenv: ^5.1.0 flutter_secure_storage: ^9.2.2 lint: ^2.3.0 - shared_preferences: ^2.3.1 - studyu_core: ^4.4.6 - supabase_flutter: ^2.5.11 - synchronized: ^3.1.0+1 - uuid: ^4.4.2 + shared_preferences: ^2.3.2 + studyu_core: ^4.4.8 + supabase_flutter: ^2.7.0 + synchronized: ^3.3.0+3 + uuid: ^4.5.1 dev_dependencies: - flutter_lints: ^4.0.0 + flutter_lints: ^5.0.0 flutter_test: sdk: flutter diff --git a/pubspec.lock b/pubspec.lock index 1100f981c..f3741e3b4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -173,10 +173,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" mustache_template: dependency: transitive description: @@ -253,10 +253,10 @@ packages: dependency: transitive description: name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" source_span: dependency: transitive description: @@ -269,10 +269,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.12.0" stream_channel: dependency: transitive description: @@ -325,10 +325,10 @@ packages: dependency: transitive description: name: web - sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.1.0" yaml: dependency: transitive description: