[mob] ServiceLocator for EntityService

This commit is contained in:
Neeraj Gupta
2024-10-17 15:44:34 +05:30
parent 08b07cdcf1
commit 787f2908da
8 changed files with 35 additions and 30 deletions

View File

@@ -29,7 +29,6 @@ import "package:photos/service_locator.dart";
import 'package:photos/services/app_lifecycle_service.dart';
import 'package:photos/services/billing_service.dart';
import 'package:photos/services/collections_service.dart';
import "package:photos/services/entity_service.dart";
import 'package:photos/services/favorites_service.dart';
import "package:photos/services/filedata/filedata_service.dart";
import 'package:photos/services/home_widget_service.dart';
@@ -245,10 +244,6 @@ Future<void> _init(bool isBackground, {String via = ''}) async {
await UserService.instance.init();
_logger.info("UserService init done");
_logger.info("EntityService init");
await EntityService.instance.init();
_logger.info("EntityService init done");
_logger.info("LocationService init");
LocationService.instance.init(preferences);
_logger.info("LocationService init done");
@@ -308,7 +303,7 @@ Future<void> _init(bool isBackground, {String via = ''}) async {
_logger.info("MachineLearningController done");
unawaited(MLService.instance.init());
PersonService.init(
EntityService.instance,
entityService,
MLDataDB.instance,
preferences,
);

View File

@@ -3,6 +3,8 @@ import "package:ente_cast/ente_cast.dart";
import "package:ente_cast_normal/ente_cast_normal.dart";
import "package:ente_feature_flag/ente_feature_flag.dart";
import "package:package_info_plus/package_info_plus.dart";
import "package:photos/gateways/entity_gw.dart";
import "package:photos/services/entity_service.dart";
import "package:photos/services/storage_bonus_service.dart";
import "package:photos/services/update_service.dart";
import "package:photos/utils/local_settings.dart";
@@ -26,6 +28,7 @@ class ServiceLocator {
}
FlagService? _flagService;
FlagService get flagService {
_flagService ??= FlagService(
ServiceLocator.instance.prefs,
@@ -35,6 +38,7 @@ FlagService get flagService {
}
CastService? _castService;
CastService get castService {
_castService ??= CastServiceImpl();
return _castService!;
@@ -56,6 +60,7 @@ StorageBonusService get storageBonusService {
}
UpdateService? _updateService;
UpdateService get updateService {
_updateService ??= UpdateService(
ServiceLocator.instance.prefs,
@@ -63,3 +68,13 @@ UpdateService get updateService {
);
return _updateService!;
}
EntityService? _entityService;
EntityService get entityService {
_entityService ??= EntityService(
ServiceLocator.instance.prefs,
EntityGateway(ServiceLocator.instance.enteDio),
);
return _entityService!;
}

View File

@@ -5,7 +5,6 @@ import 'dart:math';
import 'package:flutter/foundation.dart';
import 'package:logging/logging.dart';
import "package:photos/core/configuration.dart";
import "package:photos/core/network/network.dart";
import "package:photos/db/entities_db.dart";
import "package:photos/db/files_db.dart";
import "package:photos/gateways/entity_gw.dart";
@@ -20,19 +19,13 @@ import 'package:shared_preferences/shared_preferences.dart';
class EntityService {
static const int fetchLimit = 500;
final _logger = Logger((EntityService).toString());
final SharedPreferences _prefs;
final EntityGateway _gateway;
final _config = Configuration.instance;
late SharedPreferences _prefs;
late EntityGateway _gateway;
late FilesDB _db;
late final FilesDB _db = FilesDB.instance;
EntityService._privateConstructor();
static final EntityService instance = EntityService._privateConstructor();
Future<void> init() async {
_prefs = await SharedPreferences.getInstance();
_db = FilesDB.instance;
_gateway = EntityGateway(NetworkClient.instance.enteDio);
EntityService(this._prefs, this._gateway) {
debugPrint("EntityService constructor");
}
String _getEntityKeyPrefix(EntityType type) {

View File

@@ -13,7 +13,7 @@ import "package:photos/models/file/file.dart";
import "package:photos/models/local_entity_data.dart";
import "package:photos/models/location/location.dart";
import 'package:photos/models/location_tag/location_tag.dart';
import "package:photos/services/entity_service.dart";
import "package:photos/service_locator.dart";
import "package:photos/services/remote_assets_service.dart";
import "package:shared_preferences/shared_preferences.dart";
@@ -36,7 +36,7 @@ class LocationService {
}
Future<Iterable<LocalEntity<LocationTag>>> _getStoredLocationTags() async {
final data = await EntityService.instance.getEntities(EntityType.location);
final data = await entityService.getEntities(EntityType.location);
return data.map(
(e) => LocalEntity(LocationTag.fromJson(json.decode(e.data)), e.id),
);
@@ -89,8 +89,8 @@ class LocationService {
bSquare: b * b,
centerPoint: centerPoint,
);
await EntityService.instance
.addOrUpdate(EntityType.location, locationTag.toJson());
await entityService.addOrUpdate(
EntityType.location, locationTag.toJson());
Bus.instance.fire(LocationTagUpdatedEvent(LocTagEventType.add));
} catch (e, s) {
_logger.severe("Failed to add location tag", e, s);
@@ -177,7 +177,7 @@ class LocationService {
name: name,
);
await EntityService.instance.addOrUpdate(
await entityService.addOrUpdate(
EntityType.location,
updatedLoationTag.toJson(),
id: locationTagEntity.id,
@@ -198,7 +198,7 @@ class LocationService {
Future<void> deleteLocationTag(String locTagEntityId) async {
try {
await EntityService.instance.deleteEntry(
await entityService.deleteEntry(
locTagEntityId,
);
Bus.instance.fire(

View File

@@ -7,7 +7,7 @@ import "package:photos/core/event_bus.dart";
import "package:photos/events/diff_sync_complete_event.dart";
import "package:photos/events/people_changed_event.dart";
import "package:photos/models/api/entity/type.dart";
import "package:photos/services/entity_service.dart";
import "package:photos/service_locator.dart";
import "package:photos/services/machine_learning/face_ml/face_detection/detection.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";
@@ -61,7 +61,7 @@ class FaceRecognitionService {
return;
}
_isSyncing = true;
await EntityService.instance.syncEntity(EntityType.cgroup);
await entityService.syncEntity(EntityType.cgroup);
if (_shouldSyncPeople) {
await PersonService.instance.reconcileClusters();
Bus.instance.fire(PeopleChangedEvent(type: PeopleEventType.syncDone));

View File

@@ -1,4 +1,5 @@
import "package:dio/dio.dart";
import "package:flutter/foundation.dart";
import "package:photos/gateways/storage_bonus_gw.dart";
import "package:photos/models/api/storage_bonus/storage_bonus.dart";
import "package:shared_preferences/shared_preferences.dart";
@@ -11,7 +12,9 @@ class StorageBonusService {
final String _showStorageBonusTapCount = "showStorageBonus.tap_count";
StorageBonusService(this.prefs, Dio enteDio)
: gateway = StorageBonusGateway(enteDio);
: gateway = StorageBonusGateway(enteDio) {
debugPrint("StorageBonusService constructor");
}
// returns true if _showStorageBonusTapCount value is less than minTapCountBeforeHidingBanner
bool shouldShowStorageBonus() {

View File

@@ -23,7 +23,7 @@ class UpdateService {
UpdateService(SharedPreferences prefs, PackageInfo packageInfo)
: _prefs = prefs,
_packageInfo = packageInfo {
debugPrint("UpdateService constructor called");
debugPrint("UpdateService constructor");
}
Future<bool> showChangeLog() async {

View File

@@ -29,7 +29,6 @@ import 'package:photos/models/selected_files.dart';
import "package:photos/service_locator.dart";
import 'package:photos/services/app_lifecycle_service.dart';
import 'package:photos/services/collections_service.dart';
import "package:photos/services/entity_service.dart";
import 'package:photos/services/local_sync_service.dart';
import "package:photos/services/notification_service.dart";
import 'package:photos/services/user_service.dart';
@@ -377,7 +376,7 @@ class _HomeWidgetState extends State<HomeWidget> {
return const LandingPageWidget();
}
if (!LocalSyncService.instance.hasGrantedPermissions()) {
EntityService.instance.syncEntities();
entityService.syncEntities();
return const GrantPermissionsWidget();
}
if (!LocalSyncService.instance.hasCompletedFirstImport()) {