diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml index 5c6e4f05f..bced1fac9 100644 --- a/.github/workflows/flutter-ci.yml +++ b/.github/workflows/flutter-ci.yml @@ -51,13 +51,13 @@ jobs: disable-animations: false script: echo "Generated AVD snapshot for caching." - - name: Setup Flutter 3.7.x + - name: Setup Flutter 3.10.x uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # v2 with: - flutter-version: "3.7.x" + flutter-version: "3.10.x" channel: "stable" cache: true - cache-key: flutter-3.7.x + cache-key: flutter-3.10.x cache-path: ${{ runner.tool_cache }}/flutter - name: Create .env file diff --git a/.github/workflows/flutter-deploy.yml b/.github/workflows/flutter-deploy.yml index 953347aab..57cf61830 100644 --- a/.github/workflows/flutter-deploy.yml +++ b/.github/workflows/flutter-deploy.yml @@ -47,13 +47,13 @@ jobs: disable-animations: false script: echo "Generated AVD snapshot for caching." - - name: Setup Flutter 3.7.x + - name: Setup Flutter 3.10.x uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # v2 with: - flutter-version: "3.7.x" + flutter-version: "3.10.x" channel: "stable" cache: true - cache-key: flutter-3.7.x + cache-key: flutter-3.10.x cache-path: ${{ runner.tool_cache }}/flutter - name: Create .env file diff --git a/.github/workflows/mobile-curriculum-e2e.yml b/.github/workflows/mobile-curriculum-e2e.yml index 2c8a7f7ca..fac5af2c5 100644 --- a/.github/workflows/mobile-curriculum-e2e.yml +++ b/.github/workflows/mobile-curriculum-e2e.yml @@ -6,7 +6,7 @@ on: branches: - main paths: - - 'mobile-app/**' + - "mobile-app/**" push: branches: - main @@ -39,13 +39,13 @@ jobs: with: node-version: 18.x - - name: Setup Flutter 3.7.x + - name: Setup Flutter 3.10.x uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # v2 with: - flutter-version: '3.7.x' - channel: 'stable' + flutter-version: "3.10.x" + channel: "stable" cache: true - cache-key: flutter-3.7.x + cache-key: flutter-3.10.x cache-path: ${{ runner.tool_cache }}/flutter - name: Set freeCodeCamp Environment Variables diff --git a/mobile-app/android/app/build.gradle b/mobile-app/android/app/build.gradle index d433c940a..e7ca434f6 100644 --- a/mobile-app/android/app/build.gradle +++ b/mobile-app/android/app/build.gradle @@ -35,7 +35,8 @@ if (keystorePropertiesFile.exists()) { } android { - compileSdkVersion 33 + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion sourceSets { main.java.srcDirs += 'src/main/kotlin' @@ -45,7 +46,7 @@ android { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "org.freecodecamp" minSdkVersion 21 - targetSdkVersion 31 + targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName multiDexEnabled true diff --git a/mobile-app/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/mobile-app/android/app/src/main/res/mipmap-hdpi/launcher_icon.png index 9f4ae88d5..ff678f6f7 100644 Binary files a/mobile-app/android/app/src/main/res/mipmap-hdpi/launcher_icon.png and b/mobile-app/android/app/src/main/res/mipmap-hdpi/launcher_icon.png differ diff --git a/mobile-app/android/app/src/main/res/mipmap-mdpi/launcher_icon.png b/mobile-app/android/app/src/main/res/mipmap-mdpi/launcher_icon.png index 11e839a19..c72373387 100644 Binary files a/mobile-app/android/app/src/main/res/mipmap-mdpi/launcher_icon.png and b/mobile-app/android/app/src/main/res/mipmap-mdpi/launcher_icon.png differ diff --git a/mobile-app/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/mobile-app/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png index 4c798020d..0f84a891f 100644 Binary files a/mobile-app/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png and b/mobile-app/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png differ diff --git a/mobile-app/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/mobile-app/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png index d2bbbfb4d..db4fba17d 100644 Binary files a/mobile-app/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png and b/mobile-app/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png differ diff --git a/mobile-app/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/mobile-app/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png index c8db7bd6e..b6eb69ffb 100644 Binary files a/mobile-app/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png and b/mobile-app/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png differ diff --git a/mobile-app/android/build.gradle b/mobile-app/android/build.gradle index fdf78ba06..1cb5f964e 100644 --- a/mobile-app/android/build.gradle +++ b/mobile-app/android/build.gradle @@ -30,6 +30,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/mobile-app/flutter_launcher_icons.yaml b/mobile-app/flutter_launcher_icons.yaml new file mode 100644 index 000000000..dbaf51486 --- /dev/null +++ b/mobile-app/flutter_launcher_icons.yaml @@ -0,0 +1,9 @@ +# flutter pub run flutter_launcher_icons +flutter_launcher_icons: + image_path: "assets/images/app-logo.png" + + android: "launcher_icon" + min_sdk_android: 21 # android min sdk min:16, default 21 + + ios: true + remove_alpha_channel_ios: true diff --git a/mobile-app/ios/Podfile.lock b/mobile-app/ios/Podfile.lock index d456f9b7e..b19859181 100644 --- a/mobile-app/ios/Podfile.lock +++ b/mobile-app/ios/Podfile.lock @@ -6,34 +6,34 @@ PODS: - Auth0 (2.3.2): - JWTDecode (~> 3.0) - SimpleKeychain (~> 1.0) - - auth0_flutter (1.2.0): + - auth0_flutter (1.2.1): - Auth0 (~> 2.3) - Flutter - device_info_plus (0.0.1): - Flutter - - Firebase/Analytics (10.9.0): + - Firebase/Analytics (10.12.0): - Firebase/Core - - Firebase/Core (10.9.0): + - Firebase/Core (10.12.0): - Firebase/CoreOnly - - FirebaseAnalytics (~> 10.9.0) - - Firebase/CoreOnly (10.9.0): - - FirebaseCore (= 10.9.0) - - Firebase/Crashlytics (10.9.0): + - FirebaseAnalytics (~> 10.12.0) + - Firebase/CoreOnly (10.12.0): + - FirebaseCore (= 10.12.0) + - Firebase/Crashlytics (10.12.0): - Firebase/CoreOnly - - FirebaseCrashlytics (~> 10.9.0) - - firebase_analytics (10.4.2): - - Firebase/Analytics (= 10.9.0) + - FirebaseCrashlytics (~> 10.12.0) + - firebase_analytics (10.4.4): + - Firebase/Analytics (= 10.12.0) - firebase_core - Flutter - - firebase_core (2.13.1): - - Firebase/CoreOnly (= 10.9.0) + - firebase_core (2.15.0): + - Firebase/CoreOnly (= 10.12.0) - Flutter - - firebase_crashlytics (3.3.2): - - Firebase/Crashlytics (= 10.9.0) + - firebase_crashlytics (3.3.4): + - Firebase/Crashlytics (= 10.12.0) - firebase_core - Flutter - - FirebaseAnalytics (10.9.0): - - FirebaseAnalytics/AdIdSupport (= 10.9.0) + - FirebaseAnalytics (10.12.0): + - FirebaseAnalytics/AdIdSupport (= 10.12.0) - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) @@ -41,24 +41,24 @@ PODS: - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseAnalytics/AdIdSupport (10.9.0): + - FirebaseAnalytics/AdIdSupport (10.12.0): - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - - GoogleAppMeasurement (= 10.9.0) + - GoogleAppMeasurement (= 10.12.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseCore (10.9.0): + - FirebaseCore (10.12.0): - FirebaseCoreInternal (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/Logger (~> 7.8) - - FirebaseCoreExtension (10.10.0): + - FirebaseCoreExtension (10.12.0): - FirebaseCore (~> 10.0) - - FirebaseCoreInternal (10.10.0): + - FirebaseCoreInternal (10.12.0): - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseCrashlytics (10.9.0): + - FirebaseCrashlytics (10.12.0): - FirebaseCore (~> 10.5) - FirebaseInstallations (~> 10.0) - FirebaseSessions (~> 10.5) @@ -66,12 +66,12 @@ PODS: - GoogleUtilities/Environment (~> 7.8) - nanopb (< 2.30910.0, >= 2.30908.0) - PromisesObjC (~> 2.1) - - FirebaseInstallations (10.10.0): + - FirebaseInstallations (10.12.0): - FirebaseCore (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - - FirebaseSessions (10.10.0): + - FirebaseSessions (10.12.0): - FirebaseCore (~> 10.5) - FirebaseCoreExtension (~> 10.0) - FirebaseInstallations (~> 10.0) @@ -98,21 +98,21 @@ PODS: - FMDB (2.7.5): - FMDB/standard (= 2.7.5) - FMDB/standard (2.7.5) - - GoogleAppMeasurement (10.9.0): - - GoogleAppMeasurement/AdIdSupport (= 10.9.0) + - GoogleAppMeasurement (10.12.0): + - GoogleAppMeasurement/AdIdSupport (= 10.12.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/AdIdSupport (10.9.0): - - GoogleAppMeasurement/WithoutAdIdSupport (= 10.9.0) + - GoogleAppMeasurement/AdIdSupport (10.12.0): + - GoogleAppMeasurement/WithoutAdIdSupport (= 10.12.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/WithoutAdIdSupport (10.9.0): + - GoogleAppMeasurement/WithoutAdIdSupport (10.12.0): - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) @@ -122,24 +122,24 @@ PODS: - GoogleUtilities/Environment (~> 7.7) - nanopb (< 2.30910.0, >= 2.30908.0) - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/AppDelegateSwizzler (7.11.1): + - GoogleUtilities/AppDelegateSwizzler (7.11.4): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (7.11.1): + - GoogleUtilities/Environment (7.11.4): - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.11.1): + - GoogleUtilities/Logger (7.11.4): - GoogleUtilities/Environment - - GoogleUtilities/MethodSwizzler (7.11.1): + - GoogleUtilities/MethodSwizzler (7.11.4): - GoogleUtilities/Logger - - GoogleUtilities/Network (7.11.1): + - GoogleUtilities/Network (7.11.4): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.11.1)" - - GoogleUtilities/Reachability (7.11.1): + - "GoogleUtilities/NSData+zlib (7.11.4)" + - GoogleUtilities/Reachability (7.11.4): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (7.11.1): + - GoogleUtilities/UserDefaults (7.11.4): - GoogleUtilities/Logger - integration_test (0.0.1): - Flutter @@ -157,9 +157,9 @@ PODS: - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS - - PromisesObjC (2.2.0) - - PromisesSwift (2.2.0): - - PromisesObjC (= 2.2.0) + - PromisesObjC (2.3.1) + - PromisesSwift (2.3.1): + - PromisesObjC (= 2.3.1) - quick_actions_ios (0.0.1): - Flutter - share_plus (0.0.1): @@ -173,6 +173,8 @@ PODS: - FMDB (>= 2.7.5) - url_launcher_ios (0.0.1): - Flutter + - webview_flutter_wkwebview (0.0.1): + - Flutter DEPENDENCIES: - audio_service (from `.symlinks/plugins/audio_service/ios`) @@ -191,12 +193,13 @@ DEPENDENCIES: - integration_test (from `.symlinks/plugins/integration_test/ios`) - just_audio (from `.symlinks/plugins/just_audio/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - quick_actions_ios (from `.symlinks/plugins/quick_actions_ios/ios`) - share_plus (from `.symlinks/plugins/share_plus/ios`) - - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - sqflite (from `.symlinks/plugins/sqflite/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) + - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`) SPEC REPOS: trunk: @@ -254,35 +257,37 @@ EXTERNAL SOURCES: package_info_plus: :path: ".symlinks/plugins/package_info_plus/ios" path_provider_foundation: - :path: ".symlinks/plugins/path_provider_foundation/ios" + :path: ".symlinks/plugins/path_provider_foundation/darwin" quick_actions_ios: :path: ".symlinks/plugins/quick_actions_ios/ios" share_plus: :path: ".symlinks/plugins/share_plus/ios" shared_preferences_foundation: - :path: ".symlinks/plugins/shared_preferences_foundation/ios" + :path: ".symlinks/plugins/shared_preferences_foundation/darwin" sqflite: :path: ".symlinks/plugins/sqflite/ios" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" + webview_flutter_wkwebview: + :path: ".symlinks/plugins/webview_flutter_wkwebview/ios" SPEC CHECKSUMS: audio_service: f509d65da41b9521a61f1c404dd58651f265a567 audio_session: 4f3e461722055d21515cf3261b64c973c062f345 Auth0: 64da28fdc5cd499aa516dc4bfd0ace8efae2c1da - auth0_flutter: f1b79eed744164f08015d960c49534225f0bdf82 - device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed - Firebase: bd152f0f3d278c4060c5c71359db08ebcfd5a3e2 - firebase_analytics: 48ed4a230abf9f585f7e7b477791effe96f5a791 - firebase_core: ce64b0941c6d87c6ef5022ae9116a158236c8c94 - firebase_crashlytics: 9b80d1944507cc07fa1c4455797f7d2eb7c8873f - FirebaseAnalytics: 5ea0db4893825e7b0149d575352cd838236313dc - FirebaseCore: b68d3616526ec02e4d155166bbafb8eca64af557 - FirebaseCoreExtension: 8d93ebbf6838a874b4ed82a564c9d6705f8365dd - FirebaseCoreInternal: 971029061d326000d65bfdc21f5502c75c8b0893 - FirebaseCrashlytics: b60329455285aff853e54139d8ddbfe1e5f2b9f9 - FirebaseInstallations: 52153982b057d3afcb4e1fbb3eb0b6d00611e681 - FirebaseSessions: 5f9e62cd4096e24d2011cbd845b0efceffaee1ec + auth0_flutter: ce053409c0a080736e341c3b94084c96cc8d4136 + device_info_plus: 7545d84d8d1b896cb16a4ff98c19f07ec4b298ea + Firebase: 07150e75d142fb9399f6777fa56a187b17f833a0 + firebase_analytics: 3ff822ee2e90f95b61f0da300df20b378d380fbb + firebase_core: e477125798fc37cd4ab43ca6a8536bf7e0929c00 + firebase_crashlytics: 6043ce85800f96e53f15ee5051f9cfad10cce73d + FirebaseAnalytics: 0270389efbe3022b54ec4588862dabec3477ee98 + FirebaseCore: f86a1394906b97ac445ae49c92552a9425831bed + FirebaseCoreExtension: 0ce5ac36042001cfa233ce7bfa28e5c313cf80f4 + FirebaseCoreInternal: 950500ad8a08963657f6d8c67b579740c06d6aa1 + FirebaseCrashlytics: c4d111b7430c49744c74bcc6346ea00868661ac8 + FirebaseInstallations: 7b99ef103f013624444c614397038219c45f8e63 + FirebaseSessions: a4ee211eeb31a2224cd8d9d4e30a0fccde9aa00c fk_user_agent: 1f47ec39291e8372b1d692b50084b0d54103c545 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_custom_tabs: 7a10a08686955cb748e5d26e0ae586d30689bf89 @@ -290,24 +295,25 @@ SPEC CHECKSUMS: flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a - GoogleAppMeasurement: 373bcbead1bb6a85be7a64d5d8f96284b762ea9c + GoogleAppMeasurement: 2d800fab85e7848b1e66a6f8ce5bca06c5aad892 GoogleDataTransport: f0308f5905a745f94fb91fea9c6cbaf3831cb1bd - GoogleUtilities: 9aa0ad5a7bc171f8bae016300bfcfa3fb8425749 - integration_test: a1e7d09bd98eca2fc37aefd79d4f41ad37bdbbe5 + GoogleUtilities: c63691989bf362ba0505507da00eeb326192e83e + integration_test: 13825b8a9334a850581300559b8839134b124670 just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa JWTDecode: 2eed97c2fa46ccaf3049a787004eedf0be474a87 nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c - package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e - path_provider_foundation: eaf5b3e458fc0e5fbb9940fb09980e853fe058b8 - PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef - PromisesSwift: cf9eb58666a43bbe007302226e510b16c1e10959 + package_info_plus: fd030dabf36271f146f1f3beacd48f564b0f17f7 + path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 + PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4 + PromisesSwift: 28dca69a9c40779916ac2d6985a0192a5cb4a265 quick_actions_ios: 9e80dcfadfbc5d47d9cf8f47bcf428b11cf383d4 - share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 - shared_preferences_foundation: e2dae3258e06f44cc55f49d42024fd8dd03c590c + share_plus: 599aa54e4ea31d4b4c0e9c911bcc26c55e791028 + shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 SimpleKeychain: 130211269f88f038d7dc5254cf0b1b9ce978c398 sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4 + webview_flutter_wkwebview: 2e2d318f21a5e036e2c3f26171342e95908bd60a PODFILE CHECKSUM: a74b8704f768957a23e2d804b55390ecc9fffc9d diff --git a/mobile-app/ios/Runner.xcodeproj/project.pbxproj b/mobile-app/ios/Runner.xcodeproj/project.pbxproj index 2e8064183..66ff2ace8 100644 --- a/mobile-app/ios/Runner.xcodeproj/project.pbxproj +++ b/mobile-app/ios/Runner.xcodeproj/project.pbxproj @@ -250,6 +250,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( diff --git a/mobile-app/ios/Runner/AppDelegate.swift b/mobile-app/ios/Runner/AppDelegate.swift index 45fa03d26..44f2c4f0d 100644 --- a/mobile-app/ios/Runner/AppDelegate.swift +++ b/mobile-app/ios/Runner/AppDelegate.swift @@ -1,6 +1,5 @@ import UIKit import Flutter -import integration_test @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { @@ -13,8 +12,6 @@ import integration_test } GeneratedPluginRegistrant.register(with: self) - let controller : FlutterViewController = window?.rootViewController as! FlutterViewController - IntegrationTestPlugin.instance().setupChannels(controller.binaryMessenger) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } } diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index 4bc2b19e9..8874360d1 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png index 3a566eb7d..95bcd1ca0 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png index 8f53a9b9c..0074ceb51 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png index 3c46e445d..0f644caf5 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png index 53d8f4a50..ab9fae615 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png index 65b3d5317..aa2ed99d5 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png index f4bb94fc9..7f97aa8d6 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 8f53a9b9c..0074ceb51 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png index 34a65e385..2dd64aec7 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png index 663f111ad..80669c1d8 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png index 117a87e5e..683065be1 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png index 48e75229f..93a49efef 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png index a769b3099..e8f49c534 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png index da2795f6d..b09362390 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index 663f111ad..80669c1d8 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index de457410a..f0d545aa3 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png index 9f4ae88d5..ff678f6f7 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png index d2bbbfb4d..db4fba17d 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index a1da39204..33224ec0f 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png index b5ce0c1db..e8835f79e 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index c06da7b6e..f68504020 100644 Binary files a/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and b/mobile-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/mobile-app/lib/service/authentication/authentication_service.dart b/mobile-app/lib/service/authentication/authentication_service.dart index b663781f4..f585aa455 100644 --- a/mobile-app/lib/service/authentication/authentication_service.dart +++ b/mobile-app/lib/service/authentication/authentication_service.dart @@ -192,7 +192,8 @@ class AuthenticationService { Navigator.pop(context); return false; - } on DioError { + } on DioException catch (e) { + log(e.toString()); logout(); Navigator.pop(context); return false; @@ -213,7 +214,7 @@ class AuthenticationService { extractCookies(res); await writeTokensToStorage(); await fetchUser(); - } on DioError catch (e) { + } on DioException catch (e) { Navigator.pop(context); if (e.response != null) { showDialog( @@ -338,7 +339,7 @@ class AuthenticationService { isLoggedInStream.sink.add(false); await logout(); } - } on DioError { + } on DioException { staticIsloggedIn = false; isLoggedInStream.sink.add(false); await logout(); diff --git a/mobile-app/lib/service/podcast/notification_service.dart b/mobile-app/lib/service/podcast/notification_service.dart index 37be5af1d..d82441eb3 100644 --- a/mobile-app/lib/service/podcast/notification_service.dart +++ b/mobile-app/lib/service/podcast/notification_service.dart @@ -18,9 +18,8 @@ class NotificationService { Future init() async { const AndroidInitializationSettings androidInitializationSettings = AndroidInitializationSettings('@mipmap/launcher_icon'); - - final IOSInitializationSettings iosInitializationSettings = - IOSInitializationSettings(onDidReceiveLocalNotification: ( + final DarwinInitializationSettings iosInitializationSettings = + DarwinInitializationSettings(onDidReceiveLocalNotification: ( int id, String? title, String? body, @@ -47,13 +46,10 @@ class NotificationService { channelDescription: 'Channel description', priority: Priority.high, importance: Importance.max, - // autoCancel: true, ); - const IOSNotificationDetails iosNotificationDetails = - IOSNotificationDetails( - threadIdentifier: 'fcc-ios-notif-channel', - ); + const DarwinNotificationDetails iosNotificationDetails = + DarwinNotificationDetails(threadIdentifier: 'fcc-ios-notif-channel'); const NotificationDetails platformChannelSpecifics = NotificationDetails( android: androidNotificationDetails, diff --git a/mobile-app/lib/ui/views/learn/challenge/templates/python/python_view.dart b/mobile-app/lib/ui/views/learn/challenge/templates/python/python_view.dart index e6a0d1f5a..7a987bdfd 100644 --- a/mobile-app/lib/ui/views/learn/challenge/templates/python/python_view.dart +++ b/mobile-app/lib/ui/views/learn/challenge/templates/python/python_view.dart @@ -28,12 +28,13 @@ class PythonView extends StatelessWidget { return ViewModelBuilder.reactive( viewModelBuilder: () => PythonViewModel(), builder: (context, model, child) { - YoutubePlayerController controller = YoutubePlayerController( - initialVideoId: challenge.videoId!, + YoutubePlayerController controller = + YoutubePlayerController.fromVideoId( + videoId: challenge.videoId!, + autoPlay: false, params: const YoutubePlayerParams( showControls: true, showFullscreenButton: true, - autoPlay: false, strictRelatedVideos: true, ), ); @@ -71,7 +72,7 @@ class PythonView extends StatelessWidget { padding: const EdgeInsets.symmetric( horizontal: 16, ), - child: YoutubePlayerIFrame( + child: YoutubePlayer( controller: controller, ), ), diff --git a/mobile-app/lib/ui/views/learn/landing/landing_view.dart b/mobile-app/lib/ui/views/learn/landing/landing_view.dart index 3175eddde..487be122e 100644 --- a/mobile-app/lib/ui/views/learn/landing/landing_view.dart +++ b/mobile-app/lib/ui/views/learn/landing/landing_view.dart @@ -107,10 +107,10 @@ class LearnLandingView extends StatelessWidget { vertical: MediaQuery.of(context).size.width * 0.5, horizontal: 8, ), - child: Column( + child: const Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, - children: const [ + children: [ Text( 'You are offline, please try again in a moment.', style: TextStyle( diff --git a/mobile-app/lib/ui/views/news/html_handler/html_handler.dart b/mobile-app/lib/ui/views/news/html_handler/html_handler.dart index 911237fd8..48cea6663 100644 --- a/mobile-app/lib/ui/views/news/html_handler/html_handler.dart +++ b/mobile-app/lib/ui/views/news/html_handler/html_handler.dart @@ -225,16 +225,17 @@ class HTMLParser { if (isVideo.hasMatch(videoUrl ?? '')) { var videoId = videoUrl?.split('/').last.split('?').first; - YoutubePlayerController controller = YoutubePlayerController( - initialVideoId: videoId!, - params: const YoutubePlayerParams( - showControls: true, - showFullscreenButton: true, + YoutubePlayerController controller = + YoutubePlayerController.fromVideoId( + videoId: videoId!, autoPlay: false, - ), - ); + params: const YoutubePlayerParams( + showControls: true, + showFullscreenButton: true, + ), + ); - return YoutubePlayerIFrame( + return YoutubePlayer( controller: controller, ); } diff --git a/mobile-app/lib/ui/views/podcast/podcast-list/podcast_list_view.dart b/mobile-app/lib/ui/views/podcast/podcast-list/podcast_list_view.dart index cb8164fa2..b304096b9 100644 --- a/mobile-app/lib/ui/views/podcast/podcast-list/podcast_list_view.dart +++ b/mobile-app/lib/ui/views/podcast/podcast-list/podcast_list_view.dart @@ -91,10 +91,10 @@ class PodcastListViewBuilder extends StatelessWidget { ); } if (snapshot.data!.isEmpty && isDownloadView) { - return Center( + return const Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, - children: const [ + children: [ Icon( Icons.arrow_circle_down_sharp, color: Colors.white, diff --git a/mobile-app/lib/ui/widgets/drawer_widget/drawer_button.dart b/mobile-app/lib/ui/widgets/drawer_widget/drawer_tile.dart similarity index 85% rename from mobile-app/lib/ui/widgets/drawer_widget/drawer_button.dart rename to mobile-app/lib/ui/widgets/drawer_widget/drawer_tile.dart index ff64c6c7a..2e759e9cd 100644 --- a/mobile-app/lib/ui/widgets/drawer_widget/drawer_button.dart +++ b/mobile-app/lib/ui/widgets/drawer_widget/drawer_tile.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -class DrawerButton extends StatefulWidget { - const DrawerButton({ +class DrawerTile extends StatefulWidget { + const DrawerTile({ Key? key, this.textColor = Colors.white, required this.component, @@ -14,10 +14,10 @@ class DrawerButton extends StatefulWidget { final Function route; final Color? textColor; @override - State createState() => _DrawerButtonState(); + State createState() => _DrawerTileState(); } -class _DrawerButtonState extends State { +class _DrawerTileState extends State { @override Widget build(BuildContext context) { return Padding( diff --git a/mobile-app/lib/ui/widgets/drawer_widget/drawer_widget_view.dart b/mobile-app/lib/ui/widgets/drawer_widget/drawer_widget_view.dart index 5b2d14575..d924d79d2 100644 --- a/mobile-app/lib/ui/widgets/drawer_widget/drawer_widget_view.dart +++ b/mobile-app/lib/ui/widgets/drawer_widget/drawer_widget_view.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_scroll_shadow/flutter_scroll_shadow.dart'; import 'package:freecodecamp/models/main/user_model.dart'; -import 'package:freecodecamp/ui/widgets/drawer_widget/drawer_button.dart'; +import 'package:freecodecamp/ui/widgets/drawer_widget/drawer_tile.dart'; import 'package:freecodecamp/ui/widgets/drawer_widget/drawer_web_buttton.dart'; import 'package:freecodecamp/ui/widgets/drawer_widget/drawer_widget_viewmodel.dart'; import 'package:stacked/stacked.dart'; @@ -65,7 +65,7 @@ class DrawerWidgetView extends StatelessWidget { }, ), buildDivider(), - DrawerButton( + DrawerTile( key: const Key('learn'), component: 'LEARN', icon: '', @@ -73,7 +73,7 @@ class DrawerWidgetView extends StatelessWidget { model.routeComponent('LEARN', context); }, ), - DrawerButton( + DrawerTile( key: const Key('news'), component: 'TUTORIALS', icon: Icons.forum_outlined, @@ -81,7 +81,7 @@ class DrawerWidgetView extends StatelessWidget { model.routeComponent('NEWS', context); }, ), - DrawerButton( + DrawerTile( key: const Key('podcasts'), component: 'PODCASTS', icon: Icons.podcasts_outlined, @@ -90,7 +90,7 @@ class DrawerWidgetView extends StatelessWidget { }, ), if (!Platform.isIOS) - DrawerButton( + DrawerTile( key: const Key('code-radio'), component: 'CODE RADIO', icon: Icons.radio, @@ -105,7 +105,7 @@ class DrawerWidgetView extends StatelessWidget { url: 'https://www.freecodecamp.org/donate/', icon: Icons.favorite, ), - DrawerButton( + DrawerTile( key: const Key('settings'), component: 'SETTINGS', icon: Icons.settings, @@ -114,7 +114,7 @@ class DrawerWidgetView extends StatelessWidget { }, ), buildDivider(), - DrawerButton( + DrawerTile( key: const Key('auth'), component: model.loggedIn ? 'LOG OUT' : 'LOGIN', icon: model.loggedIn ? Icons.logout : Icons.login, diff --git a/mobile-app/pubspec.lock b/mobile-app/pubspec.lock index 24472d744..da8ff3f18 100644 --- a/mobile-app/pubspec.lock +++ b/mobile-app/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: "9ebe81588e666f7e2b21309f2b5653bd9642d7f27fd0a6894278d2ff40cb9481" + sha256: "5dce45a06d386358334eb1689108db6455d90ceb0d75848d5f4819283d4ee2b8" url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.3.4" algolia: dependency: "direct main" description: @@ -37,26 +37,26 @@ packages: dependency: transitive description: name: archive - sha256: "80e5141fafcb3361653ce308776cfd7d45e6e9fbb429e14eec571382c0c5fecb" + sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" url: "https://pub.dev" source: hosted - version: "3.3.2" + version: "3.3.7" args: dependency: transitive description: name: args - sha256: c372bb384f273f0c2a8aaaa226dad84dc27c8519a691b888725dec59518ad53a + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" async: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" audio_service: dependency: "direct main" description: @@ -85,26 +85,26 @@ packages: dependency: transitive description: name: audio_session - sha256: "655343841a723646f74932215c5785ef7156b76d2de4b99bcd3205476f08dc61" + sha256: "8a2bc5e30520e18f3fb0e366793d78057fb64cd5287862c76af0c8771f2a52ad" url: "https://pub.dev" source: hosted - version: "0.1.15" + version: "0.1.16" auth0_flutter: dependency: "direct main" description: name: auth0_flutter - sha256: "0d01190db04223e20e7aaf7c5512af722b67dda5f747df42d8120e5b4c83ded6" + sha256: "4387224bb3e38a2a90d07b3d22432ffbbdc55d1bc47e99ace96e123a24cd928f" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" auth0_flutter_platform_interface: dependency: transitive description: name: auth0_flutter_platform_interface - sha256: e5cb3e9e6569b5899b0e103a4b4a804f4f78dcdcdd53b1b8f3bbd48b02507aa5 + sha256: fcaf244292fe0fae1f75c66d1211b4adcfe8d5df68d6b36b0fb70379d92a1929 url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" boolean_selector: dependency: transitive description: @@ -117,10 +117,10 @@ packages: dependency: transitive description: name: build - sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.1" build_config: dependency: transitive description: @@ -133,34 +133,34 @@ packages: dependency: transitive description: name: build_daemon - sha256: "757153e5d9cd88253cb13f28c2fb55a537dc31fefd98137549895b5beb7c6169" + sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "4.0.0" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: db49b8609ef8c81cca2b310618c3017c00f03a92af44c04d310b907b2d692d95 + sha256: "6c4dd11d05d056e76320b828a1db0fc01ccd376922526f8e9d6c796a5adbac20" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" build_runner: dependency: "direct dev" description: name: build_runner - sha256: b0a8a7b8a76c493e85f1b84bffa0588859a06197863dba8c9036b15581fd9727 + sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.4.6" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "0671ad4162ed510b70d0eb4ad6354c249f8429cab4ae7a4cec86bbc2886eb76e" + sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41" url: "https://pub.dev" source: hosted - version: "7.2.7+1" + version: "7.2.10" built_collection: dependency: transitive description: @@ -173,10 +173,10 @@ packages: dependency: transitive description: name: built_value - sha256: "7dd62d9faf105c434f3d829bbe9c4be02ec67f5ed94832222116122df67c5452" + sha256: "598a2a682e2a7a90f08ba39c0aaa9374c5112340f0a2e275f61b59389543d166" url: "https://pub.dev" source: hosted - version: "8.6.0" + version: "8.6.1" cached_network_image: dependency: "direct main" description: @@ -205,10 +205,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" checked_yaml: dependency: transitive description: @@ -245,10 +245,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.17.1" convert: dependency: transitive description: @@ -269,10 +269,10 @@ packages: dependency: transitive description: name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" csslib: dependency: transitive description: @@ -285,18 +285,18 @@ packages: dependency: "direct main" description: name: curl_logger_dio_interceptor - sha256: "10f8137ced85d85a7e81843a822e6eba212157ae765abacd6bed028f334ef135" + sha256: f20d89187a321d2150e1412bca30ebf4d89130bafc648ce21bd4f1ef4062b214 url: "https://pub.dev" source: hosted - version: "0.0.3" + version: "1.0.0" dart_style: dependency: transitive description: name: dart_style - sha256: f4f1f73ab3fd2afcbcca165ee601fe980d966af6a21b5970c6c9376955c528ad + sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" dbus: dependency: transitive description: @@ -317,26 +317,26 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: "8d99246809e63d93e4e68fade79495d81f445ad735bde2b129b19c0adddcaf1a" + sha256: "86add5ef97215562d2e090535b0a16f197902b10c369c558a100e74ea06e8659" url: "https://pub.dev" source: hosted - version: "7.0.1" + version: "9.0.3" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface - sha256: "8b8b65e598b84fdb82c26cf9b3f05a6c4978636e99b0c070bae5905a24728199" + sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 url: "https://pub.dev" source: hosted - version: "6.0.1" + version: "7.0.0" dio: dependency: "direct main" description: name: dio - sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8" + sha256: "9d6445da1caf8412070670c03c39ad5b12a78cc8c2361417b220905a2bcbdd2f" url: "https://pub.dev" source: hosted - version: "4.0.6" + version: "5.3.1" fake_async: dependency: transitive description: @@ -365,34 +365,34 @@ packages: dependency: "direct main" description: name: firebase_analytics - sha256: f9d130eb6cf04b58e94358053aba3aebe546dca541e9ac5f076f8a7bc1e5c21e + sha256: d7494294bdb56a58ab6c4cfef377693835c43fa3610707346b98892fd7c4b634 url: "https://pub.dev" source: hosted - version: "10.4.2" + version: "10.4.4" firebase_analytics_platform_interface: dependency: transitive description: name: firebase_analytics_platform_interface - sha256: "16b3c49dbf26b25cd69b9dc52e8a2e21e48ee13d5b4bb563db55a82300213d1e" + sha256: bcb32ac53c494bd6deb61dcd02087418ae96d063ce522a4004974a32545c3f2b url: "https://pub.dev" source: hosted - version: "3.6.2" + version: "3.6.4" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - sha256: "8163a020ee358c64b6c4f686102d09e21f5abf361352addc68aa419fc4bc029c" + sha256: "2f7d8ab97b46a747730f580b5a38b3e5330efb54c16af48613a6f729cc5f57fa" url: "https://pub.dev" source: hosted - version: "0.5.4+2" + version: "0.5.4+4" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: e9b36b391690cf329c6fb1de220045e97c13784c303820cd33962319580a56c6 + sha256: "2e9324f719e90200dc7d3c4f5d2abc26052f9f2b995d3b6626c47a0dfe1c8192" url: "https://pub.dev" source: hosted - version: "2.13.1" + version: "2.15.0" firebase_core_platform_interface: dependency: transitive description: @@ -405,26 +405,26 @@ packages: dependency: transitive description: name: firebase_core_web - sha256: "8c0f4c87d20e2d001a5915df238c1f9c88704231f591324205f5a5d2a7740a45" + sha256: "0fd5c4b228de29b55fac38aed0d9e42514b3d3bd47675de52bf7f8fccaf922fa" url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.6.0" firebase_crashlytics: dependency: "direct main" description: name: firebase_crashlytics - sha256: "603f23a74995c193cae89a784b8da529b1e6a91c03bc63f885f36456e9e867a0" + sha256: "3607b46342537f98df18b130b6f5ab25cee6981a3a782e1a7b121d04dfea3caa" url: "https://pub.dev" source: hosted - version: "3.3.2" + version: "3.3.4" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - sha256: cefeeeb98abdb9d848581603bd1e33a2a8e6d3ed937586cb84437e606049071b + sha256: c63abeb87b18f6e6d4bf6bb3977f15d2d9281a049d93fe098e83e56dcbf7da06 url: "https://pub.dev" source: hosted - version: "3.6.2" + version: "3.6.4" fixnum: dependency: transitive description: @@ -458,10 +458,10 @@ packages: dependency: transitive description: name: flutter_cache_manager - sha256: "32cd900555219333326a2d0653aaaf8671264c29befa65bbd9856d204a4c9fb3" + sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba" url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.3.1" flutter_custom_tabs: dependency: "direct main" description: @@ -559,50 +559,50 @@ packages: dependency: transitive description: name: flutter_layout_grid - sha256: "31728ce6e9c8eaa48f8a3f928a7c308da4b74ab867aec2dc5b80b0c9f9b79d0d" + sha256: "3c03d28f884d816d6f483bdd64dd79663abfb00eea7cb27ffe98380e8357af95" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "2.0.4" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.2" flutter_local_notifications: dependency: "direct main" description: name: flutter_local_notifications - sha256: "57d0012730780fe137260dd180e072c18a73fbeeb924cdc029c18aaa0f338d64" + sha256: aea96b3b78556c97607d9bee59fcec515bc3ec1b6e905f14d72906ae055033fa url: "https://pub.dev" source: hosted - version: "9.9.1" + version: "14.1.2" flutter_local_notifications_linux: dependency: transitive description: name: flutter_local_notifications_linux - sha256: b472bfc173791b59ede323661eae20f7fff0b6908fea33dd720a6ef5d576bae8 + sha256: "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "4.0.0+1" flutter_local_notifications_platform_interface: dependency: transitive description: name: flutter_local_notifications_platform_interface - sha256: "21bceee103a66a53b30ea9daf677f990e5b9e89b62f222e60dd241cd08d63d3a" + sha256: "7cf643d6d5022f3baed0be777b0662cce5919c0a7b86e700299f22dc4ae660ef" url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "7.0.0+1" flutter_scroll_shadow: dependency: "direct main" description: name: flutter_scroll_shadow - sha256: f2e52371c7596771de56dae1c4e2b4c80749952be3f6bd4915f2e95cc484fe53 + sha256: "0e6e3c23ae81d892a2cc106156ff94c7b5c1cb1ec4c71608b4565a35aaed0d49" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" flutter_secure_storage: dependency: "direct main" description: @@ -665,18 +665,18 @@ packages: dependency: "direct main" description: name: font_awesome_flutter - sha256: "959ef4add147753f990b4a7c6cccb746d5792dbdc81b1cde99e62e7edb31b206" + sha256: "5fb789145cae1f4c3245c58b3f8fb287d055c26323879eab57a7bf0cfd1e45f3" url: "https://pub.dev" source: hosted - version: "10.4.0" + version: "10.5.0" freezed_annotation: dependency: transitive description: name: freezed_annotation - sha256: aeac15850ef1b38ee368d4c53ba9a847e900bb2c53a4db3f6881cbb3cb684338 + sha256: c3fd9336eb55a38cc1bbd79ab17573113a8deccd0ecbbf926cca3c62803b5c2d url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.1" frontend_server_client: dependency: transitive description: @@ -734,10 +734,10 @@ packages: dependency: "direct main" description: name: html - sha256: "58e3491f7bf0b6a4ea5110c0c688877460d1a6366731155c4a4580e7ded773e8" + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" url: "https://pub.dev" source: hosted - version: "0.15.3" + version: "0.15.4" http: dependency: "direct main" description: @@ -803,18 +803,18 @@ packages: dependency: "direct main" description: name: jiffy - sha256: "9d1ea8fa2955d62d3fd5f83317db4d565350deea13d7884212aa7d0ddb1c9982" + sha256: cc1d4b75016a9156c29b5d61f0c9176c3e0fb0580cc5a0e0422b5d2cab3fbfff url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.2.1" js: dependency: transitive description: name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.7" json_annotation: dependency: transitive description: @@ -851,10 +851,10 @@ packages: dependency: transitive description: name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.1.1" list_counter: dependency: transitive description: @@ -867,10 +867,10 @@ packages: dependency: transitive description: name: logger - sha256: db2ff852ed77090ba9f62d3611e4208a3d11dfa35991a81ae724c113fcb3e3f7 + sha256: "7ad7215c15420a102ec687bb320a7312afd449bac63bfb1c60d9787c27b9767f" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" logging: dependency: transitive description: @@ -883,10 +883,10 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.15" material_color_utilities: dependency: transitive description: @@ -899,10 +899,10 @@ packages: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" mime: dependency: transitive description: @@ -915,10 +915,10 @@ packages: dependency: "direct dev" description: name: mockito - sha256: dd61809f04da1838a680926de50a9e87385c1de91c6579629c3d1723946e8059 + sha256: "7d5b53bcd556c1bc7ffbe4e4d5a19c3e112b7e925e9e172dd7c6ad0630812616" url: "https://pub.dev" source: hosted - version: "5.4.0" + version: "5.4.2" nested: dependency: transitive description: @@ -955,10 +955,10 @@ packages: dependency: transitive description: name: package_info_plus - sha256: "10259b111176fba5c505b102e3a5b022b51dd97e30522e906d6922c745584745" + sha256: "6ff267fcd9d48cb61c8df74a82680e8b82e940231bb5f68356672fde0397334a" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "4.1.0" package_info_plus_platform_interface: dependency: transitive description: @@ -971,10 +971,10 @@ packages: dependency: "direct main" description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" path_provider: dependency: "direct main" description: @@ -995,10 +995,10 @@ packages: dependency: transitive description: name: path_provider_foundation - sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3" + sha256: "916731ccbdce44d545414dd9961f26ba5fbaa74bcbb55237d8e65a623a8c7297" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.2.4" path_provider_linux: dependency: transitive description: @@ -1011,42 +1011,34 @@ packages: dependency: transitive description: name: path_provider_platform_interface - sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + sha256: bced5679c7df11190e1ddc35f3222c858f328fff85c3942e46e7f5589bf9eb84 url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.1.0" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6 - url: "https://pub.dev" - source: hosted - version: "2.1.6" - pedantic: - dependency: transitive - description: - name: pedantic - sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602" + sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "2.1.7" petitparser: dependency: transitive description: name: petitparser - sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "5.4.0" phone_ide: dependency: "direct main" description: name: phone_ide - sha256: "42b994035e10a941b2248599e70ec69d10fb7fd3d9e42b0bf9cbc312f90703c1" + sha256: "995f28aee6ce5ef15ad5d8bb04a931213dade0b03fcba5009c9ccf27278bc3b9" url: "https://pub.dev" source: hosted - version: "1.2.0+1" + version: "1.2.1+1" photo_view: dependency: "direct main" description: @@ -1067,10 +1059,18 @@ packages: dependency: transitive description: name: plugin_platform_interface - sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + url: "https://pub.dev" + source: hosted + version: "3.7.3" pool: dependency: transitive description: @@ -1083,10 +1083,10 @@ packages: dependency: "direct main" description: name: pretty_dio_logger - sha256: "948f7eeb36e7aa0760b51c1a8e3331d4b21e36fabd39efca81f585ed93893544" + sha256: "00b80053063935cf9a6190da344c5373b9d0e92da4c944c878ff2fbef0ef6dc2" url: "https://pub.dev" source: hosted - version: "1.2.0-beta-1" + version: "1.3.1" process: dependency: transitive description: @@ -1131,10 +1131,10 @@ packages: dependency: transitive description: name: quick_actions_android - sha256: "1a5e0498ab531b446b2b0b762ed0997f2dbb3d580e0af9009f87f621a278778e" + sha256: e31ae2181d1bd3b07e375feda452ae573c90b65fee6d4ac64cf113c789bff8c3 url: "https://pub.dev" source: hosted - version: "1.0.6" + version: "1.0.7" quick_actions_ios: dependency: transitive description: @@ -1179,74 +1179,74 @@ packages: dependency: "direct main" description: name: share_plus - sha256: b1f15232d41e9701ab2f04181f21610c36c83a12ae426b79b4bd011c567934b1 + sha256: "6cec740fa0943a826951223e76218df002804adb588235a8910dc3d6b0654e11" url: "https://pub.dev" source: hosted - version: "6.3.4" + version: "7.1.0" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "0c6e61471bd71b04a138b8b588fa388e66d8b005e6f2deda63371c5c505a0981" + sha256: "357412af4178d8e11d14f41723f80f12caea54cf0d5cd29af9dcdab85d58aea7" url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.3.0" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: "16d3fb6b3692ad244a695c0183fca18cf81fd4b821664394a781de42386bf022" + sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.2.0" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "6478c6bbbecfe9aced34c483171e90d7c078f5883558b30ec3163cf18402c749" + sha256: fe8401ec5b6dcd739a0fe9588802069e608c3fdbfd3c3c93e546cf2f90438076 url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: e014107bb79d6d3297196f4f2d0db54b5d1f85b8ea8ff63b8e8b391a02700feb + sha256: f39696b83e844923b642ce9dd4bd31736c17e697f6731a5adf445b1274cf3cd4 url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.3.2" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "9d387433ca65717bbf1be88f4d5bb18f10508917a8fa2fb02e0fd0d7479a9afa" + sha256: "71d6806d1449b0a9d4e85e0c7a917771e672a3d5dc61149cc9fac871115018e1" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d + sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: "74083203a8eae241e0de4a0d597dbedab3b8fef5563f33cf3c12d7e93c655ca5" + sha256: "7347b194fb0bbeb4058e6a4e87ee70350b6b2b90f8ac5f8bd5b3a01548f6d33a" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.0" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "5e588e2efef56916a3b229c3bfe81e6a525665a454519ca51dbcc4236a274173" + sha256: f95e6a43162bce43c9c3405f3eb6f39e5b5d11f65fab19196cf8225e2777624d url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" shelf: dependency: transitive description: @@ -1272,18 +1272,18 @@ packages: dependency: transitive description: name: sliver_tools - sha256: ccdc502098a8bfa07b3ec582c282620031481300035584e1bb3aca296a505e8c + sha256: eae28220badfb9d0559207badcbbc9ad5331aac829a88cb0964d330d2a4636a6 url: "https://pub.dev" source: hosted - version: "0.2.10" + version: "0.2.12" source_gen: dependency: transitive description: name: source_gen - sha256: "373f96cf5a8744bc9816c1ff41cf5391bbdbe3d7a96fe98c622b6738a8a7bd33" + sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.4.0" source_span: dependency: transitive description: @@ -1296,26 +1296,26 @@ packages: dependency: "direct main" description: name: sqflite - sha256: b4d6710e1200e96845747e37338ea8a819a12b51689a3bcf31eff0003b37a0b9 + sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" url: "https://pub.dev" source: hosted - version: "2.2.8+4" + version: "2.3.0" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: e77abf6ff961d69dfef41daccbb66b51e9983cdd5cb35bf30733598057401555 + sha256: "1b92f368f44b0dee2425bb861cfa17b6f6cf3961f762ff6f941d20b33355660a" url: "https://pub.dev" source: hosted - version: "2.4.5" + version: "2.5.0" sqflite_common_ffi: dependency: "direct dev" description: name: sqflite_common_ffi - sha256: f86de82d37403af491b21920a696b19f01465b596f545d1acd4d29a0a72418ad + sha256: "8e3b8fc8bc53e1eac87a80a255a1fb88549359aafcfb58107402c69bf0b88828" url: "https://pub.dev" source: hosted - version: "2.2.5" + version: "2.3.0" sqflite_migration_service: dependency: "direct main" description: @@ -1328,10 +1328,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: "2cef47b59d310e56f8275b13734ee80a9cf4a48a43172020cb55a620121fbf66" + sha256: db65233e6b99e99b2548932f55a987961bc06d82a31a0665451fa0b4fff4c3fb url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "2.1.0" stack_trace: dependency: transitive description: @@ -1344,34 +1344,34 @@ packages: dependency: "direct main" description: name: stacked - sha256: f06ba899fd9cdddbd8c89ef8751dae2a9f2dac4c34ca6cf97d8819bc613ffe35 + sha256: "125f96248c6a33fa29a4e622e9b57ee5f222289475292dd1b9fa266cc218a2db" url: "https://pub.dev" source: hosted - version: "3.4.0" + version: "3.4.1" stacked_generator: dependency: "direct dev" description: name: stacked_generator - sha256: "14e16e9d22ac36341c5b6e5cc046c91cffe5a0e2e02d9305798a4673870bd877" + sha256: "2dfbddffc14dd1c3a5cc2e2c1ee9a7ead1171d37d646d4a8b6eec1ff3fc477b2" url: "https://pub.dev" source: hosted - version: "1.3.3" + version: "1.5.0" stacked_services: dependency: "direct main" description: name: stacked_services - sha256: "3ae9d6a805de5a2f893129acebbcef682d02fb00a945c939d38183aad8454935" + sha256: "52a518c63802bcbd6a562034eda4514093cfe22f519418489fe646e42513a11f" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.3.0" stacked_shared: dependency: transitive description: name: stacked_shared - sha256: "502f2b95d3857b0a0e7ebb77fef8c6ca8123c96fe67086ba3f6e66cbe695e703" + sha256: e6bc2921eb59b7c741c551fbb4060f22a543ea9c2d9351315fb58aa055b535f3 url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.4.0" stream_channel: dependency: transitive description: @@ -1424,18 +1424,18 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.5.1" timezone: dependency: transitive description: name: timezone - sha256: "57b35f6e8ef731f18529695bffc62f92c6189fac2e52c12d478dec1931afb66e" + sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0" url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.9.2" timing: dependency: transitive description: @@ -1448,42 +1448,42 @@ packages: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" universal_io: dependency: transitive description: name: universal_io - sha256: "06866290206d196064fd61df4c7aea1ffe9a4e7c4ccaa8fcded42dd41948005d" + sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.2" upgrader: dependency: "direct main" description: name: upgrader - sha256: "85496acfa024eb9e0c3c835d4c2358a000b21e021e9ca8835f56519ffa5e84f2" + sha256: "71cb887dbaec121b63950d4e5d368a4b9e2079f6d8fef6f358728eb7a63d9f29" url: "https://pub.dev" source: hosted - version: "6.5.0" + version: "7.1.0" url_launcher: dependency: "direct main" description: name: url_launcher - sha256: eb1e00ab44303d50dd487aab67ebc575456c146c6af44422f9c13889984c00f3 + sha256: "781bd58a1eb16069412365c98597726cd8810ae27435f04b3b4d3a470bacd61e" url: "https://pub.dev" source: hosted - version: "6.1.11" + version: "6.1.12" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: eed4e6a1164aa9794409325c3b707ff424d4d1c2a785e7db67f8bbda00e36e51 + sha256: "78cb6dea3e93148615109e58e42c35d1ffbf5ef66c44add673d0ab75f12ff3af" url: "https://pub.dev" source: hosted - version: "6.0.35" + version: "6.0.37" url_launcher_ios: dependency: transitive description: @@ -1504,34 +1504,34 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e" + sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.6" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370" + sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: "6bb1e5d7fe53daf02a8fee85352432a40b1f868a81880e99ec7440113d5cfcab" + sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4 url: "https://pub.dev" source: hosted - version: "2.0.17" + version: "2.0.18" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "254708f17f7c20a9c8c471f67d86d76d4a3f9c1591aad1e15292008aceb82771" + sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422" url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.0.7" uuid: dependency: transitive description: @@ -1560,18 +1560,18 @@ packages: dependency: transitive description: name: vm_service - sha256: e7fb6c2282f7631712b69c19d1bff82f3767eea33a2321c14fa59ad67ea391c7 + sha256: f6deed8ed625c52864792459709183da231ebf66ff0cf09e69b573227c377efe url: "https://pub.dev" source: hosted - version: "9.4.0" + version: "11.3.0" watcher: dependency: transitive description: name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.0" web_socket_channel: dependency: "direct main" description: @@ -1584,34 +1584,74 @@ packages: dependency: transitive description: name: webdriver - sha256: ef67178f0cc7e32c1494645b11639dd1335f1d18814aa8435113a92e9ef9d841 + sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: "789d52bd789373cc1e100fb634af2127e86c99cf9abde09499743270c5de8d00" + url: "https://pub.dev" + source: hosted + version: "4.2.2" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: d936a09fbfd08cb78f7329e0bbacf6158fbdfe24ffc908b22444c07d295eb193 + url: "https://pub.dev" + source: hosted + version: "3.9.2" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: "564ef378cafc1a0e29f1d76ce175ef517a0a6115875dff7b43fccbef2b0aeb30" + url: "https://pub.dev" + source: hosted + version: "2.4.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: "5fa098f28b606f699e8ca52d9e4e11edbbfef65189f5f77ae92703ba5408fd25" + url: "https://pub.dev" + source: hosted + version: "3.7.2" win32: dependency: transitive description: name: win32 - sha256: a6f0236dbda0f63aa9a25ad1ff9a9d8a4eaaa5012da0dc59d21afdb1dc361ca4 + sha256: f2add6fa510d3ae152903412227bda57d0d5a8da61d2c39c1fb022c9429a41c0 url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "5.0.6" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: e4506d60b7244251bc59df15656a3093501c37fb5af02105a944d73eb95be4c9 + url: "https://pub.dev" + source: hosted + version: "1.1.1" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86 + sha256: e0b1147eec179d3911f1f19b59206448f78195ca1d20514134e10641b7d7fbff url: "https://pub.dev" source: hosted - version: "0.2.0+3" + version: "1.0.1" xml: dependency: transitive description: name: xml - sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.3.0" yaml: dependency: transitive description: @@ -1624,10 +1664,18 @@ packages: dependency: "direct main" description: name: youtube_player_iframe - sha256: "2c680672c96c3f4ae583ed4fac8e6a1abbf736e598c814db3f0fcf8ac1b86df7" + sha256: d7aec9083430db4e5da83a3b5d7b7fcbb93cfa027d9f680ce3c7e7cd20724305 url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "4.0.4" + youtube_player_iframe_web: + dependency: transitive + description: + name: youtube_player_iframe_web + sha256: c7020816031600349b56d2729d4e8be011fcb723ff7dc2dd0cdf72096a0e5ff4 + url: "https://pub.dev" + source: hosted + version: "2.0.2" sdks: - dart: ">=2.19.0 <3.0.0" - flutter: ">=3.3.10" + dart: ">=3.0.0 <4.0.0" + flutter: ">=3.10.0" diff --git a/mobile-app/pubspec.yaml b/mobile-app/pubspec.yaml index c613d540e..54c330ece 100644 --- a/mobile-app/pubspec.yaml +++ b/mobile-app/pubspec.yaml @@ -3,46 +3,46 @@ description: freecodecamp.org app. publish_to: none version: 4.1.0+40100 environment: - sdk: ">=2.12.0 <3.0.0" + sdk: '>=3.0.0 <4.0.0' dependencies: flutter: sdk: flutter - flutter_dotenv: ^5.0.2 + flutter_dotenv: ^5.1.0 flutter_html: 3.0.0-beta.2 - algolia: ^1.0.1 - just_audio: ^0.9.7 + algolia: ^1.1.2 + just_audio: ^0.9.34 http: ^0.13.3 - path_provider: ^2.0.3 - sqflite: ^2.0.0+4 - stacked: ^3.1.0 - stacked_services: ^1.0.0 + path_provider: ^2.0.15 + sqflite: ^2.2.8+4 + stacked: ^3.4.0 + stacked_services: ^1.1.0 url_launcher: ^6.0.10 sqflite_migration_service: ^2.0.0-nullsafety.1 - dio: ^4.0.0 + dio: ^5.0.0 phone_ide: ^1.2.0 - jiffy: ^6.0.0 - shared_preferences: ^2.0.7 - font_awesome_flutter: ^10.0.0 - html: ^0.15.0 + jiffy: ^6.2.1 + shared_preferences: ^2.1.2 + font_awesome_flutter: ^10.4.0 + html: ^0.15.4 fk_user_agent: ^2.0.1 - flutter_hooks: ^0.18.0 - flutter_local_notifications: ^9.0.3 - youtube_player_iframe: ^2.2.2 + flutter_hooks: ^0.18.6 + flutter_local_notifications: ^14.1.1 + youtube_player_iframe: ^4.0.4 infinite_scroll_pagination: ^3.1.0 web_socket_channel: ^2.1.0 - cached_network_image: ^3.2.0 + cached_network_image: ^3.2.3 flutter_secure_storage: ^8.0.0 photo_view: ^0.14.0 - share_plus: ^6.3.0 + share_plus: ^7.0.2 pretty_dio_logger: ^1.2.0-beta-1 - curl_logger_dio_interceptor: ^0.0.3 + curl_logger_dio_interceptor: ^1.0.0 flutter_heatmap_calendar: ^1.0.4 intl: ^0.18.0 path: ^1.8.1 audio_service: ^0.18.4 - device_info_plus: ^7.0.0 + device_info_plus: ^9.0.0 auth0_flutter: ^1.0.1 - upgrader: ^6.5.0 + upgrader: ^7.1.0 quick_actions: ^1.0.5 firebase_core: ^2.4.0 firebase_analytics: ^10.1.0 @@ -59,7 +59,7 @@ dev_dependencies: flutter_test: sdk: flutter stacked_generator: ^1.0.0 - flutter_launcher_icons: ^0.13.0 + flutter_launcher_icons: ^0.13.1 dependency_validator: ^3.2.2 flutter_lints: ^2.0.0 sqflite_common_ffi: ^2.2.1+1 diff --git a/mobile-app/test/helpers/test_helpers.mocks.dart b/mobile-app/test/helpers/test_helpers.mocks.dart index a9c001837..f3eb7229f 100644 --- a/mobile-app/test/helpers/test_helpers.mocks.dart +++ b/mobile-app/test/helpers/test_helpers.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.0 from annotations +// Mocks generated by Mockito 5.4.2 from annotations // in freecodecamp/test/helpers/test_helpers.dart. // Do not manually edit this file. @@ -435,6 +435,7 @@ class MockDialogService extends _i1.Mock implements _i2.DialogService { _i5.Color? barrierColor = const _i5.Color(2315255808), bool? barrierDismissible = false, String? barrierLabel = r'', + bool? useSafeArea = true, dynamic customData, R? data, }) => @@ -458,6 +459,7 @@ class MockDialogService extends _i1.Mock implements _i2.DialogService { #barrierColor: barrierColor, #barrierDismissible: barrierDismissible, #barrierLabel: barrierLabel, + #useSafeArea: useSafeArea, #customData: customData, #data: data, }, diff --git a/mobile-app/test_driver/integration_test.dart b/mobile-app/test_driver/integration_test.dart index ac687914e..190fe3e83 100644 --- a/mobile-app/test_driver/integration_test.dart +++ b/mobile-app/test_driver/integration_test.dart @@ -4,7 +4,8 @@ import 'package:integration_test/integration_test_driver_extended.dart'; Future main() async { try { await integrationDriver( - onScreenshot: (String screenshotName, List screenshotBytes) async { + onScreenshot: (String screenshotName, List screenshotBytes, + [Map? _]) async { final File image = await File('screenshots/$screenshotName.png') .create(recursive: true); image.writeAsBytesSync(screenshotBytes);