diff --git a/assets/translations/de-DE.json b/assets/translations/de-DE.json index a57d4cc..7e90c6d 100644 --- a/assets/translations/de-DE.json +++ b/assets/translations/de-DE.json @@ -120,7 +120,9 @@ "title": "{} wurde gemeldet. Du wirst diesen Vorschlag nicht mehr sehen." } }, - "new-banner": "Neue Vorschläge sind wieder ab dem {} verfügbar.", + "new-banner": "TODO", + "nope": "TODO", + "other_suggestions": "Maybe one of them?", "report-dialog": { "content": "Willst du wirklich das Buch {} melden?\n\nDu wirst dieses Buch nicht mehr als Vorschlag sehen.", "report": "Buch melden", diff --git a/assets/translations/en-US.json b/assets/translations/en-US.json index bd51d96..8542ea1 100644 --- a/assets/translations/en-US.json +++ b/assets/translations/en-US.json @@ -120,6 +120,8 @@ } }, "new-banner": "New recommendations will be available again at the {}.", + "nope": "Nope", + "other_suggestions": "Maybe one of them?", "report-dialog": { "content": "Do you really want to report the book {}?\n\nYou will no longer see this book as a recommendation.", "report": "Report", diff --git a/ios/Podfile.lock b/ios/Podfile.lock index dfb1bb2..39ba3bc 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -294,7 +294,7 @@ SPEC CHECKSUMS: FirebaseSessions: 2f348975f6d1c139231c180e12194161da2e0cd6 FirebaseSharedSwift: 2fbf73618288b7a36b2014b957745dcdd781389e FirebaseStorage: 8505bae8ac6662474b5b50e07759fb2765c15746 - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_barcode_scanner: 7a1144744c28dc0c57a8de7218ffe5ec59a9e4bf google_sign_in_ios: 1bfaf6607b44cd1b24c4d4bc39719870440f9ce1 GoogleAppMeasurement: bb3c564c3efb933136af0e94899e0a46167466a8 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 36afeec..ceecec0 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -163,7 +163,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a6b826d..5e31d3d 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ SizedBox( - height: _bottomSheetHeight, - child: child, - ), - AddBookWidgetAppearance.fullScreen => Expanded(child: child), - }, - ], - ); + switch (appearance) { + case AddBookWidgetAppearance.bottomSheet: + return child; + case AddBookWidgetAppearance.fullScreen: + return Expanded(child: child); + } } } @@ -83,6 +75,8 @@ openAddBookSheet( }) async { await showModalBottomSheet( context: context, + showDragHandle: true, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(20), @@ -90,23 +84,104 @@ openAddBookSheet( ), ), barrierColor: Colors.black54, - builder: (context) => AddBookWidget( - query, - appearance: AddBookWidgetAppearance.bottomSheet, + builder: (context) => SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + AddBookWidget( + query, + appearance: AddBookWidgetAppearance.bottomSheet, + ), + ], + ), ), ); } -class BookWidget extends ConsumerWidget { +enum BookSuggestionView { + first, + other, +} + +class _BookSuggestionWidget extends ConsumerStatefulWidget { final BookSuggestion bookSuggestion; final AddBookWidgetAppearance appearance; - const BookWidget({ + const _BookSuggestionWidget({ required this.bookSuggestion, required this.appearance, super.key, }); + @override + createState() => _BookSuggestionWidgetState(); +} + +class _BookSuggestionWidgetState extends ConsumerState<_BookSuggestionWidget> { + BookSuggestionView currentView = BookSuggestionView.first; + late Book currentBook; + late List otherBooks; + + @override + void initState() { + super.initState(); + currentBook = widget.bookSuggestion.target; + otherBooks = widget.bookSuggestion.suggestions; + } + + @override + Widget build(BuildContext context) { + return AnimatedSize( + duration: const Duration(milliseconds: 300), + curve: Curves.ease, + child: AnimatedSwitcher( + duration: const Duration(milliseconds: 300), + child: SingleChildScrollView( + child: switch (currentView) { + BookSuggestionView.first => _FirstBookSuggestion( + bookSuggestion: currentBook, + appearance: widget.appearance, + notMyBookCallback: () { + setState(() { + currentView = BookSuggestionView.other; + }); + }, + ), + BookSuggestionView.other => _OtherBookSuggestions( + otherSuggestions: widget.bookSuggestion.suggestions, + selectOtherBookCallback: (book) { + setState(() { + otherBooks.insert(0, currentBook); + otherBooks.remove(book); + currentBook = book; + currentView = BookSuggestionView.first; + }); + }, + appearance: widget.appearance, + backButtonCallback: () { + setState(() { + currentView = BookSuggestionView.first; + }); + }, + ), + }, + ), + ), + ); + } +} + +class _FirstBookSuggestion extends ConsumerWidget { + final Book bookSuggestion; + final AddBookWidgetAppearance appearance; + final void Function() notMyBookCallback; + + const _FirstBookSuggestion({ + required this.bookSuggestion, + required this.appearance, + required this.notMyBookCallback, + super.key, + }); @override Widget build(BuildContext context, WidgetRef ref) { return Column( @@ -115,7 +190,7 @@ class BookWidget extends ConsumerWidget { if (appearance == AddBookWidgetAppearance.fullScreen) const SizedBox(height: 16), BookImage( - bookSuggestion.target.thumbnailAddress, + bookSuggestion.thumbnailAddress, size: appearance.imageSize, ), Column( @@ -123,13 +198,13 @@ class BookWidget extends ConsumerWidget { Padding( padding: const EdgeInsets.all(16.0), child: Text( - bookSuggestion.target.title, + bookSuggestion.title, textAlign: TextAlign.center, style: Theme.of(context).textTheme.headlineSmall, ), ), Text( - bookSuggestion.target.author, + bookSuggestion.author, textAlign: TextAlign.center, style: Theme.of(context).textTheme.bodyLarge, ), @@ -146,7 +221,7 @@ class BookWidget extends ConsumerWidget { onPressed: () async { await ref .read(bookRepositoryProvider) - .addToForLater(bookSuggestion.target); + .addToForLater(bookSuggestion); // Just pop the screen here, no need to handle something else if (context.mounted) { Navigator.of(context).pop(); @@ -161,7 +236,7 @@ class BookWidget extends ConsumerWidget { onPressed: () async { await ref .read(bookRepositoryProvider) - .addToReading(bookSuggestion.target); + .addToReading(bookSuggestion); // Just pop the screen here, no need to handle something else if (context.mounted) { Navigator.of(context).pop(); @@ -176,7 +251,7 @@ class BookWidget extends ConsumerWidget { onPressed: () async { await ref .read(bookRepositoryProvider) - .addToRead(bookSuggestion.target); + .addToRead(bookSuggestion); // Just pop the screen here, no need to handle something else if (context.mounted) { Navigator.of(context).pop(); @@ -193,7 +268,7 @@ class BookWidget extends ConsumerWidget { onPressed: () async { await ref .read(bookRepositoryProvider) - .addToWishlist(bookSuggestion.target); + .addToWishlist(bookSuggestion); // Just pop the screen here, no need to handle something else if (context.mounted) { Navigator.of(context).pop(); @@ -204,12 +279,71 @@ class BookWidget extends ConsumerWidget { ], ), TextButton( + onPressed: notMyBookCallback, child: Text('not_my_book'.tr()), - onPressed: () { - // TODO Show bookSuggestion.suggestions in another ticket - }, ), ], ); } } + +class _OtherBookSuggestions extends ConsumerWidget { + final List otherSuggestions; + final AddBookWidgetAppearance appearance; + + final void Function() backButtonCallback; + final void Function(Book) selectOtherBookCallback; + + const _OtherBookSuggestions({ + required this.otherSuggestions, + required this.appearance, + required this.backButtonCallback, + required this.selectOtherBookCallback, + super.key, + }); + @override + Widget build(BuildContext context, WidgetRef ref) { + final mq = MediaQuery.of(context); + + return ConstrainedBox( + constraints: BoxConstraints( + maxHeight: mq.size.height - mq.viewInsets.bottom - 225, + ), + child: Column( + children: [ + Text( + 'recommendations.other_suggestions'.tr(), + style: Theme.of(context).textTheme.headlineSmall, + ), + const SizedBox(height: 16), + Expanded( + child: ListView.separated( + separatorBuilder: (context, index) => const SizedBox(height: 16), + itemCount: otherSuggestions.length, + itemBuilder: (context, index) { + final book = otherSuggestions[index]; + return ListTile( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + title: Text(book.title), + subtitle: Text(book.author), + leading: BookImage( + book.thumbnailAddress, + size: appearance.imageSize, + ), + onTap: () => selectOtherBookCallback(book), + ); + }, + ), + ), + const Divider(), + OutlinedButton( + onPressed: backButtonCallback, + child: Text('recommendations.nope'.tr()), + ), + ], + ), + ); + } +} diff --git a/lib/src/ui/book/book_image.dart b/lib/src/ui/book/book_image.dart index e62d4ce..aa485fc 100644 --- a/lib/src/ui/book/book_image.dart +++ b/lib/src/ui/book/book_image.dart @@ -15,7 +15,7 @@ class BookImage extends StatelessWidget { Widget build(BuildContext context) { if (_imageUrl != null) { return CachedNetworkImage( - imageUrl: _imageUrl!, + imageUrl: _imageUrl, width: size, ); } else { diff --git a/pubspec.lock b/pubspec.lock index 9b5b59c..defd915 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,26 +13,26 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" url: "https://pub.dev" source: hosted - version: "64.0.0" + version: "67.0.0" _flutterfire_internals: dependency: transitive description: name: _flutterfire_internals - sha256: "1a52f1afae8ab7ac4741425114713bdbba802f1ce1e0648e167ffcc6e05e96cf" + sha256: "554f148e71e9e016d9c04d4af6b103ca3f74a1ceed7d7307b70a0f41e991eb77" url: "https://pub.dev" source: hosted - version: "1.3.21" + version: "1.3.26" analyzer: dependency: transitive description: name: analyzer - sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" url: "https://pub.dev" source: hosted - version: "6.2.0" + version: "6.4.1" analyzer_plugin: dependency: transitive description: @@ -133,10 +133,10 @@ packages: dependency: transitive description: name: built_value - sha256: a3ec2e0f967bc47f69f95009bb93db936288d61d5343b9436e378b28a2f830c6 + sha256: fedde275e0a6b798c3296963c5cd224e3e1b55d0e478d5b7e65e6b540f363a0e url: "https://pub.dev" source: hosted - version: "8.9.0" + version: "8.9.1" cached_network_image: dependency: "direct main" description: @@ -237,10 +237,10 @@ packages: dependency: transitive description: name: cross_file - sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e + sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" url: "https://pub.dev" source: hosted - version: "0.3.3+8" + version: "0.3.4+1" crypto: dependency: transitive description: @@ -261,50 +261,50 @@ packages: dependency: "direct dev" description: name: custom_lint - sha256: f89ff83efdba7c8996e86bb3bad0b759d58f9b19ae4d0e277a386ddd8b481217 + sha256: "445242371d91d2e24bd7b82e3583a2c05610094ba2d0575262484ad889c8f981" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.2" custom_lint_builder: dependency: transitive description: name: custom_lint_builder - sha256: "9cdd9987feaa6925ec5f98d64de4fbbb5d94248ff77bbf2489366efad6c4baef" + sha256: "4c0aed2a3491096e91cf1281923ba1b6814993f16dde0fd60f697925225bbbd6" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.2" custom_lint_core: dependency: transitive description: name: custom_lint_core - sha256: "9003a91409c9f1db6e2e50b4870d1d5e802e5923b25f7261bf3cb3e11ea9d4fb" + sha256: ce5d6215f4e143f7780ce53f73dfa6fc503f39d2d30bef76c48be9ac1a09d9a6 url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.2" dart_style: dependency: transitive description: name: dart_style - sha256: "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368" + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.6" dio: dependency: "direct main" description: name: dio - sha256: "797e1e341c3dd2f69f2dad42564a6feff3bfb87187d05abb93b9609e6f1645c3" + sha256: "49af28382aefc53562459104f64d16b9dfd1e8ef68c862d5af436cc8356ce5a8" url: "https://pub.dev" source: hosted - version: "5.4.0" + version: "5.4.1" easy_localization: dependency: "direct main" description: name: easy_localization - sha256: de63e3b422adfc97f256cbb3f8cf12739b6a4993d390f3cadb3f51837afaefe5 + sha256: c145aeb6584aedc7c862ab8c737c3277788f47488bfdf9bae0fe112bd0a4789c url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" easy_logger: dependency: transitive description: @@ -357,10 +357,10 @@ packages: dependency: transitive description: name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" file: dependency: transitive description: @@ -373,58 +373,58 @@ packages: dependency: "direct main" description: name: firebase_analytics - sha256: edb9f9eaecf0e6431e5c12b7fabdb68be3e85ce51f941ccbfa6cb71327e8b535 + sha256: ddfcb2aadec496e3ae2c49aa77c11b416ff705c38a3faa837fcbddceb2e049fa url: "https://pub.dev" source: hosted - version: "10.8.5" + version: "10.8.10" firebase_analytics_platform_interface: dependency: transitive description: name: firebase_analytics_platform_interface - sha256: de4a54353cf58412c6da6b660a0dbad8efacb33b345c0286bc3a2edb869124d8 + sha256: "0a83107f585a630592e8b9113a7e0f2bd6fb72cdb331026ed45744f80686658d" url: "https://pub.dev" source: hosted - version: "3.9.5" + version: "3.9.10" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - sha256: "77e4c02ffd0204ccc7856221193265c807b7e056fa62855f973a7f77435b5d41" + sha256: "920da330f32a3958af929084aa114eaceb3d3a267ab784b814d1bdfb622a8a9a" url: "https://pub.dev" source: hosted - version: "0.5.5+17" + version: "0.5.5+22" firebase_auth: dependency: "direct main" description: name: firebase_auth - sha256: "549f8ceb8cfc1920f85dea0ab73fb7dc209ee8182916b252eda342786c33369d" + sha256: "3fd6475e60d518c021e70e7d4262db7dac327adf496e71048545da2e0b9ca510" url: "https://pub.dev" source: hosted - version: "4.17.4" + version: "4.17.9" firebase_auth_platform_interface: dependency: transitive description: name: firebase_auth_platform_interface - sha256: "83bfc14649f673db17ad0bffaa0222019f99f3ddf499bcc8b46e1eb3443d3e08" + sha256: d44458576804f246a126fe797547330d2f7bd62069ce12479b583082340a2e4d url: "https://pub.dev" source: hosted - version: "7.1.4" + version: "7.1.9" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: d2266452698dd5f6e522408dacfa06bb7f9703b5bdd11498fce2812ded50805b + sha256: "57262c987e4f4e30c3e9a31f41171348c7dfbcdb8c84faa4cf841cea33e0e499" url: "https://pub.dev" source: hosted - version: "5.9.4" + version: "5.10.0" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "7e049e32a9d347616edb39542cf92cd53fdb4a99fb6af0a0bff327c14cd76445" + sha256: "67bf0d5fd78f12f51c6b54a72f6141314136a1a90e98b1b7c45e7fac883254ed" url: "https://pub.dev" source: hosted - version: "2.25.4" + version: "2.27.1" firebase_core_platform_interface: dependency: transitive description: @@ -437,74 +437,74 @@ packages: dependency: transitive description: name: firebase_core_web - sha256: "57e61d6010e253b36d38191cefd6199d7849152cdcd234b61ca290cdb278a0ba" + sha256: "5377eaac3b9fe8aaf22638d87f92b62784f23572e132dfc029195e84d6cb37de" url: "https://pub.dev" source: hosted - version: "2.11.4" + version: "2.12.0" firebase_crashlytics: dependency: "direct main" description: name: firebase_crashlytics - sha256: efd096e4c3d2c568e128505b6e4ce5f5d5a1629f700a4d6fee6bd25b85937dde + sha256: cf120df5b473f5f8cd24f9de663edc8aed3a1888d29d805076be0448bdee249e url: "https://pub.dev" source: hosted - version: "3.4.14" + version: "3.4.19" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - sha256: "225a54d834a118be262c1f1096d407515e35b99d9b474c987abdcff7663f2b81" + sha256: "99656cc39228e8f2b845cddb4d43307bb44294a03e7d00b4d8e35536889bc65c" url: "https://pub.dev" source: hosted - version: "3.6.21" + version: "3.6.26" firebase_database: dependency: "direct main" description: name: firebase_database - sha256: "3beb37b5869e68dba67fc648a9ee2398bb5284d9e94d513e84bb85b1b010048e" + sha256: c7e73adcccd10ff0587342b32c55ead7ec90472f4b57bebf415137559fbef05a url: "https://pub.dev" source: hosted - version: "10.4.5" + version: "10.4.10" firebase_database_platform_interface: dependency: transitive description: name: firebase_database_platform_interface - sha256: "9d5f25225a17200d59470da1d5c0646c75aaa73c5df6f920e36bae1c60e0b83d" + sha256: "03bd5ebd12cf8611be68c88028f76712e82842bdf17bffad953b69c45e2d6f78" url: "https://pub.dev" source: hosted - version: "0.2.5+21" + version: "0.2.5+26" firebase_database_web: dependency: transitive description: name: firebase_database_web - sha256: "751c047a362fad3d2fea60b1d97bbb2f4515097b641a5b38ab5aa5ba0e1afd26" + sha256: a19604e81c89d06b8b8abf0c6be79b68a6f3eef45a0578f2c621b46b378594c1 url: "https://pub.dev" source: hosted - version: "0.2.3+21" + version: "0.2.3+26" firebase_storage: dependency: "direct main" description: name: firebase_storage - sha256: b87029b506972987a827feaf296c21cd0fe1bb69c2595be1672253ba5205573e + sha256: "1f73deac05f02275c4d267eb3db3e9617f67f5cf011cdda1b483b6d91a0f895b" url: "https://pub.dev" source: hosted - version: "11.6.5" + version: "11.6.10" firebase_storage_platform_interface: dependency: transitive description: name: firebase_storage_platform_interface - sha256: "180822103b164d0d597131f2fb658cd1c438148abafc6f2256b565227303ba35" + sha256: b7d6da9f3114a095632512fdd1f8eb346eff7f5107e3391c93826ba882684033 url: "https://pub.dev" source: hosted - version: "5.1.8" + version: "5.1.13" firebase_storage_web: dependency: transitive description: name: firebase_storage_web - sha256: "9523c455521b0497ee436be8614aab52f719309d16147a5b11091e44e4c5aa0a" + sha256: d02e7804a129538fe4ff256a4d1617bdaf86ad8971352c1b381ee2a43e6e38e7 url: "https://pub.dev" source: hosted - version: "3.6.22" + version: "3.8.0" fixnum: dependency: transitive description: @@ -525,10 +525,10 @@ packages: dependency: "direct main" description: name: flex_color_picker - sha256: "0871edc170153cfc3de316d30625f40a85daecfa76ce541641f3cc0ec7757cbf" + sha256: "904373c7b0531fd4a92d29705a80ab4594b7647da2d93044487aaec4614cb6ed" url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.4.0" flex_seed_scheme: dependency: transitive description: @@ -583,10 +583,10 @@ packages: dependency: "direct main" description: name: flutter_platform_widgets - sha256: "4970c211af1dad0a161e6379d04de2cace80283da0439f2f87d31a541f9b2b84" + sha256: c483c0591d845d2adb84e341a1cfb746f1a8a7aff4c72a5957772446020601f4 url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.1.0" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -599,10 +599,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: "4bce556b7ecbfea26109638d5237684538d4abc509d253e6c5c4c5733b360098" + sha256: "0f1974eff5bbe774bf1d870e406fc6f29e3d6f1c46bd9c58e7172ff68a785d7d" url: "https://pub.dev" source: hosted - version: "2.4.10" + version: "2.5.1" flutter_staggered_grid_view: dependency: "direct main" description: @@ -615,10 +615,10 @@ packages: dependency: "direct main" description: name: flutter_svg - sha256: d39e7f95621fc84376bc0f7d504f05c3a41488c562f4a8ad410569127507402c + sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2" url: "https://pub.dev" source: hosted - version: "2.0.9" + version: "2.0.10+1" flutter_test: dependency: "direct dev" description: flutter @@ -673,18 +673,18 @@ packages: dependency: "direct main" description: name: google_fonts - sha256: f0b8d115a13ecf827013ec9fc883390ccc0e87a96ed5347a3114cac177ef18e8 + sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82 url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.2.1" google_identity_services_web: dependency: transitive description: name: google_identity_services_web - sha256: "0c56c2c5d60d6dfaf9725f5ad4699f04749fb196ee5a70487a46ef184837ccf6" + sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" url: "https://pub.dev" source: hosted - version: "0.3.0+2" + version: "0.3.1+1" google_sign_in: dependency: "direct main" description: @@ -705,10 +705,10 @@ packages: dependency: transitive description: name: google_sign_in_ios - sha256: f3336d9e44d4d28063ac90271f6db5caf99f0480cb07281330e7a432edb95226 + sha256: a7d653803468d30b82ceb47ea00fe86d23c56e63eb2e5c2248bb68e9df203217 url: "https://pub.dev" source: hosted - version: "5.7.3" + version: "5.7.4" google_sign_in_platform_interface: dependency: transitive description: @@ -721,26 +721,26 @@ packages: dependency: transitive description: name: google_sign_in_web - sha256: a278ea2d01013faf341cbb093da880d0f2a552bbd1cb6ee90b5bebac9ba69d77 + sha256: fc0f14ed45ea616a6cfb4d1c7534c2221b7092cc4f29a709f0c3053cc3e821bd url: "https://pub.dev" source: hosted - version: "0.12.3+2" + version: "0.12.4" googleapis: dependency: "direct main" description: name: googleapis - sha256: "8a8c311723162af077ca73f94b823b97ff68770d966e29614d20baca9fdb490a" + sha256: "4eefba93b5f714d6c2bcc1695ff6fb09d36684d2a06912285d3981069796da10" url: "https://pub.dev" source: hosted - version: "12.0.0" + version: "13.1.0" googleapis_auth: dependency: transitive description: name: googleapis_auth - sha256: af7c3a3edf9d0de2e1e0a77e994fae0a581c525fa7012af4fa0d4a52ed9484da + sha256: cafc46446574fd42826aa4cd4d623c94482598fda0a5a5649bf2781bcbc09258 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.5.0" graphs: dependency: transitive description: @@ -753,18 +753,18 @@ packages: dependency: transitive description: name: hotreloader - sha256: "94ee21a60ea2836500799f3af035dc3212b1562027f1e0031c14e087f0231449" + sha256: ed56fdc1f3a8ac924e717257621d09e9ec20e308ab6352a73a50a1d7a4d9158e url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.2.0" http: dependency: transitive description: name: http - sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba + sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" http_multi_server: dependency: transitive description: @@ -790,7 +790,7 @@ packages: source: hosted version: "4.1.7" intl: - dependency: "direct main" + dependency: transitive description: name: intl sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" @@ -865,10 +865,10 @@ packages: dependency: "direct main" description: name: logger - sha256: "6bbb9d6f7056729537a4309bda2e74e18e5d9f14302489cc1e93f33b3fe32cac" + sha256: b3ff55aeb08d9d8901b767650285872cb1bb8f508373b3e348d60268b0c7f770 url: "https://pub.dev" source: hosted - version: "2.0.2+1" + version: "2.1.0" logging: dependency: transitive description: @@ -881,10 +881,10 @@ packages: dependency: "direct main" description: name: lottie - sha256: "1f0ce68112072d66ea271a9841994fa8d16442e23d8cf8996c9fa74174e58b4e" + sha256: ce2bb2605753915080e4ee47f036a64228c88dc7f56f7bc1dbe912d75b55b1e2 url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.1.0" matcher: dependency: transitive description: @@ -1081,10 +1081,10 @@ packages: dependency: transitive description: name: riverpod - sha256: "548e2192eb7aeb826eb89387f814edb76594f3363e2c0bb99dd733d795ba3589" + sha256: f21b32ffd26a36555e501b04f4a5dca43ed59e16343f1a30c13632b2351dfa4d url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.5.1" riverpod_analyzer_utils: dependency: transitive description: @@ -1097,26 +1097,26 @@ packages: dependency: "direct main" description: name: riverpod_annotation - sha256: "77e5d51afa4fa3e67903fb8746f33d368728d7051a0b6c292bcee60aeba46d95" + sha256: e5e796c0eba4030c704e9dae1b834a6541814963292839dcf9638d53eba84f5c url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.5" riverpod_generator: dependency: "direct dev" description: name: riverpod_generator - sha256: "359068f04879347ae4edbe66c81cc95f83fa1743806d1a0c86e55dd3c33ebb32" + sha256: d451608bf17a372025fc36058863737636625dfdb7e3cbf6142e0dfeb366ab22 url: "https://pub.dev" source: hosted - version: "2.3.11" + version: "2.4.0" riverpod_lint: dependency: "direct dev" description: name: riverpod_lint - sha256: e9bbd02e9e89e18eecb183bbca556d7b523a0669024da9b8167c08903f442937 + sha256: "3c67c14ccd16f0c9d53e35ef70d06cd9d072e2fb14557326886bbde903b230a5" url: "https://pub.dev" source: hosted - version: "2.3.9" + version: "2.3.10" rxdart: dependency: "direct main" description: @@ -1193,10 +1193,10 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21" + sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a" url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.3.0" shared_preferences_windows: dependency: transitive description: @@ -1366,26 +1366,26 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: c512655380d241a337521703af62d2c122bf7b77a46ff7dd750092aa9433499c + sha256: "0ecc004c62fd3ed36a2ffcbe0dd9700aee63bd7532d0b642a488b1ec310f492e" url: "https://pub.dev" source: hosted - version: "6.2.4" + version: "6.2.5" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "507dc655b1d9cb5ebc756032eb785f114e415f91557b73bf60b7e201dfedeb2f" + sha256: d4ed0711849dd8e33eb2dd69c25db0d0d3fdc37e0a62e629fe32f57a22db2745 url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.3.0" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "75bb6fe3f60070407704282a2d295630cab232991eb52542b18347a8a941df03" + sha256: "9149d493b075ed740901f3ee844a38a00b33116c7c5c10d7fb27df8987fb51d5" url: "https://pub.dev" source: hosted - version: "6.2.4" + version: "6.2.5" url_launcher_linux: dependency: transitive description: @@ -1406,18 +1406,18 @@ packages: dependency: transitive description: name: url_launcher_platform_interface - sha256: a932c3a8082e118f80a475ce692fde89dc20fddb24c57360b96bc56f7035de1f + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b + sha256: "3692a459204a33e04bc94f5fb91158faf4f2c8903281ddd82915adecdb1a901d" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.0" url_launcher_windows: dependency: transitive description: @@ -1438,26 +1438,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "4ac59808bbfca6da38c99f415ff2d3a5d7ca0a6b4809c71d9cf30fba5daf9752" + sha256: "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3" url: "https://pub.dev" source: hosted - version: "1.1.10+1" + version: "1.1.11+1" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: f3247e7ab0ec77dc759263e68394990edc608fb2b480b80db8aa86ed09279e33 + sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da url: "https://pub.dev" source: hosted - version: "1.1.10+1" + version: "1.1.11+1" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "18489bdd8850de3dd7ca8a34e0c446f719ec63e2bab2e7a8cc66a9028dd76c5a" + sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81" url: "https://pub.dev" source: hosted - version: "1.1.10+1" + version: "1.1.11+1" vector_math: dependency: transitive description: @@ -1486,26 +1486,26 @@ packages: dependency: transitive description: name: web - sha256: "4188706108906f002b3a293509234588823c8c979dc83304e229ff400c996b05" + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" url: "https://pub.dev" source: hosted - version: "0.4.2" + version: "0.5.1" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + sha256: "1d8e795e2a8b3730c41b8a98a2dff2e0fb57ae6f0764a1c46ec5915387d257b2" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.4" win32: dependency: transitive description: name: win32 - sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8" + sha256: "8cb58b45c47dcb42ab3651533626161d6b67a2921917d8d429791f76972b3480" url: "https://pub.dev" source: hosted - version: "5.2.0" + version: "5.3.0" xdg_directories: dependency: transitive description: @@ -1532,4 +1532,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.3.0 <4.0.0" - flutter: ">=3.16.0" + flutter: ">=3.19.2" diff --git a/pubspec.yaml b/pubspec.yaml index a0e36ff..b1e9a61 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,12 +18,12 @@ dependencies: lottie: ^3.0.0 google_fonts: ^6.1.0 # Firebase - firebase_crashlytics: ^3.3.6 - firebase_database: ^10.2.6 - firebase_analytics: ^10.5.0 - firebase_auth: ^4.10.0 - firebase_core: ^2.16.0 - firebase_storage: ^11.2.7 + firebase_crashlytics: ^3.4.16 + firebase_database: ^10.4.7 + firebase_analytics: ^10.8.7 + firebase_auth: ^4.17.6 + firebase_core: ^2.25.5 + firebase_storage: ^11.6.7 url_launcher: ^6.1.14 cached_network_image: ^3.3.0 @@ -39,16 +39,15 @@ dependencies: flutter_barcode_scanner: ^2.0.0 settings_ui: ^2.0.2 logger: ^2.0.2+1 - easy_localization: ^3.0.3 + easy_localization: ^3.0.5 rxdart: ^0.27.7 freezed_annotation: ^2.4.1 json_annotation: ^4.8.1 - intl: ^0.18.1 carousel_slider: ^4.2.1 flex_color_picker: ^3.3.0 timeline_tile: ^2.0.0 expandable: ^5.0.1 - googleapis: ^12.0.0 + googleapis: ^13.0.0 google_sign_in: ^6.1.6 extension_google_sign_in_as_googleapis_auth: ^2.0.11 fl_chart: ^0.66.1