diff --git a/ios/Podfile.lock b/ios/Podfile.lock index cc58850c..f5eea6c6 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -17,6 +17,9 @@ PODS: - Firebase/RemoteConfig (10.25.0): - Firebase/CoreOnly - FirebaseRemoteConfig (~> 10.25.0) + - Firebase/Storage (10.25.0): + - Firebase/CoreOnly + - FirebaseStorage (~> 10.25.0) - firebase_analytics (10.10.7): - Firebase/Analytics (= 10.25.0) - firebase_core @@ -32,6 +35,10 @@ PODS: - Firebase/RemoteConfig (= 10.25.0) - firebase_core - Flutter + - firebase_storage (11.7.7): + - Firebase/Storage (= 10.25.0) + - firebase_core + - Flutter - FirebaseABTesting (10.29.0): - FirebaseCore (~> 10.0) - FirebaseAnalytics (10.25.0): @@ -52,6 +59,8 @@ PODS: - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseAppCheckInterop (10.29.0) + - FirebaseAuthInterop (10.29.0) - FirebaseCore (10.25.0): - FirebaseCoreInternal (~> 10.0) - GoogleUtilities/Environment (~> 7.12) @@ -93,6 +102,13 @@ PODS: - nanopb (< 2.30911.0, >= 2.30908.0) - PromisesSwift (~> 2.1) - FirebaseSharedSwift (10.29.0) + - FirebaseStorage (10.25.0): + - FirebaseAppCheckInterop (~> 10.0) + - FirebaseAuthInterop (~> 10.25) + - FirebaseCore (~> 10.0) + - FirebaseCoreExtension (~> 10.0) + - GoogleUtilities/Environment (~> 7.12) + - GTMSessionFetcher/Core (< 4.0, >= 2.1) - Flutter (1.0.0) - flutter_key_value_file_storage (0.0.1): - Flutter @@ -152,6 +168,7 @@ PODS: - GoogleUtilities/UserDefaults (7.13.3): - GoogleUtilities/Logger - GoogleUtilities/Privacy + - GTMSessionFetcher/Core (3.5.0) - nanopb (2.30910.0): - nanopb/decode (= 2.30910.0) - nanopb/encode (= 2.30910.0) @@ -198,6 +215,7 @@ DEPENDENCIES: - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`) - firebase_remote_config (from `.symlinks/plugins/firebase_remote_config/ios`) + - firebase_storage (from `.symlinks/plugins/firebase_storage/ios`) - Flutter (from `Flutter`) - flutter_key_value_file_storage (from `.symlinks/plugins/flutter_key_value_file_storage/ios`) - flutter_secure_file_storage (from `.symlinks/plugins/flutter_secure_file_storage/ios`) @@ -213,6 +231,8 @@ SPEC REPOS: - Firebase - FirebaseABTesting - FirebaseAnalytics + - FirebaseAppCheckInterop + - FirebaseAuthInterop - FirebaseCore - FirebaseCoreExtension - FirebaseCoreInternal @@ -222,9 +242,11 @@ SPEC REPOS: - FirebaseRemoteConfigInterop - FirebaseSessions - FirebaseSharedSwift + - FirebaseStorage - GoogleAppMeasurement - GoogleDataTransport - GoogleUtilities + - GTMSessionFetcher - nanopb - PromisesObjC - PromisesSwift @@ -244,6 +266,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/firebase_crashlytics/ios" firebase_remote_config: :path: ".symlinks/plugins/firebase_remote_config/ios" + firebase_storage: + :path: ".symlinks/plugins/firebase_storage/ios" Flutter: :path: Flutter flutter_key_value_file_storage: @@ -271,8 +295,11 @@ SPEC CHECKSUMS: firebase_core: a626d00494efa398e7c54f25f1454a64c8abf197 firebase_crashlytics: 17e856fabec68d993662abaf2f6fe2413f0abece firebase_remote_config: 7b05c80210ab558c80f7a756681022b4ee98eea0 + firebase_storage: 5c0f552d6b27d621429d7fd16ebab4be94a3c954 FirebaseABTesting: d87f56707159bae64e269757a6e963d490f2eebe FirebaseAnalytics: ec00fe8b93b41dc6fe4a28784b8e51da0647a248 + FirebaseAppCheckInterop: 6a1757cfd4067d8e00fccd14fcc1b8fd78cfac07 + FirebaseAuthInterop: 17db81e9b198afb0f95ce48c133825727eed55d3 FirebaseCore: 7ec4d0484817f12c3373955bc87762d96842d483 FirebaseCoreExtension: 705ca5b14bf71d2564a0ddc677df1fc86ffa600f FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 @@ -282,6 +309,7 @@ SPEC CHECKSUMS: FirebaseRemoteConfigInterop: 6efda51fb5e2f15b16585197e26eaa09574e8a4d FirebaseSessions: dbd14adac65ce996228652c1fc3a3f576bdf3ecc FirebaseSharedSwift: 20530f495084b8d840f78a100d8c5ee613375f6e + FirebaseStorage: 44f4e25073f6fa0d4d8c09f5bec299ee9e4eb985 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_key_value_file_storage: b91fb1747ffa3e36810c752a1763655fda0b9f3d flutter_secure_file_storage: cdf659810f1849916ea5371ed5df339a3aaa802c @@ -289,6 +317,7 @@ SPEC CHECKSUMS: GoogleAppMeasurement: 9abf64b682732fed36da827aa2a68f0221fd2356 GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 + GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 nanopb: 438bc412db1928dac798aa6fd75726007be04262 path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 0b7c26c4..d346eed5 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -299,6 +299,8 @@ inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", "${BUILT_PRODUCTS_DIR}/FirebaseABTesting/FirebaseABTesting.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseAppCheckInterop/FirebaseAppCheckInterop.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseAuthInterop/FirebaseAuthInterop.framework", "${BUILT_PRODUCTS_DIR}/FirebaseCore/FirebaseCore.framework", "${BUILT_PRODUCTS_DIR}/FirebaseCoreExtension/FirebaseCoreExtension.framework", "${BUILT_PRODUCTS_DIR}/FirebaseCoreInternal/FirebaseCoreInternal.framework", @@ -308,6 +310,8 @@ "${BUILT_PRODUCTS_DIR}/FirebaseRemoteConfigInterop/FirebaseRemoteConfigInterop.framework", "${BUILT_PRODUCTS_DIR}/FirebaseSessions/FirebaseSessions.framework", "${BUILT_PRODUCTS_DIR}/FirebaseSharedSwift/FirebaseSharedSwift.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseStorage/FirebaseStorage.framework", + "${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework", "${BUILT_PRODUCTS_DIR}/GoogleDataTransport/GoogleDataTransport.framework", "${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework", "${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework", @@ -329,6 +333,8 @@ name = "[CP] Embed Pods Frameworks"; outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseABTesting.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseAppCheckInterop.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseAuthInterop.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCore.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreExtension.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreInternal.framework", @@ -338,6 +344,8 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseRemoteConfigInterop.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseSessions.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseSharedSwift.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseStorage.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMSessionFetcher.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleDataTransport.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework", diff --git a/lib/app.dart b/lib/app.dart index e3537ba8..7b36d407 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -3,9 +3,9 @@ import 'package:flutter/services.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_template/di/injectable.dart'; import 'package:flutter_template/navigator/main_navigator.dart'; +import 'package:flutter_template/repository/logging/logging_repository.dart'; import 'package:flutter_template/styles/theme_data.dart'; import 'package:flutter_template/util/locale/localization_fallback_cupertino_delegate.dart'; -import 'package:flutter_template/util/logging_util.dart'; import 'package:flutter_template/viewmodel/global/global_viewmodel.dart'; import 'package:flutter_template/widget/general/flavor_banner.dart'; import 'package:flutter_template/widget/general/text_scale_factor.dart'; @@ -26,7 +26,7 @@ class MyApp extends StatelessWidget { SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); // init logger - LoggingUtil.startLogging(); + getIt.get().startLogging(); return const InternalApp(); } diff --git a/lib/di/injectable.config.dart b/lib/di/injectable.config.dart index 9e4d57b3..9799bed0 100644 --- a/lib/di/injectable.config.dart +++ b/lib/di/injectable.config.dart @@ -8,85 +8,88 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:dio/dio.dart' as _i50; +import 'package:dio/dio.dart' as _i52; import 'package:drift/drift.dart' as _i6; import 'package:firebase_analytics/firebase_analytics.dart' as _i8; import 'package:firebase_crashlytics/firebase_crashlytics.dart' as _i9; import 'package:firebase_remote_config/firebase_remote_config.dart' as _i10; -import 'package:flutter_secure_storage/flutter_secure_storage.dart' as _i11; +import 'package:firebase_storage/firebase_storage.dart' as _i11; +import 'package:flutter_secure_storage/flutter_secure_storage.dart' as _i12; import 'package:flutter_template/database/flutter_template_database.dart' - as _i12; -import 'package:flutter_template/database/todo/todo_dao_storage.dart' as _i23; -import 'package:flutter_template/di/injectable.dart' as _i52; -import 'package:flutter_template/navigator/main_navigator.dart' as _i15; -import 'package:flutter_template/navigator/onboarding_navigator.dart' as _i39; + as _i13; +import 'package:flutter_template/database/todo/todo_dao_storage.dart' as _i24; +import 'package:flutter_template/di/injectable.dart' as _i54; +import 'package:flutter_template/navigator/main_navigator.dart' as _i16; +import 'package:flutter_template/navigator/onboarding_navigator.dart' as _i40; import 'package:flutter_template/repository/analytics/firebase_analytics_repository.dart' - as _i27; + as _i28; import 'package:flutter_template/repository/debug/debug_repository.dart' - as _i32; + as _i33; import 'package:flutter_template/repository/locale/locale_repository.dart' - as _i34; -import 'package:flutter_template/repository/login/login_repository.dart' + as _i35; +import 'package:flutter_template/repository/logging/logging_repository.dart' as _i36; +import 'package:flutter_template/repository/login/login_repository.dart' + as _i37; import 'package:flutter_template/repository/refresh/refresh_repository.dart' - as _i40; + as _i41; import 'package:flutter_template/repository/remote_config/remote_config.dart' - as _i18; -import 'package:flutter_template/repository/remote_config/remote_config_repository.dart' as _i19; +import 'package:flutter_template/repository/remote_config/remote_config_repository.dart' + as _i20; import 'package:flutter_template/repository/secure_storage/auth/auth_storage.dart' - as _i31; + as _i32; import 'package:flutter_template/repository/secure_storage/secure_storage.dart' - as _i20; + as _i21; import 'package:flutter_template/repository/shared_prefs/local/local_storage.dart' - as _i33; -import 'package:flutter_template/repository/todo/todo_repository.dart' as _i30; + as _i34; +import 'package:flutter_template/repository/todo/todo_repository.dart' as _i31; import 'package:flutter_template/util/cache/cache_controller.dart' as _i4; import 'package:flutter_template/util/cache/cache_controlling.dart' as _i3; import 'package:flutter_template/util/interceptor/network_auth_interceptor.dart' - as _i38; + as _i39; import 'package:flutter_template/util/interceptor/network_error_interceptor.dart' - as _i16; -import 'package:flutter_template/util/interceptor/network_log_interceptor.dart' as _i17; +import 'package:flutter_template/util/interceptor/network_log_interceptor.dart' + as _i18; import 'package:flutter_template/util/interceptor/network_refresh_interceptor.dart' - as _i48; + as _i50; import 'package:flutter_template/util/locale/localization_overrides.dart' - as _i13; -import 'package:flutter_template/util/locale/localization_overrides_impl.dart' as _i14; +import 'package:flutter_template/util/locale/localization_overrides_impl.dart' + as _i15; import 'package:flutter_template/util/snackbar/error_util.dart' as _i7; -import 'package:flutter_template/util/theme/theme_config.dart' as _i22; +import 'package:flutter_template/util/theme/theme_config.dart' as _i23; import 'package:flutter_template/viewmodel/debug/debug_platform_selector_viewmodel.dart' - as _i26; + as _i27; import 'package:flutter_template/viewmodel/debug/debug_theme_selector_viewmodel.dart' - as _i49; -import 'package:flutter_template/viewmodel/debug/debug_viewmodel.dart' as _i45; + as _i51; +import 'package:flutter_template/viewmodel/debug/debug_viewmodel.dart' as _i46; import 'package:flutter_template/viewmodel/global/global_viewmodel.dart' - as _i46; + as _i47; import 'package:flutter_template/viewmodel/license/license_viewmodel.dart' - as _i28; + as _i29; import 'package:flutter_template/viewmodel/log_detail/log_detail_viewmodel.dart' - as _i35; -import 'package:flutter_template/viewmodel/login/login_viewmodel.dart' as _i47; -import 'package:flutter_template/viewmodel/logs/logs_viewmodel.dart' as _i37; + as _i48; +import 'package:flutter_template/viewmodel/login/login_viewmodel.dart' as _i49; +import 'package:flutter_template/viewmodel/logs/logs_viewmodel.dart' as _i38; import 'package:flutter_template/viewmodel/permission/analytics_permission_viewmodel.dart' - as _i44; + as _i45; import 'package:flutter_template/viewmodel/splash/splash_viewmodel.dart' - as _i41; -import 'package:flutter_template/viewmodel/todo/todo_add/todo_add_viewmodel.dart' as _i42; -import 'package:flutter_template/viewmodel/todo/todo_list/todo_list_viewmodel.dart' +import 'package:flutter_template/viewmodel/todo/todo_add/todo_add_viewmodel.dart' as _i43; +import 'package:flutter_template/viewmodel/todo/todo_list/todo_list_viewmodel.dart' + as _i44; import 'package:flutter_template/webservice/todo/todo_dummy_service.dart' - as _i25; -import 'package:flutter_template/webservice/todo/todo_service.dart' as _i24; -import 'package:flutter_template/webservice/todo/todo_webservice.dart' as _i51; + as _i26; +import 'package:flutter_template/webservice/todo/todo_service.dart' as _i25; +import 'package:flutter_template/webservice/todo/todo_webservice.dart' as _i53; import 'package:get_it/get_it.dart' as _i1; import 'package:icapps_architecture/icapps_architecture.dart' as _i5; import 'package:injectable/injectable.dart' as _i2; -import 'package:log_to_secure_file/log_to_secure_file.dart' as _i29; -import 'package:shared_preferences/shared_preferences.dart' as _i21; +import 'package:log_to_secure_file/log_to_secure_file.dart' as _i30; +import 'package:shared_preferences/shared_preferences.dart' as _i22; const String _dummy = 'dummy'; const String _dev = 'dev'; @@ -118,136 +121,144 @@ extension GetItInjectableX on _i1.GetIt { () => registerModule.provideFirebaseCrashlytics()); gh.lazySingleton<_i10.FirebaseRemoteConfig>( () => registerModule.provideFirebaseRemoteConfig()); - gh.lazySingleton<_i11.FlutterSecureStorage>(() => registerModule.storage()); - gh.lazySingleton<_i12.FlutterTemplateDatabase>(() => registerModule + gh.lazySingleton<_i11.FirebaseStorage>( + () => registerModule.provideFirebaseStorage()); + gh.lazySingleton<_i12.FlutterSecureStorage>(() => registerModule.storage()); + gh.lazySingleton<_i13.FlutterTemplateDatabase>(() => registerModule .provideFlutterTemplateDatabase(gh<_i6.DatabaseConnection>())); - gh.lazySingleton<_i13.LocalizationOverrides>( - () => _i14.LocalizationOverridesImpl()); - gh.lazySingleton<_i15.MainNavigator>( - () => _i15.MainNavigator(gh<_i7.ErrorUtil>())); - gh.singleton<_i16.NetworkErrorInterceptor>( - () => _i16.NetworkErrorInterceptor(gh<_i5.ConnectivityHelper>())); - gh.singleton<_i17.NetworkLogInterceptor>( - () => _i17.NetworkLogInterceptor()); - gh.lazySingleton<_i18.RemoteConfig>(() => _i18.RemoteConfig()); - gh.lazySingleton<_i19.RemoteConfigRepository>( - () => _i19.RemoteConfigRepository(gh<_i10.FirebaseRemoteConfig>())); - gh.lazySingleton<_i20.SecureStorage>( - () => _i20.SecureStorage(gh<_i11.FlutterSecureStorage>())); - await gh.singletonAsync<_i21.SharedPreferences>( + gh.lazySingleton<_i14.LocalizationOverrides>( + () => _i15.LocalizationOverridesImpl()); + gh.lazySingleton<_i16.MainNavigator>( + () => _i16.MainNavigator(gh<_i7.ErrorUtil>())); + gh.singleton<_i17.NetworkErrorInterceptor>( + () => _i17.NetworkErrorInterceptor(gh<_i5.ConnectivityHelper>())); + gh.singleton<_i18.NetworkLogInterceptor>( + () => _i18.NetworkLogInterceptor()); + gh.lazySingleton<_i19.RemoteConfig>(() => _i19.RemoteConfig()); + gh.lazySingleton<_i20.RemoteConfigRepository>( + () => _i20.RemoteConfigRepository(gh<_i10.FirebaseRemoteConfig>())); + gh.lazySingleton<_i21.SecureStorage>( + () => _i21.SecureStorage(gh<_i12.FlutterSecureStorage>())); + await gh.singletonAsync<_i22.SharedPreferences>( () => registerModule.prefs(), preResolve: true, ); - gh.lazySingleton<_i22.ThemeConfigUtil>(() => _i22.ThemeConfigUtil()); - gh.lazySingleton<_i23.TodoDaoStorage>( - () => _i23.TodoDaoStorage(gh<_i12.FlutterTemplateDatabase>())); - gh.singleton<_i24.TodoService>( - () => _i25.TodoDummyService(), + gh.lazySingleton<_i23.ThemeConfigUtil>(() => _i23.ThemeConfigUtil()); + gh.lazySingleton<_i24.TodoDaoStorage>( + () => _i24.TodoDaoStorage(gh<_i13.FlutterTemplateDatabase>())); + gh.singleton<_i25.TodoService>( + () => _i26.TodoDummyService(), registerFor: {_dummy}, ); - gh.factory<_i26.DebugPlatformSelectorViewModel>( - () => _i26.DebugPlatformSelectorViewModel(gh<_i15.MainNavigator>())); - gh.lazySingleton<_i27.FireBaseAnalyticsRepository>( - () => _i27.FireBaseAnalyticsRepository(gh<_i8.FirebaseAnalytics>())); - gh.factory<_i28.LicenseViewModel>( - () => _i28.LicenseViewModel(gh<_i15.MainNavigator>())); - gh.lazySingleton<_i29.SecureLogStorage>( - () => registerModule.provideSecureLogStorage(gh<_i20.SecureStorage>())); + gh.factory<_i27.DebugPlatformSelectorViewModel>( + () => _i27.DebugPlatformSelectorViewModel(gh<_i16.MainNavigator>())); + gh.lazySingleton<_i28.FireBaseAnalyticsRepository>( + () => _i28.FireBaseAnalyticsRepository(gh<_i8.FirebaseAnalytics>())); + gh.factory<_i29.LicenseViewModel>( + () => _i29.LicenseViewModel(gh<_i16.MainNavigator>())); + gh.lazySingleton<_i30.SecureLogStorage>( + () => registerModule.provideSecureLogStorage(gh<_i21.SecureStorage>())); gh.lazySingleton<_i5.SharedPreferenceStorage>( - () => registerModule.sharedPreferences(gh<_i21.SharedPreferences>())); + () => registerModule.sharedPreferences(gh<_i22.SharedPreferences>())); gh.lazySingleton<_i5.SimpleKeyValueStorage>( () => registerModule.keyValueStorage( gh<_i5.SharedPreferenceStorage>(), - gh<_i20.SecureStorage>(), + gh<_i21.SecureStorage>(), )); - gh.lazySingleton<_i30.TodoRepository>(() => _i30.TodoRepository( - gh<_i24.TodoService>(), - gh<_i23.TodoDaoStorage>(), + gh.lazySingleton<_i31.TodoRepository>(() => _i31.TodoRepository( + gh<_i25.TodoService>(), + gh<_i24.TodoDaoStorage>(), )); - gh.lazySingleton<_i31.AuthStorage>( - () => _i31.AuthStorage(gh<_i5.SimpleKeyValueStorage>())); - gh.lazySingleton<_i32.DebugRepository>( - () => _i32.DebugRepository(gh<_i5.SharedPreferenceStorage>())); - gh.lazySingleton<_i33.LocalStorage>(() => _i33.LocalStorage( - gh<_i31.AuthStorage>(), + gh.lazySingleton<_i32.AuthStorage>( + () => _i32.AuthStorage(gh<_i5.SimpleKeyValueStorage>())); + gh.lazySingleton<_i33.DebugRepository>( + () => _i33.DebugRepository(gh<_i5.SharedPreferenceStorage>())); + gh.lazySingleton<_i34.LocalStorage>(() => _i34.LocalStorage( + gh<_i32.AuthStorage>(), gh<_i5.SharedPreferenceStorage>(), )); - gh.lazySingleton<_i34.LocaleRepository>( - () => _i34.LocaleRepository(gh<_i5.SharedPreferenceStorage>())); - gh.factory<_i35.LogDetailViewModel>( - () => _i35.LogDetailViewModel(gh<_i29.SecureLogStorage>())); - gh.lazySingleton<_i36.LoginRepository>( - () => _i36.LoginRepository(gh<_i31.AuthStorage>())); - gh.factory<_i37.LogsViewModel>(() => _i37.LogsViewModel( - gh<_i15.MainNavigator>(), - gh<_i29.SecureLogStorage>(), + gh.lazySingleton<_i35.LocaleRepository>( + () => _i35.LocaleRepository(gh<_i5.SharedPreferenceStorage>())); + gh.lazySingleton<_i36.LoggingRepository>(() => _i36.LoggingRepository( + gh<_i11.FirebaseStorage>(), + gh<_i30.SecureLogStorage>(), )); - gh.singleton<_i38.NetworkAuthInterceptor>( - () => _i38.NetworkAuthInterceptor(gh<_i31.AuthStorage>())); - gh.lazySingleton<_i39.OnboardingNavigator>(() => _i39.OnboardingNavigator( - gh<_i15.MainNavigator>(), - gh<_i33.LocalStorage>(), - gh<_i36.LoginRepository>(), + gh.lazySingleton<_i37.LoginRepository>( + () => _i37.LoginRepository(gh<_i32.AuthStorage>())); + gh.factory<_i38.LogsViewModel>(() => _i38.LogsViewModel( + gh<_i16.MainNavigator>(), + gh<_i30.SecureLogStorage>(), )); - gh.lazySingleton<_i40.RefreshRepository>( - () => _i40.RefreshRepository(gh<_i31.AuthStorage>())); - gh.factory<_i41.SplashViewModel>(() => _i41.SplashViewModel( - gh<_i33.LocalStorage>(), - gh<_i39.OnboardingNavigator>(), - gh<_i19.RemoteConfigRepository>(), + gh.singleton<_i39.NetworkAuthInterceptor>( + () => _i39.NetworkAuthInterceptor(gh<_i32.AuthStorage>())); + gh.lazySingleton<_i40.OnboardingNavigator>(() => _i40.OnboardingNavigator( + gh<_i16.MainNavigator>(), + gh<_i34.LocalStorage>(), + gh<_i37.LoginRepository>(), )); - gh.factory<_i42.TodoAddViewModel>(() => _i42.TodoAddViewModel( - gh<_i30.TodoRepository>(), - gh<_i15.MainNavigator>(), + gh.lazySingleton<_i41.RefreshRepository>( + () => _i41.RefreshRepository(gh<_i32.AuthStorage>())); + gh.factory<_i42.SplashViewModel>(() => _i42.SplashViewModel( + gh<_i34.LocalStorage>(), + gh<_i40.OnboardingNavigator>(), + gh<_i20.RemoteConfigRepository>(), )); - gh.factory<_i43.TodoListViewModel>(() => _i43.TodoListViewModel( - gh<_i30.TodoRepository>(), - gh<_i15.MainNavigator>(), + gh.factory<_i43.TodoAddViewModel>(() => _i43.TodoAddViewModel( + gh<_i31.TodoRepository>(), + gh<_i16.MainNavigator>(), )); - gh.factory<_i44.AnalyticsPermissionViewModel>( - () => _i44.AnalyticsPermissionViewModel( - gh<_i39.OnboardingNavigator>(), - gh<_i33.LocalStorage>(), + gh.factory<_i44.TodoListViewModel>(() => _i44.TodoListViewModel( + gh<_i31.TodoRepository>(), + gh<_i16.MainNavigator>(), + )); + gh.factory<_i45.AnalyticsPermissionViewModel>( + () => _i45.AnalyticsPermissionViewModel( + gh<_i40.OnboardingNavigator>(), + gh<_i34.LocalStorage>(), )); - gh.factory<_i45.DebugViewModel>(() => _i45.DebugViewModel( - gh<_i32.DebugRepository>(), - gh<_i15.MainNavigator>(), - gh<_i12.FlutterTemplateDatabase>(), - gh<_i33.LocalStorage>(), + gh.factory<_i46.DebugViewModel>(() => _i46.DebugViewModel( + gh<_i33.DebugRepository>(), + gh<_i16.MainNavigator>(), + gh<_i13.FlutterTemplateDatabase>(), + gh<_i34.LocalStorage>(), + )); + gh.lazySingleton<_i47.GlobalViewModel>(() => _i47.GlobalViewModel( + gh<_i35.LocaleRepository>(), + gh<_i33.DebugRepository>(), + gh<_i34.LocalStorage>(), + gh<_i23.ThemeConfigUtil>(), + gh<_i14.LocalizationOverrides>(), )); - gh.lazySingleton<_i46.GlobalViewModel>(() => _i46.GlobalViewModel( - gh<_i34.LocaleRepository>(), - gh<_i32.DebugRepository>(), - gh<_i33.LocalStorage>(), - gh<_i22.ThemeConfigUtil>(), - gh<_i13.LocalizationOverrides>(), + gh.factory<_i48.LogDetailViewModel>(() => _i48.LogDetailViewModel( + gh<_i30.SecureLogStorage>(), + gh<_i36.LoggingRepository>(), )); - gh.factory<_i47.LoginViewModel>(() => _i47.LoginViewModel( - gh<_i36.LoginRepository>(), - gh<_i15.MainNavigator>(), - gh<_i39.OnboardingNavigator>(), + gh.factory<_i49.LoginViewModel>(() => _i49.LoginViewModel( + gh<_i37.LoginRepository>(), + gh<_i16.MainNavigator>(), + gh<_i40.OnboardingNavigator>(), )); - gh.singleton<_i48.NetworkRefreshInterceptor>( - () => _i48.NetworkRefreshInterceptor( - gh<_i31.AuthStorage>(), - gh<_i40.RefreshRepository>(), + gh.singleton<_i50.NetworkRefreshInterceptor>( + () => _i50.NetworkRefreshInterceptor( + gh<_i32.AuthStorage>(), + gh<_i41.RefreshRepository>(), )); gh.lazySingleton<_i5.CombiningSmartInterceptor>( () => registerModule.provideCombiningSmartInterceptor( - gh<_i17.NetworkLogInterceptor>(), - gh<_i38.NetworkAuthInterceptor>(), - gh<_i16.NetworkErrorInterceptor>(), - gh<_i48.NetworkRefreshInterceptor>(), + gh<_i18.NetworkLogInterceptor>(), + gh<_i39.NetworkAuthInterceptor>(), + gh<_i17.NetworkErrorInterceptor>(), + gh<_i50.NetworkRefreshInterceptor>(), )); - gh.factory<_i49.DebugThemeSelectorViewModel>( - () => _i49.DebugThemeSelectorViewModel( - gh<_i15.MainNavigator>(), - gh<_i46.GlobalViewModel>(), + gh.factory<_i51.DebugThemeSelectorViewModel>( + () => _i51.DebugThemeSelectorViewModel( + gh<_i16.MainNavigator>(), + gh<_i47.GlobalViewModel>(), )); - gh.lazySingleton<_i50.Dio>( + gh.lazySingleton<_i52.Dio>( () => registerModule.provideDio(gh<_i5.CombiningSmartInterceptor>())); - gh.singleton<_i24.TodoService>( - () => _i51.TodoWebService(gh<_i50.Dio>()), + gh.singleton<_i25.TodoService>( + () => _i53.TodoWebService(gh<_i52.Dio>()), registerFor: { _dev, _prod, @@ -257,4 +268,4 @@ extension GetItInjectableX on _i1.GetIt { } } -class _$RegisterModule extends _i52.RegisterModule {} +class _$RegisterModule extends _i54.RegisterModule {} diff --git a/lib/di/injectable.dart b/lib/di/injectable.dart index 86826f1d..93043573 100644 --- a/lib/di/injectable.dart +++ b/lib/di/injectable.dart @@ -5,6 +5,7 @@ import 'package:drift/drift.dart'; import 'package:firebase_analytics/firebase_analytics.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:firebase_remote_config/firebase_remote_config.dart'; +import 'package:firebase_storage/firebase_storage.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:flutter_template/database/flutter_template_database.dart'; @@ -70,6 +71,9 @@ abstract class RegisterModule { @lazySingleton FirebaseCrashlytics provideFirebaseCrashlytics() => FirebaseCrashlytics.instance; + @lazySingleton + FirebaseStorage provideFirebaseStorage() => FirebaseStorage.instance; + @lazySingleton FlutterSecureStorage storage() => const FlutterSecureStorage(); diff --git a/lib/navigator/main_navigator.navigator.dart b/lib/navigator/main_navigator.navigator.dart index bb63b4ab..870362b7 100644 --- a/lib/navigator/main_navigator.navigator.dart +++ b/lib/navigator/main_navigator.navigator.dart @@ -60,66 +60,66 @@ mixin BaseNavigator { settings: settings, fullscreenDialog: false, ); - case RouteNames.todoAddScreen: + case RouteNames.logDetailScreen: return MaterialPageRoute( - builder: (_) => TodoAddScreen( + builder: (_) => LogDetailScreen( + date: arguments['date'] as String, key: arguments['key'] as Key?, ), settings: settings, fullscreenDialog: false, ); - case RouteNames.analyticsPermissionScreen: + case RouteNames.todoAddScreen: return MaterialPageRoute( - builder: (_) => AnalyticsPermissionScreen( + builder: (_) => TodoAddScreen( key: arguments['key'] as Key?, ), settings: settings, fullscreenDialog: false, ); - case RouteNames.loginScreen: + case RouteNames.logsScreen: return MaterialPageRoute( - builder: (_) => LoginScreen( + builder: (_) => LogsScreen( key: arguments['key'] as Key?, ), settings: settings, fullscreenDialog: false, ); - case RouteNames.themeModeSelectorScreen: + case RouteNames.analyticsPermissionScreen: return MaterialPageRoute( - builder: (_) => ThemeModeSelectorScreen( + builder: (_) => AnalyticsPermissionScreen( key: arguments['key'] as Key?, ), settings: settings, fullscreenDialog: false, ); - case RouteNames.debugPlatformSelectorScreen: + case RouteNames.loginScreen: return MaterialPageRoute( - builder: (_) => DebugPlatformSelectorScreen( + builder: (_) => LoginScreen( key: arguments['key'] as Key?, ), settings: settings, fullscreenDialog: false, ); - case RouteNames.debugScreen: + case RouteNames.themeModeSelectorScreen: return MaterialPageRoute( - builder: (_) => DebugScreen( + builder: (_) => ThemeModeSelectorScreen( key: arguments['key'] as Key?, ), settings: settings, fullscreenDialog: false, ); - case RouteNames.logsScreen: + case RouteNames.debugPlatformSelectorScreen: return MaterialPageRoute( - builder: (_) => LogsScreen( + builder: (_) => DebugPlatformSelectorScreen( key: arguments['key'] as Key?, ), settings: settings, fullscreenDialog: false, ); - case RouteNames.logDetailScreen: + case RouteNames.debugScreen: return MaterialPageRoute( - builder: (_) => LogDetailScreen( - date: arguments['date'] as String, + builder: (_) => DebugScreen( key: arguments['key'] as Key?, ), settings: settings, @@ -146,11 +146,27 @@ mixin BaseNavigator { RouteNames.licenseScreen, arguments: {'key': key}, ); + Future goToLogDetailScreen({ + required String date, + _i1.Key? key, + }) async => + navigatorKey.currentState?.pushNamed( + Uri( + path: RouteNames.logDetailScreen, + queryParameters: {'date': date}, + ).toString(), + arguments: {'date': date, 'key': key}, + ); Future goToTodoAddScreen({_i1.Key? key}) async => navigatorKey.currentState?.pushNamed( RouteNames.todoAddScreen, arguments: {'key': key}, ); + Future goToLogsScreen({_i1.Key? key}) async => + navigatorKey.currentState?.pushNamed( + RouteNames.logsScreen, + arguments: {'key': key}, + ); Future goToAnalyticsPermissionScreen({_i1.Key? key}) async => navigatorKey.currentState?.pushNamed( RouteNames.analyticsPermissionScreen, @@ -177,22 +193,6 @@ mixin BaseNavigator { RouteNames.debugScreen, arguments: {'key': key}, ); - Future goToLogsScreen({_i1.Key? key}) async => - navigatorKey.currentState?.pushNamed( - RouteNames.logsScreen, - arguments: {'key': key}, - ); - Future goToLogDetailScreen({ - required String date, - _i1.Key? key, - }) async => - navigatorKey.currentState?.pushNamed( - Uri( - path: RouteNames.logDetailScreen, - queryParameters: {'date': date}, - ).toString(), - arguments: {'date': date, 'key': key}, - ); void goBack() => navigatorKey.currentState?.pop(); void goBackWithResult({T? result}) => navigatorKey.currentState?.pop(result); @@ -221,9 +221,15 @@ class RouteNames { /// /license static const licenseScreen = '/license'; + /// /log-detail + static const logDetailScreen = '/log-detail'; + /// /todo-add static const todoAddScreen = '/todo-add'; + /// /logs + static const logsScreen = '/logs'; + /// /analytics-permission static const analyticsPermissionScreen = '/analytics-permission'; @@ -238,10 +244,4 @@ class RouteNames { /// /debug static const debugScreen = '/debug'; - - /// /logs - static const logsScreen = '/logs'; - - /// /log-detail - static const logDetailScreen = '/log-detail'; } diff --git a/lib/repository/logging/base_logging_repository.dart b/lib/repository/logging/base_logging_repository.dart new file mode 100644 index 00000000..8ed33bdf --- /dev/null +++ b/lib/repository/logging/base_logging_repository.dart @@ -0,0 +1,44 @@ +import 'dart:io'; + +import 'package:icapps_architecture/icapps_architecture.dart'; +import 'package:log_to_secure_file/log_to_secure_file.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:synchronized/synchronized.dart'; + +abstract class BaseLoggingRepository { + final SecureLogStorage _secureLogStorage; + + BaseLoggingRepository( + this._secureLogStorage, + ); + + final _loggerLock = Lock(); + + String tempLogPath = '/logs'; + + String get userId; + + void startLogging() { + _secureLogStorage.init(); + LoggingFactory.configure(LoggingConfiguration(onLog: (value) => storeLogLine(value))); + } + + void storeLogLine(String line) => _loggerLock.synchronized(() => _secureLogStorage.storeLogLine(line)); + + Future uploadLog(DateTime date) async { + final applicationDirectory = await getApplicationDocumentsDirectory(); + final file = File('${applicationDirectory.path}$tempLogPath'); + if (file.existsSync()) { + file.deleteSync(); + file.createSync(); + } + final log = await _secureLogStorage.getLogFromDate(date); + for (final line in log) { + file.writeAsStringSync(line); + } + await uploadFile(file, date); + file.deleteSync(); + } + + Future uploadFile(File file, DateTime date); +} diff --git a/lib/repository/logging/logging_repository.dart b/lib/repository/logging/logging_repository.dart new file mode 100644 index 00000000..3eb6c885 --- /dev/null +++ b/lib/repository/logging/logging_repository.dart @@ -0,0 +1,25 @@ +import 'dart:io'; + +import 'package:firebase_storage/firebase_storage.dart'; +import 'package:flutter_template/repository/logging/base_logging_repository.dart'; +import 'package:flutter_template/util/extension/date_time_extension.dart'; +import 'package:injectable/injectable.dart'; + +@lazySingleton +class LoggingRepository extends BaseLoggingRepository { + final FirebaseStorage _firebaseStorage; + + LoggingRepository( + this._firebaseStorage, + super.secureLogStorage, + ); + + @override + String get userId => 'TestUser'; + + @override + Future uploadFile(File file, DateTime date) async { + final ref = _firebaseStorage.ref('logs/$userId/${date.shortDateFormat}.txt'); + await ref.putFile(file); + } +} diff --git a/lib/screen/log_detail/log_detail_screen.dart b/lib/screen/log_detail/log_detail_screen.dart index 88105d84..904270c7 100644 --- a/lib/screen/log_detail/log_detail_screen.dart +++ b/lib/screen/log_detail/log_detail_screen.dart @@ -4,6 +4,7 @@ import 'package:flutter_template/di/injectable.dart'; import 'package:flutter_template/styles/theme_data.dart'; import 'package:flutter_template/viewmodel/log_detail/log_detail_viewmodel.dart'; import 'package:flutter_template/widget/general/simple_screen/base_screen.dart'; +import 'package:flutter_template/widget/general/styled/flutter_template_button.dart'; import 'package:flutter_template/widget/provider/provider_widget.dart'; @flutterRoute @@ -24,16 +25,27 @@ class LogDetailScreenState extends State { Widget build(BuildContext context) { return ProviderWidget( create: () => getIt()..init(widget.date), - childBuilderWithViewModel: (context, viewModel, theme, localization) => BaseScreen.builder( - itemCount: viewModel.logs.length, - reversed: true, - itemBuilder: (context, index) { - final log = viewModel.logs.reversed.toList()[index]; - return Text( - log, - style: theme.text.bodySmall, - ); - }, + childBuilderWithViewModel: (context, viewModel, theme, localization) => BaseScreen( + children: [ + Expanded( + child: ListView.builder( + reverse: true, + itemCount: viewModel.logs.length, + itemBuilder: (context, index) { + final log = viewModel.logs.reversed.toList()[index]; + return Text( + log, + style: theme.text.bodySmall, + ); + }, + ), + ), + FlutterTemplateButton( + isEnabled: !viewModel.isLoading, + text: 'Upload log', + onClick: viewModel.uploadLog, + ) + ], ), ); } diff --git a/lib/util/logging_util.dart b/lib/util/logging_util.dart deleted file mode 100644 index a68b9f65..00000000 --- a/lib/util/logging_util.dart +++ /dev/null @@ -1,16 +0,0 @@ -import 'package:flutter_template/di/injectable.dart'; -import 'package:icapps_architecture/icapps_architecture.dart'; -import 'package:log_to_secure_file/log_to_secure_file.dart'; -import 'package:synchronized/synchronized.dart'; - -class LoggingUtil { - static final _loggerLock = Lock(); - - static void startLogging() { - final fileLogger = getIt.get(); - fileLogger.init(); - LoggingFactory.configure(LoggingConfiguration(onLog: (value) => storeLogLine(value))); - } - - static void storeLogLine(String line) => _loggerLock.synchronized(() => getIt.get().storeLogLine(line)); -} diff --git a/lib/viewmodel/log_detail/log_detail_viewmodel.dart b/lib/viewmodel/log_detail/log_detail_viewmodel.dart index 55197798..34e03ccd 100644 --- a/lib/viewmodel/log_detail/log_detail_viewmodel.dart +++ b/lib/viewmodel/log_detail/log_detail_viewmodel.dart @@ -1,3 +1,4 @@ +import 'package:flutter_template/repository/logging/logging_repository.dart'; import 'package:icapps_architecture/icapps_architecture.dart'; import 'package:injectable/injectable.dart'; import 'package:log_to_secure_file/log_to_secure_file.dart'; @@ -6,20 +7,33 @@ import 'package:log_to_secure_file/log_to_secure_file.dart'; class LogDetailViewModel with ChangeNotifierEx { late final DateTime _date; final SecureLogStorage _secureLogStorage; + final LoggingRepository _loggingRepository; final List _logs = []; + bool _isLoading = false; + List get logs => _logs; + bool get isLoading => _isLoading; + LogDetailViewModel( this._secureLogStorage, + this._loggingRepository, ); Future init(String date) async { - staticLogger.d('LogDetailViewModel init'); _date = DateTime.parse(date); _logs.replaceAll(await _secureLogStorage.getLogFromDate(_date)); if (disposed) return; notifyListeners(); } + + Future uploadLog() async { + _isLoading = true; + notifyListeners(); + await _loggingRepository.uploadLog(_date); + if (disposed) return; + notifyListeners(); + } } diff --git a/lib/viewmodel/logs/logs_viewmodel.dart b/lib/viewmodel/logs/logs_viewmodel.dart index a4d781c3..5ae32cc7 100644 --- a/lib/viewmodel/logs/logs_viewmodel.dart +++ b/lib/viewmodel/logs/logs_viewmodel.dart @@ -19,7 +19,6 @@ class LogsViewModel with ChangeNotifierEx { ); Future init() async { - staticLogger.d('LogsViewModel init'); _dates.replaceAll(await _secureLogStorage.availableDates()); if (disposed) return; notifyListeners(); diff --git a/pubspec.lock b/pubspec.lock index f4d17dc4..60cbff4d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -457,6 +457,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.6.7" + firebase_storage: + dependency: "direct main" + description: + name: firebase_storage + sha256: "2ae478ceec9f458c1bcbf0ee3e0100e4e909708979e83f16d5d9fba35a5b42c1" + url: "https://pub.dev" + source: hosted + version: "11.7.7" + firebase_storage_platform_interface: + dependency: transitive + description: + name: firebase_storage_platform_interface + sha256: "4e18662e6a66e2e0e181c06f94707de06d5097d70cfe2b5141bf64660c5b5da9" + url: "https://pub.dev" + source: hosted + version: "5.1.22" + firebase_storage_web: + dependency: transitive + description: + name: firebase_storage_web + sha256: "3a44aacd38a372efb159f6fe36bb4a7d79823949383816457fd43d3d47602a53" + url: "https://pub.dev" + source: hosted + version: "3.9.7" fixnum: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 2faf12e5..6734efd4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,6 +23,7 @@ dependencies: firebase_core_web: ^2.1.0 firebase_crashlytics: ^3.0.10 firebase_remote_config: ^4.4.7 + firebase_storage: ^11.7.7 flutter: sdk: flutter flutter_cache_manager: ^3.3.0 diff --git a/test/util/test_util.mocks.dart b/test/util/test_util.mocks.dart index 3f2805b1..71672f00 100644 --- a/test/util/test_util.mocks.dart +++ b/test/util/test_util.mocks.dart @@ -466,6 +466,24 @@ class MockMainNavigator extends _i1.Mock implements _i10.MainNavigator { returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override + _i5.Future goToLogDetailScreen({ + required String? date, + _i2.Key? key, + }) => + (super.noSuchMethod( + Invocation.method( + #goToLogDetailScreen, + [], + { + #date: date, + #key: key, + }, + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + @override _i5.Future goToTodoAddScreen({_i2.Key? key}) => (super.noSuchMethod( Invocation.method( @@ -477,6 +495,17 @@ class MockMainNavigator extends _i1.Mock implements _i10.MainNavigator { returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override + _i5.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( + Invocation.method( + #goToLogsScreen, + [], + {#key: key}, + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + @override _i5.Future goToAnalyticsPermissionScreen({_i2.Key? key}) => (super.noSuchMethod( @@ -534,35 +563,6 @@ class MockMainNavigator extends _i1.Mock implements _i10.MainNavigator { returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override - _i5.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( - Invocation.method( - #goToLogsScreen, - [], - {#key: key}, - ), - returnValue: _i5.Future.value(), - returnValueForMissingStub: _i5.Future.value(), - ) as _i5.Future); - - @override - _i5.Future goToLogDetailScreen({ - required String? date, - _i2.Key? key, - }) => - (super.noSuchMethod( - Invocation.method( - #goToLogDetailScreen, - [], - { - #date: date, - #key: key, - }, - ), - returnValue: _i5.Future.value(), - returnValueForMissingStub: _i5.Future.value(), - ) as _i5.Future); - @override void goBack() => super.noSuchMethod( Invocation.method( diff --git a/test/viewmodel/debug/debug_platform_selector_viewmodel_test.mocks.dart b/test/viewmodel/debug/debug_platform_selector_viewmodel_test.mocks.dart index 992089dd..cd900f9f 100644 --- a/test/viewmodel/debug/debug_platform_selector_viewmodel_test.mocks.dart +++ b/test/viewmodel/debug/debug_platform_selector_viewmodel_test.mocks.dart @@ -168,6 +168,24 @@ class MockMainNavigator extends _i1.Mock implements _i3.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future goToLogDetailScreen({ + required String? date, + _i2.Key? key, + }) => + (super.noSuchMethod( + Invocation.method( + #goToLogDetailScreen, + [], + { + #date: date, + #key: key, + }, + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future goToTodoAddScreen({_i2.Key? key}) => (super.noSuchMethod( Invocation.method( @@ -179,6 +197,17 @@ class MockMainNavigator extends _i1.Mock implements _i3.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( + Invocation.method( + #goToLogsScreen, + [], + {#key: key}, + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future goToAnalyticsPermissionScreen({_i2.Key? key}) => (super.noSuchMethod( @@ -236,35 +265,6 @@ class MockMainNavigator extends _i1.Mock implements _i3.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); - @override - _i4.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( - Invocation.method( - #goToLogsScreen, - [], - {#key: key}, - ), - returnValue: _i4.Future.value(), - returnValueForMissingStub: _i4.Future.value(), - ) as _i4.Future); - - @override - _i4.Future goToLogDetailScreen({ - required String? date, - _i2.Key? key, - }) => - (super.noSuchMethod( - Invocation.method( - #goToLogDetailScreen, - [], - { - #date: date, - #key: key, - }, - ), - returnValue: _i4.Future.value(), - returnValueForMissingStub: _i4.Future.value(), - ) as _i4.Future); - @override void goBack() => super.noSuchMethod( Invocation.method( diff --git a/test/viewmodel/debug/debug_viewmodel_test.mocks.dart b/test/viewmodel/debug/debug_viewmodel_test.mocks.dart index 9fb6259f..ecd068eb 100644 --- a/test/viewmodel/debug/debug_viewmodel_test.mocks.dart +++ b/test/viewmodel/debug/debug_viewmodel_test.mocks.dart @@ -369,6 +369,24 @@ class MockMainNavigator extends _i1.Mock implements _i7.MainNavigator { returnValueForMissingStub: _i6.Future.value(), ) as _i6.Future); + @override + _i6.Future goToLogDetailScreen({ + required String? date, + _i2.Key? key, + }) => + (super.noSuchMethod( + Invocation.method( + #goToLogDetailScreen, + [], + { + #date: date, + #key: key, + }, + ), + returnValue: _i6.Future.value(), + returnValueForMissingStub: _i6.Future.value(), + ) as _i6.Future); + @override _i6.Future goToTodoAddScreen({_i2.Key? key}) => (super.noSuchMethod( Invocation.method( @@ -380,6 +398,17 @@ class MockMainNavigator extends _i1.Mock implements _i7.MainNavigator { returnValueForMissingStub: _i6.Future.value(), ) as _i6.Future); + @override + _i6.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( + Invocation.method( + #goToLogsScreen, + [], + {#key: key}, + ), + returnValue: _i6.Future.value(), + returnValueForMissingStub: _i6.Future.value(), + ) as _i6.Future); + @override _i6.Future goToAnalyticsPermissionScreen({_i2.Key? key}) => (super.noSuchMethod( @@ -437,35 +466,6 @@ class MockMainNavigator extends _i1.Mock implements _i7.MainNavigator { returnValueForMissingStub: _i6.Future.value(), ) as _i6.Future); - @override - _i6.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( - Invocation.method( - #goToLogsScreen, - [], - {#key: key}, - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - - @override - _i6.Future goToLogDetailScreen({ - required String? date, - _i2.Key? key, - }) => - (super.noSuchMethod( - Invocation.method( - #goToLogDetailScreen, - [], - { - #date: date, - #key: key, - }, - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - @override void goBack() => super.noSuchMethod( Invocation.method( diff --git a/test/viewmodel/license/license_viewmodel_test.mocks.dart b/test/viewmodel/license/license_viewmodel_test.mocks.dart index 278ac7e4..1aef81c2 100644 --- a/test/viewmodel/license/license_viewmodel_test.mocks.dart +++ b/test/viewmodel/license/license_viewmodel_test.mocks.dart @@ -168,6 +168,24 @@ class MockMainNavigator extends _i1.Mock implements _i3.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future goToLogDetailScreen({ + required String? date, + _i2.Key? key, + }) => + (super.noSuchMethod( + Invocation.method( + #goToLogDetailScreen, + [], + { + #date: date, + #key: key, + }, + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future goToTodoAddScreen({_i2.Key? key}) => (super.noSuchMethod( Invocation.method( @@ -179,6 +197,17 @@ class MockMainNavigator extends _i1.Mock implements _i3.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( + Invocation.method( + #goToLogsScreen, + [], + {#key: key}, + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future goToAnalyticsPermissionScreen({_i2.Key? key}) => (super.noSuchMethod( @@ -236,35 +265,6 @@ class MockMainNavigator extends _i1.Mock implements _i3.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); - @override - _i4.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( - Invocation.method( - #goToLogsScreen, - [], - {#key: key}, - ), - returnValue: _i4.Future.value(), - returnValueForMissingStub: _i4.Future.value(), - ) as _i4.Future); - - @override - _i4.Future goToLogDetailScreen({ - required String? date, - _i2.Key? key, - }) => - (super.noSuchMethod( - Invocation.method( - #goToLogDetailScreen, - [], - { - #date: date, - #key: key, - }, - ), - returnValue: _i4.Future.value(), - returnValueForMissingStub: _i4.Future.value(), - ) as _i4.Future); - @override void goBack() => super.noSuchMethod( Invocation.method( diff --git a/test/viewmodel/login/login_viewmodel_test.mocks.dart b/test/viewmodel/login/login_viewmodel_test.mocks.dart index d9b647f4..aa3ddd62 100644 --- a/test/viewmodel/login/login_viewmodel_test.mocks.dart +++ b/test/viewmodel/login/login_viewmodel_test.mocks.dart @@ -209,6 +209,24 @@ class MockMainNavigator extends _i1.Mock implements _i5.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future goToLogDetailScreen({ + required String? date, + _i2.Key? key, + }) => + (super.noSuchMethod( + Invocation.method( + #goToLogDetailScreen, + [], + { + #date: date, + #key: key, + }, + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future goToTodoAddScreen({_i2.Key? key}) => (super.noSuchMethod( Invocation.method( @@ -220,6 +238,17 @@ class MockMainNavigator extends _i1.Mock implements _i5.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( + Invocation.method( + #goToLogsScreen, + [], + {#key: key}, + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future goToAnalyticsPermissionScreen({_i2.Key? key}) => (super.noSuchMethod( @@ -277,35 +306,6 @@ class MockMainNavigator extends _i1.Mock implements _i5.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); - @override - _i4.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( - Invocation.method( - #goToLogsScreen, - [], - {#key: key}, - ), - returnValue: _i4.Future.value(), - returnValueForMissingStub: _i4.Future.value(), - ) as _i4.Future); - - @override - _i4.Future goToLogDetailScreen({ - required String? date, - _i2.Key? key, - }) => - (super.noSuchMethod( - Invocation.method( - #goToLogDetailScreen, - [], - { - #date: date, - #key: key, - }, - ), - returnValue: _i4.Future.value(), - returnValueForMissingStub: _i4.Future.value(), - ) as _i4.Future); - @override void goBack() => super.noSuchMethod( Invocation.method( diff --git a/test/viewmodel/theme_selector/theme_selector_viewmodel_test.mocks.dart b/test/viewmodel/theme_selector/theme_selector_viewmodel_test.mocks.dart index e2688368..f6d9506c 100644 --- a/test/viewmodel/theme_selector/theme_selector_viewmodel_test.mocks.dart +++ b/test/viewmodel/theme_selector/theme_selector_viewmodel_test.mocks.dart @@ -421,6 +421,24 @@ class MockMainNavigator extends _i1.Mock implements _i9.MainNavigator { returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override + _i5.Future goToLogDetailScreen({ + required String? date, + _i2.Key? key, + }) => + (super.noSuchMethod( + Invocation.method( + #goToLogDetailScreen, + [], + { + #date: date, + #key: key, + }, + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + @override _i5.Future goToTodoAddScreen({_i2.Key? key}) => (super.noSuchMethod( Invocation.method( @@ -432,6 +450,17 @@ class MockMainNavigator extends _i1.Mock implements _i9.MainNavigator { returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override + _i5.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( + Invocation.method( + #goToLogsScreen, + [], + {#key: key}, + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + @override _i5.Future goToAnalyticsPermissionScreen({_i2.Key? key}) => (super.noSuchMethod( @@ -489,35 +518,6 @@ class MockMainNavigator extends _i1.Mock implements _i9.MainNavigator { returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override - _i5.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( - Invocation.method( - #goToLogsScreen, - [], - {#key: key}, - ), - returnValue: _i5.Future.value(), - returnValueForMissingStub: _i5.Future.value(), - ) as _i5.Future); - - @override - _i5.Future goToLogDetailScreen({ - required String? date, - _i2.Key? key, - }) => - (super.noSuchMethod( - Invocation.method( - #goToLogDetailScreen, - [], - { - #date: date, - #key: key, - }, - ), - returnValue: _i5.Future.value(), - returnValueForMissingStub: _i5.Future.value(), - ) as _i5.Future); - @override void goBack() => super.noSuchMethod( Invocation.method( diff --git a/test/viewmodel/todo/todo_add/todo_add_viewmodel_test.mocks.dart b/test/viewmodel/todo/todo_add/todo_add_viewmodel_test.mocks.dart index 2e94efc1..ff1a0bb2 100644 --- a/test/viewmodel/todo/todo_add/todo_add_viewmodel_test.mocks.dart +++ b/test/viewmodel/todo/todo_add/todo_add_viewmodel_test.mocks.dart @@ -225,6 +225,24 @@ class MockMainNavigator extends _i1.Mock implements _i6.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future goToLogDetailScreen({ + required String? date, + _i2.Key? key, + }) => + (super.noSuchMethod( + Invocation.method( + #goToLogDetailScreen, + [], + { + #date: date, + #key: key, + }, + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future goToTodoAddScreen({_i2.Key? key}) => (super.noSuchMethod( Invocation.method( @@ -236,6 +254,17 @@ class MockMainNavigator extends _i1.Mock implements _i6.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( + Invocation.method( + #goToLogsScreen, + [], + {#key: key}, + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future goToAnalyticsPermissionScreen({_i2.Key? key}) => (super.noSuchMethod( @@ -293,35 +322,6 @@ class MockMainNavigator extends _i1.Mock implements _i6.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); - @override - _i4.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( - Invocation.method( - #goToLogsScreen, - [], - {#key: key}, - ), - returnValue: _i4.Future.value(), - returnValueForMissingStub: _i4.Future.value(), - ) as _i4.Future); - - @override - _i4.Future goToLogDetailScreen({ - required String? date, - _i2.Key? key, - }) => - (super.noSuchMethod( - Invocation.method( - #goToLogDetailScreen, - [], - { - #date: date, - #key: key, - }, - ), - returnValue: _i4.Future.value(), - returnValueForMissingStub: _i4.Future.value(), - ) as _i4.Future); - @override void goBack() => super.noSuchMethod( Invocation.method( diff --git a/test/viewmodel/todo/todo_list/todo_list_viewmodel_test.mocks.dart b/test/viewmodel/todo/todo_list/todo_list_viewmodel_test.mocks.dart index 9d6b0744..52e169ce 100644 --- a/test/viewmodel/todo/todo_list/todo_list_viewmodel_test.mocks.dart +++ b/test/viewmodel/todo/todo_list/todo_list_viewmodel_test.mocks.dart @@ -225,6 +225,24 @@ class MockMainNavigator extends _i1.Mock implements _i6.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future goToLogDetailScreen({ + required String? date, + _i2.Key? key, + }) => + (super.noSuchMethod( + Invocation.method( + #goToLogDetailScreen, + [], + { + #date: date, + #key: key, + }, + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future goToTodoAddScreen({_i2.Key? key}) => (super.noSuchMethod( Invocation.method( @@ -236,6 +254,17 @@ class MockMainNavigator extends _i1.Mock implements _i6.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( + Invocation.method( + #goToLogsScreen, + [], + {#key: key}, + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future goToAnalyticsPermissionScreen({_i2.Key? key}) => (super.noSuchMethod( @@ -293,35 +322,6 @@ class MockMainNavigator extends _i1.Mock implements _i6.MainNavigator { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); - @override - _i4.Future goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod( - Invocation.method( - #goToLogsScreen, - [], - {#key: key}, - ), - returnValue: _i4.Future.value(), - returnValueForMissingStub: _i4.Future.value(), - ) as _i4.Future); - - @override - _i4.Future goToLogDetailScreen({ - required String? date, - _i2.Key? key, - }) => - (super.noSuchMethod( - Invocation.method( - #goToLogDetailScreen, - [], - { - #date: date, - #key: key, - }, - ), - returnValue: _i4.Future.value(), - returnValueForMissingStub: _i4.Future.value(), - ) as _i4.Future); - @override void goBack() => super.noSuchMethod( Invocation.method(