diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 457017e..b4d9c81 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,8 +2,8 @@ name: Flutter Workflow on: [push, workflow_dispatch] jobs: - build: - runs-on: macos-latest + ios: + runs-on: macos-14 steps: - name: Checkout code uses: actions/checkout@v3 @@ -15,7 +15,42 @@ jobs: java-version: '11' - name: Install Flutter - uses: subosito/flutter-action@v2 + uses: subosito/flutter-action@v2.12.0 + with: + channel: 'stable' + cache: true + + - name: Install dependencies + run: flutter pub get + + - name: Generate code + run: flutter pub run build_runner build --delete-conflicting-outputs + + - name: Run tests + run: flutter test --coverage + + - name: Create GoogleService-Info.plist file + env: + GOOGLE_SERVICES_INFO_PLIST: ${{ secrets.GOOGLE_SERVICES_INFO_PLIST }} + run: touch ${GITHUB_WORKSPACE}/ios/Runner/GoogleService-Info.plist && echo $GOOGLE_SERVICES_INFO_PLIST > ${GITHUB_WORKSPACE}/ios/Runner/GoogleService-Info.plist + + - name: Build iOS + run: flutter build ios --release --no-codesign + + android: + runs-on: macos-14 + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup Java + uses: actions/setup-java@v2 + with: + distribution: 'zulu' + java-version: '11' + + - name: Install Flutter + uses: subosito/flutter-action@v2.12.0 with: channel: 'stable' cache: true @@ -37,13 +72,32 @@ jobs: - name: Build Android appbundle run: flutter build appbundle - - name: Create GoogleService-Info.plist file - env: - GOOGLE_SERVICES_INFO_PLIST: ${{ secrets.GOOGLE_SERVICES_INFO_PLIST }} - run: touch ${GITHUB_WORKSPACE}/ios/Runner/GoogleService-Info.plist && echo $GOOGLE_SERVICES_INFO_PLIST > ${GITHUB_WORKSPACE}/ios/Runner/GoogleService-Info.plist + web: + runs-on: macos-14 + steps: + - name: Checkout code + uses: actions/checkout@v3 - - name: Build iOS - run: flutter build ios --release --no-codesign + - name: Setup Java + uses: actions/setup-java@v2 + with: + distribution: 'zulu' + java-version: '11' + + - name: Install Flutter + uses: subosito/flutter-action@v2.12.0 + with: + channel: 'stable' + cache: true + + - name: Install dependencies + run: flutter pub get + + - name: Generate code + run: flutter pub run build_runner build --delete-conflicting-outputs + + - name: Run tests + run: flutter test --coverage - name: Build Web run: flutter build web diff --git a/assets/translations/de-DE.json b/assets/translations/de-DE.json index a57d4cc..03bce9b 100644 --- a/assets/translations/de-DE.json +++ b/assets/translations/de-DE.json @@ -108,6 +108,11 @@ "hint": "Title oder ISBN", "title": "Titelsuche" }, + "random_book": { + "description": "TODO", + "move_to_reading": "TODO", + "title": "TODO" + }, "recommendations": { "add-to-wishlist": "Zur Wunschliste hinzufügen", "empty": "Keine Vorschläge verfügbar.", diff --git a/assets/translations/en-US.json b/assets/translations/en-US.json index bd51d96..a6abf0d 100644 --- a/assets/translations/en-US.json +++ b/assets/translations/en-US.json @@ -107,6 +107,11 @@ "hint": "Title or ISBN", "title": "Title search" }, + "random_book": { + "description": "Can't decide which book to read next? We've got you covered. Let us decide for you what you should read next.", + "move_to_reading": "Move To Reading", + "title": "Pick Random Book" + }, "recommendations": { "add-to-wishlist": "Add to wishlist", "empty": "No recommendations available.", diff --git a/ios/Podfile.lock b/ios/Podfile.lock index dfb1bb2..b9b6857 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -24,26 +24,26 @@ PODS: - Firebase/Storage (10.20.0): - Firebase/CoreOnly - FirebaseStorage (~> 10.20.0) - - firebase_analytics (10.8.5): + - firebase_analytics (10.8.7): - Firebase/Analytics (= 10.20.0) - firebase_core - Flutter - - firebase_auth (4.17.4): + - firebase_auth (4.17.6): - Firebase/Auth (= 10.20.0) - firebase_core - Flutter - - firebase_core (2.25.4): + - firebase_core (2.25.5): - Firebase/CoreOnly (= 10.20.0) - Flutter - - firebase_crashlytics (3.4.14): + - firebase_crashlytics (3.4.16): - Firebase/Crashlytics (= 10.20.0) - firebase_core - Flutter - - firebase_database (10.4.5): + - firebase_database (10.4.7): - Firebase/Database (= 10.20.0) - firebase_core - Flutter - - firebase_storage (11.6.5): + - firebase_storage (11.6.7): - Firebase/Storage (= 10.20.0) - firebase_core - Flutter @@ -275,12 +275,12 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570 Firebase: 10c8cb12fb7ad2ae0c09ffc86cd9c1ab392a0031 - firebase_analytics: 2e82fd84ce13f8321aa7b99336d6ee0e6cc7b984 - firebase_auth: 29a10d4129d53aa690c10dbd838ed1a059ef0c9b - firebase_core: a46c312d8bae4defa3d009b2aa7b5b413aeb394e - firebase_crashlytics: 3d12285fcbd865d576b9965bd4090cd8b68e11fd - firebase_database: e6b72eeda8dadd6e3965d86b86c997d35e43d4e2 - firebase_storage: 5007be227e54a46f260b6040a23b4fdc8ca1c5c5 + firebase_analytics: 2c1c3057d5da3bd3aab819f7e6ee153a4e46c59e + firebase_auth: b237f065b2afc6bd7962124e1cbacdbef31036e6 + firebase_core: c8628c7ce80f79439149549052bff22f6784fbf5 + firebase_crashlytics: 012078b4eec6fc9716f97ba3da0f0e44a04e95b1 + firebase_database: 515d4f325b6b39eb7c94a4ca70df33dd07369917 + firebase_storage: ad66b33e4e0be3e82da8a0a513c0dcc75cb08ea6 FirebaseAnalytics: a2731bf3670747ce8f65368b118d18aa8e368246 FirebaseAppCheckInterop: e81bdb1cdb82f8e0cef353ba5018a8402682032c FirebaseAuth: 9c5c400d2c3055d8ae3a0284944c86fa95d48dac @@ -294,9 +294,9 @@ SPEC CHECKSUMS: FirebaseSessions: 2f348975f6d1c139231c180e12194161da2e0cd6 FirebaseSharedSwift: 2fbf73618288b7a36b2014b957745dcdd781389e FirebaseStorage: 8505bae8ac6662474b5b50e07759fb2765c15746 - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_barcode_scanner: 7a1144744c28dc0c57a8de7218ffe5ec59a9e4bf - google_sign_in_ios: 1bfaf6607b44cd1b24c4d4bc39719870440f9ce1 + google_sign_in_ios: 989eea5abe94af62050782714daf920be883d4a2 GoogleAppMeasurement: bb3c564c3efb933136af0e94899e0a46167466a8 GoogleDataTransport: 57c22343ab29bc686febbf7cbb13bad167c2d8fe GoogleSignIn: b232380cf495a429b8095d3178a8d5855b42e842 @@ -312,7 +312,7 @@ SPEC CHECKSUMS: share_plus: c3fef564749587fc939ef86ffb283ceac0baf9f5 shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec - url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812 + url_launcher_ios: 6116280ddcfe98ab8820085d8d76ae7449447586 PODFILE CHECKSUM: 7adbc9d59f05e1b01f554ea99b6c79e97f2214a2 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 @@ - _buildLargeLayout(bookRepository, columns: 3), - DeviceFormFactor.tablet => - _buildLargeLayout(bookRepository, columns: 2), - DeviceFormFactor.phone => _buildPhoneLayout(bookRepository, ref), + DeviceFormFactor.desktop => _buildLargeLayout( + bookRepository, + columns: 3, + showPickRandomBookTile: + isRandomBooksEnabled && state == BookState.readLater, + ), + DeviceFormFactor.tablet => _buildLargeLayout( + bookRepository, + columns: 2, + showPickRandomBookTile: + isRandomBooksEnabled && state == BookState.readLater, + ), + DeviceFormFactor.phone => _buildPhoneLayout( + bookRepository, + ref, + showPickRandomBookTile: + isRandomBooksEnabled && state == BookState.readLater, + ), }; }, ); } - Widget _buildPhoneLayout(BookRepository bookRepository, WidgetRef ref) { + Widget _buildPhoneLayout( + BookRepository bookRepository, + WidgetRef ref, { + bool showPickRandomBookTile = false, + }) { return ReorderableListView.builder( proxyDecorator: (child, index, animation) { return Material( @@ -84,22 +106,30 @@ class _BooksScreen extends ConsumerWidget { ), ); }, - padding: const EdgeInsets.symmetric(horizontal: 16.0), + padding: const EdgeInsets.only(left: 16.0, right: 16.0, top: 16.0), physics: const BouncingScrollPhysics(), + header: showPickRandomBookTile + ? Padding( + padding: const EdgeInsets.only(bottom: 16.0), + child: _PickRandomBookWidget(books: books), + ) + : null, itemCount: books.length, - itemBuilder: (context, index) => Column( - key: ValueKey(books[index].id), - children: [ - _buildItem( - books[index], - bookRepository, - useMobileLayout: true, - ), - const SizedBox( - height: 16, - ), - ], - ), + itemBuilder: (context, index) { + return Column( + key: ValueKey(books[index].id), + children: [ + _buildItem( + books[index], + bookRepository, + useMobileLayout: true, + ), + const SizedBox( + height: 16, + ), + ], + ); + }, onReorder: (oldIndex, newIndex) async { if (ref.read(sortingStrategyProvider) != BookSortStrategy.position) { ref @@ -119,6 +149,7 @@ class _BooksScreen extends ConsumerWidget { Widget _buildLargeLayout( BookRepository bookRepository, { required int columns, + bool showPickRandomBookTile = false, }) { return GridView.builder( padding: const EdgeInsets.all(16), @@ -128,12 +159,25 @@ class _BooksScreen extends ConsumerWidget { crossAxisSpacing: 16, childAspectRatio: 4, ), - itemBuilder: (context, index) => _buildItem( - books[index], - bookRepository, - useMobileLayout: false, - ), - itemCount: books.length, + itemBuilder: (context, index) { + if (showPickRandomBookTile) { + if (index == 0) { + return _PickRandomBookWidget(books: books); + } + return _buildItem( + books[index - 1], + bookRepository, + useMobileLayout: false, + ); + } else { + return _buildItem( + books[index], + bookRepository, + useMobileLayout: false, + ); + } + }, + itemCount: showPickRandomBookTile ? books.length + 1 : books.length, ); } @@ -173,3 +217,101 @@ class _BooksScreen extends ConsumerWidget { ); } } + +class _PickRandomBookWidget extends ConsumerWidget { + final List books; + + const _PickRandomBookWidget({required this.books, super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + return Container( + padding: const EdgeInsets.all(8.0), + decoration: BoxDecoration( + border: Border.all( + color: Theme.of(context).colorScheme.outline, + width: .2, + ), + borderRadius: BorderRadius.circular(12.0), + ), + child: Column( + children: [ + Text( + 'random_book.description'.tr(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.titleMedium?.copyWith( + color: Theme.of(context).colorScheme.onSurface, + ), + ), + const SizedBox(height: 8.0), + DanteOutlinedButton( + child: Text( + 'random_book.title'.tr(), + style: Theme.of(context).textTheme.titleMedium?.copyWith( + color: Theme.of(context).colorScheme.onSurface, + ), + ), + onPressed: () async { + // Get random book from list + final book = books[Random().nextInt(books.length)]; + await _showRandomBookDialog( + context, + book, + ref.read(bookRepositoryProvider), + ); + }, + ), + ], + ), + ); + } + + Future _showRandomBookDialog( + BuildContext context, + Book book, + BookRepository repository, + ) async { + await showDialog( + context: context, + builder: (context) { + return AlertDialog( + alignment: Alignment.center, + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + book.title, + style: Theme.of(context).textTheme.titleMedium?.copyWith( + color: Theme.of(context).colorScheme.onSurface, + ), + ), + const SizedBox(height: 8.0), + CachedNetworkImage( + key: const ValueKey('book-detail-image'), + imageUrl: book.thumbnailAddress!, + width: 80, + ), + ], + ), + actionsAlignment: MainAxisAlignment.center, + actions: [ + DanteOutlinedButton( + onPressed: () { + unawaited( + repository.update(book.copyWith(state: BookState.reading)), + ); + Navigator.of(context).pop(); + }, + child: Text( + 'random_book.move_to_reading'.tr(), + style: Theme.of(context).textTheme.titleMedium?.copyWith( + color: Theme.of(context).colorScheme.onSurface, + ), + ), + ), + ], + ); + }, + ); + } +} diff --git a/pubspec.lock b/pubspec.lock index 9b5b59c..98337bd 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: fe4c077084ddda88f327dc1c96d16631cd68d4948644593fcbcd911c2c89e2fa url: "https://pub.dev" source: hosted - version: "1.3.21" + version: "1.3.23" 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: @@ -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: c6220b23397f9302a42617227ee8fb1c5d718097a5351fcce53561d73fc10339 url: "https://pub.dev" source: hosted - version: "10.8.5" + version: "10.8.7" firebase_analytics_platform_interface: dependency: transitive description: name: firebase_analytics_platform_interface - sha256: de4a54353cf58412c6da6b660a0dbad8efacb33b345c0286bc3a2edb869124d8 + sha256: "7f1c02cdd93a5e0a561af2f551465ffb6abdd541dbd0c8a9b8628d9ae0a5d024" url: "https://pub.dev" source: hosted - version: "3.9.5" + version: "3.9.7" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - sha256: "77e4c02ffd0204ccc7856221193265c807b7e056fa62855f973a7f77435b5d41" + sha256: ebb857c23f35fed52220b6c3271c12eeb6137de3930845223e3d0590b6fd0649 url: "https://pub.dev" source: hosted - version: "0.5.5+17" + version: "0.5.5+19" firebase_auth: dependency: "direct main" description: name: firebase_auth - sha256: "549f8ceb8cfc1920f85dea0ab73fb7dc209ee8182916b252eda342786c33369d" + sha256: "6d8b4455524e2a619a135169a0ae817778d4acf56172188acae85f69f5e67185" url: "https://pub.dev" source: hosted - version: "4.17.4" + version: "4.17.6" firebase_auth_platform_interface: dependency: transitive description: name: firebase_auth_platform_interface - sha256: "83bfc14649f673db17ad0bffaa0222019f99f3ddf499bcc8b46e1eb3443d3e08" + sha256: "3eed984830f610f43164d539ec6228820cf4936ab6ef491e1afcfaca80143c84" url: "https://pub.dev" source: hosted - version: "7.1.4" + version: "7.1.6" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: d2266452698dd5f6e522408dacfa06bb7f9703b5bdd11498fce2812ded50805b + sha256: fcf4718abc722131218de3b84772d83019be48c9211dbd5998aece716c52ff31 url: "https://pub.dev" source: hosted - version: "5.9.4" + version: "5.9.6" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "7e049e32a9d347616edb39542cf92cd53fdb4a99fb6af0a0bff327c14cd76445" + sha256: "797379ea206eaeeb62499775de812761493d0692890fdc7f90b6183a3369176d" url: "https://pub.dev" source: hosted - version: "2.25.4" + version: "2.25.5" firebase_core_platform_interface: dependency: transitive description: @@ -437,74 +437,74 @@ packages: dependency: transitive description: name: firebase_core_web - sha256: "57e61d6010e253b36d38191cefd6199d7849152cdcd234b61ca290cdb278a0ba" + sha256: c8e1d59385eee98de63c92f961d2a7062c5d9a65e7f45bdc7f1b0b205aab2492 url: "https://pub.dev" source: hosted - version: "2.11.4" + version: "2.11.5" firebase_crashlytics: dependency: "direct main" description: name: firebase_crashlytics - sha256: efd096e4c3d2c568e128505b6e4ce5f5d5a1629f700a4d6fee6bd25b85937dde + sha256: "0126fa101b74fb981796b3e6f47ccf7fc40237ec918327aaec7c0a06fd1bb4c1" url: "https://pub.dev" source: hosted - version: "3.4.14" + version: "3.4.16" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - sha256: "225a54d834a118be262c1f1096d407515e35b99d9b474c987abdcff7663f2b81" + sha256: cdfa0a20d66e1b32de542883c0ddf651ee9b66b12cebf73067e4d2cdc0865d17 url: "https://pub.dev" source: hosted - version: "3.6.21" + version: "3.6.23" firebase_database: dependency: "direct main" description: name: firebase_database - sha256: "3beb37b5869e68dba67fc648a9ee2398bb5284d9e94d513e84bb85b1b010048e" + sha256: cf63ff58e011729b042d34f93725f05c10d634617b049193485c687ebf714598 url: "https://pub.dev" source: hosted - version: "10.4.5" + version: "10.4.7" firebase_database_platform_interface: dependency: transitive description: name: firebase_database_platform_interface - sha256: "9d5f25225a17200d59470da1d5c0646c75aaa73c5df6f920e36bae1c60e0b83d" + sha256: "6f8b7e85e9a9d0afba5c3beac87843bcdd953ab12483d5a01c92764dc9ea34a3" url: "https://pub.dev" source: hosted - version: "0.2.5+21" + version: "0.2.5+23" firebase_database_web: dependency: transitive description: name: firebase_database_web - sha256: "751c047a362fad3d2fea60b1d97bbb2f4515097b641a5b38ab5aa5ba0e1afd26" + sha256: "56f80bce191257bff17e98a39784bbdfc9278a681e8fed32efdaa3d9b5ba5bd0" url: "https://pub.dev" source: hosted - version: "0.2.3+21" + version: "0.2.3+23" firebase_storage: dependency: "direct main" description: name: firebase_storage - sha256: b87029b506972987a827feaf296c21cd0fe1bb69c2595be1672253ba5205573e + sha256: "261763ebb2722abb8d3c702f467a9efb1f4ac8978a94c03850b80cfa3009c400" url: "https://pub.dev" source: hosted - version: "11.6.5" + version: "11.6.7" firebase_storage_platform_interface: dependency: transitive description: name: firebase_storage_platform_interface - sha256: "180822103b164d0d597131f2fb658cd1c438148abafc6f2256b565227303ba35" + sha256: "41e5832d930f668a62aa4fd3dc9778af3a301297170f549b882dad4c5b7d3bc7" url: "https://pub.dev" source: hosted - version: "5.1.8" + version: "5.1.10" firebase_storage_web: dependency: transitive description: name: firebase_storage_web - sha256: "9523c455521b0497ee436be8614aab52f719309d16147a5b11091e44e4c5aa0a" + sha256: "5eac3e415e01384e8a5fc92510db61fee3001d7008fa0209ff2290bcd051b6c7" url: "https://pub.dev" source: hosted - version: "3.6.22" + version: "3.7.1" 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: @@ -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,10 +673,10 @@ packages: dependency: "direct main" description: name: google_fonts - sha256: f0b8d115a13ecf827013ec9fc883390ccc0e87a96ed5347a3114cac177ef18e8 + sha256: "5b1726fee554d1cc9db1baef8061b126567ff0a1140a03ed7de936e62f2ab98b" url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.2.0" google_identity_services_web: dependency: transitive 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: f2b3af0ba52ff59439f18962fca71db860f09507a81da929fc0e719270b35db2 url: "https://pub.dev" source: hosted - version: "0.12.3+2" + version: "0.12.3+3" googleapis: dependency: "direct main" description: name: googleapis - sha256: "8a8c311723162af077ca73f94b823b97ff68770d966e29614d20baca9fdb490a" + sha256: "4e101034eeec5bc949046732d4cea322a8c7a4f69d112c6376912c94705be6f2" url: "https://pub.dev" source: hosted - version: "12.0.0" + version: "13.0.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,10 +753,10 @@ 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: @@ -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: @@ -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,10 +1406,10 @@ 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: @@ -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: @@ -1494,10 +1494,10 @@ packages: dependency: transitive description: name: web_socket_channel - sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + sha256: "939ab60734a4f8fa95feacb55804fa278de28bdeef38e616dc08e44a84adea23" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.3" win32: 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.0" 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