From e8bb9a3934e90842cd8776628aa9d518fd04e739 Mon Sep 17 00:00:00 2001 From: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Date: Fri, 18 Oct 2024 09:19:39 +0530 Subject: [PATCH] refactor: update global states to ValueNotifiers --- .../modules/login/states/login_page.state.dart | 4 ++-- .../modules/login/widgets/login_form.widget.dart | 7 +++---- .../presentation/router/pages/splash_screen.page.dart | 2 +- .../lib/presentation/states/current_user.state.dart | 8 ++++---- .../presentation/states/gallery_permission.state.dart | 4 ++-- .../server_info/server_feature_config.state.dart | 10 +++++----- mobile-v2/lib/service_locator.dart | 8 ++++---- 7 files changed, 21 insertions(+), 22 deletions(-) diff --git a/mobile-v2/lib/presentation/modules/login/states/login_page.state.dart b/mobile-v2/lib/presentation/modules/login/states/login_page.state.dart index 68f6406885..d61a808400 100644 --- a/mobile-v2/lib/presentation/modules/login/states/login_page.state.dart +++ b/mobile-v2/lib/presentation/modules/login/states/login_page.state.dart @@ -73,7 +73,7 @@ class LoginPageCubit extends Cubit with LogMixin { ServiceLocator.registerPostGlobalStates(); // Fetch server features - await di().getFeatures(); + await di().getFeatures(); emit(state.copyWith(isServerValidated: true)); } finally { @@ -141,7 +141,7 @@ class LoginPageCubit extends Cubit with LogMixin { await di().upsert(user); // Remove and Sync assets in background await di().deleteAll(); - await di().requestPermission(); + await di().requestPermission(); unawaited(di().performFullRemoteSyncIsolate(user)); unawaited(di().performFullDeviceSyncIsolate()); diff --git a/mobile-v2/lib/presentation/modules/login/widgets/login_form.widget.dart b/mobile-v2/lib/presentation/modules/login/widgets/login_form.widget.dart index e3639e6119..44217e1ff7 100644 --- a/mobile-v2/lib/presentation/modules/login/widgets/login_form.widget.dart +++ b/mobile-v2/lib/presentation/modules/login/widgets/login_form.widget.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:immich_mobile/domain/models/server-info/server_feature_config.model.dart'; import 'package:immich_mobile/i18n/strings.g.dart'; import 'package:immich_mobile/presentation/components/common/gap.widget.dart'; import 'package:immich_mobile/presentation/components/common/loading_indicator.widget.dart'; @@ -132,9 +131,9 @@ class _CredentialsFormState extends State<_CredentialsForm> { selector: (model) => model.isValidationInProgress, builder: (_, isValidationInProgress) => isValidationInProgress ? const ImLoadingIndicator() - : BlocBuilder( - bloc: di(), - builder: (_, state) => Column( + : ValueListenableBuilder( + valueListenable: di(), + builder: (_, state, __) => Column( crossAxisAlignment: CrossAxisAlignment.stretch, mainAxisSize: MainAxisSize.min, children: [ diff --git a/mobile-v2/lib/presentation/router/pages/splash_screen.page.dart b/mobile-v2/lib/presentation/router/pages/splash_screen.page.dart index 2a8b0464c9..7de2f5c490 100644 --- a/mobile-v2/lib/presentation/router/pages/splash_screen.page.dart +++ b/mobile-v2/lib/presentation/router/pages/splash_screen.page.dart @@ -54,7 +54,7 @@ class _SplashScreenState extends State Future _tryLogin() async { if (await di().tryAutoLogin() && mounted) { unawaited(di() - .performFullRemoteSyncIsolate(di().state)); + .performFullRemoteSyncIsolate(di().value)); unawaited(di().performFullDeviceSyncIsolate()); unawaited(context.replaceRoute(const TabControllerRoute())); } else { diff --git a/mobile-v2/lib/presentation/states/current_user.state.dart b/mobile-v2/lib/presentation/states/current_user.state.dart index 19eab03e5f..74523fac48 100644 --- a/mobile-v2/lib/presentation/states/current_user.state.dart +++ b/mobile-v2/lib/presentation/states/current_user.state.dart @@ -1,8 +1,8 @@ -import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter/foundation.dart'; import 'package:immich_mobile/domain/models/user.model.dart'; -class CurrentUserCubit extends Cubit { - CurrentUserCubit(super.initialState); +class CurrentUserProvider extends ValueNotifier { + CurrentUserProvider(super.initialState); - void updateUser(User user) => emit(user); + void updateUser(User user) => value = user; } diff --git a/mobile-v2/lib/presentation/states/gallery_permission.state.dart b/mobile-v2/lib/presentation/states/gallery_permission.state.dart index ab912f9cbe..47d3783a9b 100644 --- a/mobile-v2/lib/presentation/states/gallery_permission.state.dart +++ b/mobile-v2/lib/presentation/states/gallery_permission.state.dart @@ -15,8 +15,8 @@ enum GalleryPermissionStatus { bool get isLimited => this == GalleryPermissionStatus.limited; } -class GalleryPermissionNotifier extends ValueNotifier { - GalleryPermissionNotifier() : super(GalleryPermissionStatus.yetToRequest) { +class GalleryPermissionProvider extends ValueNotifier { + GalleryPermissionProvider() : super(GalleryPermissionStatus.yetToRequest) { checkPermission(); } diff --git a/mobile-v2/lib/presentation/states/server_info/server_feature_config.state.dart b/mobile-v2/lib/presentation/states/server_info/server_feature_config.state.dart index a4c595872c..e45e316a13 100644 --- a/mobile-v2/lib/presentation/states/server_info/server_feature_config.state.dart +++ b/mobile-v2/lib/presentation/states/server_info/server_feature_config.state.dart @@ -1,11 +1,11 @@ -import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter/foundation.dart'; import 'package:immich_mobile/domain/models/server-info/server_feature_config.model.dart'; import 'package:immich_mobile/domain/services/server_info.service.dart'; -class ServerFeatureConfigCubit extends Cubit { +class ServerFeatureConfigProvider extends ValueNotifier { final ServerInfoService _serverInfoService; - ServerFeatureConfigCubit(this._serverInfoService) + ServerFeatureConfigProvider(this._serverInfoService) : super(const ServerFeatureConfig.reset()); Future getFeatures() async => @@ -14,14 +14,14 @@ class ServerFeatureConfigCubit extends Cubit { Future _getFeatures() async { final features = await _serverInfoService.getServerFeatures(); if (features != null) { - emit(state.copyWith(features: features)); + value = value.copyWith(features: features); } } Future _getConfig() async { final config = await _serverInfoService.getServerConfig(); if (config != null) { - emit(state.copyWith(config: config)); + value = value.copyWith(config: config); } } } diff --git a/mobile-v2/lib/service_locator.dart b/mobile-v2/lib/service_locator.dart index 31d079e166..4210f6f7c6 100644 --- a/mobile-v2/lib/service_locator.dart +++ b/mobile-v2/lib/service_locator.dart @@ -120,7 +120,7 @@ class ServiceLocator { static void _registerPreGlobalStates() { _registerSingleton(AppRouter()); _registerLazySingleton(() => AppThemeCubit(di())); - _registerSingleton(GalleryPermissionNotifier()); + _registerSingleton(GalleryPermissionProvider()); } static void registerApiClient(String endpoint) { @@ -138,12 +138,12 @@ class ServiceLocator { } static void registerPostGlobalStates() { - _registerLazySingleton( - () => ServerFeatureConfigCubit(di()), + _registerLazySingleton( + () => ServerFeatureConfigProvider(di()), ); } static void registerCurrentUser(User user) { - _registerSingleton(CurrentUserCubit(user)); + _registerSingleton(CurrentUserProvider(user)); } }