diff --git a/mobile/lib/app.dart b/mobile/lib/app.dart index f9f73d766b..d368c1d701 100644 --- a/mobile/lib/app.dart +++ b/mobile/lib/app.dart @@ -13,6 +13,7 @@ import 'package:media_extension/media_extension_action_types.dart'; import 'package:photos/ente_theme_data.dart'; import "package:photos/generated/l10n.dart"; import "package:photos/l10n/l10n.dart"; +import "package:photos/service_locator.dart"; import 'package:photos/services/app_lifecycle_service.dart'; import "package:photos/services/home_widget_service.dart"; import "package:photos/services/machine_learning/machine_learning_controller.dart"; @@ -96,7 +97,7 @@ class _EnteAppState extends State with WidgetsBindingObserver { if (Platform.isAndroid || kDebugMode) { return Listener( onPointerDown: (event) { - MachineLearningController.instance.onUserInteraction(); + machineLearningController.onUserInteraction(); }, child: AdaptiveTheme( light: lightThemeData, @@ -126,7 +127,7 @@ class _EnteAppState extends State with WidgetsBindingObserver { } else { return Listener( onPointerDown: (event) { - MachineLearningController.instance.onUserInteraction(); + machineLearningController.onUserInteraction(); }, child: MaterialApp( title: "ente", diff --git a/mobile/lib/main.dart b/mobile/lib/main.dart index 74ad7a99f4..2270b0cabd 100644 --- a/mobile/lib/main.dart +++ b/mobile/lib/main.dart @@ -282,8 +282,6 @@ Future _init(bool isBackground, {String via = ''}) async { } _logger.info("PushService/HomeWidget done $tlog"); unawaited(SemanticSearchService.instance.init()); - MachineLearningController.instance.init(); - _logger.info("MachineLearningController done $tlog"); unawaited(MLService.instance.init()); PersonService.init( entityService, diff --git a/mobile/lib/service_locator.dart b/mobile/lib/service_locator.dart index 2f023e229b..d3bde456ff 100644 --- a/mobile/lib/service_locator.dart +++ b/mobile/lib/service_locator.dart @@ -7,6 +7,7 @@ import "package:photos/gateways/entity_gw.dart"; import "package:photos/services/billing_service.dart"; import "package:photos/services/entity_service.dart"; import "package:photos/services/location_service.dart"; +import "package:photos/services/machine_learning/machine_learning_controller.dart"; import "package:photos/services/magic_cache_service.dart"; import "package:photos/services/storage_bonus_service.dart"; import "package:photos/services/trash_sync_service.dart"; @@ -123,3 +124,9 @@ BillingService get billingService { ); return _billingService!; } + +MachineLearningController? _machineLearningController; +MachineLearningController get machineLearningController { + _machineLearningController ??= MachineLearningController(); + return _machineLearningController!; +} diff --git a/mobile/lib/services/machine_learning/machine_learning_controller.dart b/mobile/lib/services/machine_learning/machine_learning_controller.dart index ee8ecc67f3..09503185cc 100644 --- a/mobile/lib/services/machine_learning/machine_learning_controller.dart +++ b/mobile/lib/services/machine_learning/machine_learning_controller.dart @@ -11,9 +11,6 @@ import "package:photos/events/machine_learning_control_event.dart"; class MachineLearningController { MachineLearningController._privateConstructor(); - static final MachineLearningController instance = - MachineLearningController._privateConstructor(); - final _logger = Logger("MachineLearningController"); static const kMaximumTemperature = 42; // 42 degree celsius @@ -29,8 +26,8 @@ class MachineLearningController { bool get isDeviceHealthy => _isDeviceHealthy; - void init() { - _logger.info('init called'); + MachineLearningController() { + _logger.info('MachineLearningController constructor'); _startInteractionTimer(kDefaultInteractionTimeout); if (Platform.isIOS) { BatteryInfoPlugin() diff --git a/mobile/lib/ui/settings/ml/machine_learning_settings_page.dart b/mobile/lib/ui/settings/ml/machine_learning_settings_page.dart index 67b8235421..ec873100ca 100644 --- a/mobile/lib/ui/settings/ml/machine_learning_settings_page.dart +++ b/mobile/lib/ui/settings/ml/machine_learning_settings_page.dart @@ -7,7 +7,6 @@ import "package:photos/l10n/l10n.dart"; import "package:photos/service_locator.dart"; import "package:photos/services/machine_learning/face_ml/face_detection/face_detection_service.dart"; import "package:photos/services/machine_learning/face_ml/face_embedding/face_embedding_service.dart"; -import "package:photos/services/machine_learning/machine_learning_controller.dart"; import "package:photos/services/machine_learning/ml_service.dart"; import "package:photos/services/machine_learning/semantic_search/clip/clip_image_encoder.dart"; import "package:photos/services/machine_learning/semantic_search/clip/clip_text_encoder.dart"; @@ -52,7 +51,7 @@ class _MachineLearningSettingsPageState void initState() { super.initState(); _wakeLock.enable(); - MachineLearningController.instance.forceOverrideML(turnOn: true); + machineLearningController.forceOverrideML(turnOn: true); if (!MLService.instance.areModelsDownloaded) { _timer = Timer.periodic(const Duration(seconds: 10), (timer) { if (mounted) { @@ -69,7 +68,7 @@ class _MachineLearningSettingsPageState void dispose() { super.dispose(); _wakeLock.disable(); - MachineLearningController.instance.forceOverrideML(turnOn: false); + machineLearningController.forceOverrideML(turnOn: false); _timer?.cancel(); _advancedOptionsTimer?.cancel(); } @@ -424,7 +423,7 @@ class MLStatusWidgetState extends State { builder: (context, snapshot) { if (snapshot.hasData) { final bool isDeviceHealthy = - MachineLearningController.instance.isDeviceHealthy; + machineLearningController.isDeviceHealthy; final int indexedFiles = snapshot.data!.indexedItems; final int pendingFiles = snapshot.data!.pendingItems; final bool hasWifi = snapshot.data!.hasWifiEnabled!;