Merge 62856cd501 into 911dde39c9
commit
597afd4664
|
|
@ -55,6 +55,7 @@ class Preferences {
|
|||
final bool tagsEnabled;
|
||||
final AvatarColor userAvatarColor;
|
||||
final bool showSupportBadge;
|
||||
final int minimumFaces;
|
||||
|
||||
const Preferences({
|
||||
this.foldersEnabled = false,
|
||||
|
|
@ -65,6 +66,7 @@ class Preferences {
|
|||
this.tagsEnabled = false,
|
||||
this.userAvatarColor = AvatarColor.primary,
|
||||
this.showSupportBadge = true,
|
||||
this.minimumFaces = 3,
|
||||
});
|
||||
|
||||
Preferences copyWith({
|
||||
|
|
@ -76,6 +78,7 @@ class Preferences {
|
|||
bool? tagsEnabled,
|
||||
AvatarColor? userAvatarColor,
|
||||
bool? showSupportBadge,
|
||||
int? minimumFaces,
|
||||
}) {
|
||||
return Preferences(
|
||||
foldersEnabled: foldersEnabled ?? this.foldersEnabled,
|
||||
|
|
@ -86,6 +89,7 @@ class Preferences {
|
|||
tagsEnabled: tagsEnabled ?? this.tagsEnabled,
|
||||
userAvatarColor: userAvatarColor ?? this.userAvatarColor,
|
||||
showSupportBadge: showSupportBadge ?? this.showSupportBadge,
|
||||
minimumFaces: minimumFaces ?? this.minimumFaces,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -99,6 +103,7 @@ class Preferences {
|
|||
preferences["tags-Enabled"] = tagsEnabled;
|
||||
preferences["avatar-Color"] = userAvatarColor.value;
|
||||
preferences["purchase-ShowSupportBadge"] = showSupportBadge;
|
||||
preferences["minimumFaces"] = minimumFaces;
|
||||
return preferences;
|
||||
}
|
||||
|
||||
|
|
@ -115,6 +120,7 @@ class Preferences {
|
|||
orElse: () => AvatarColor.primary,
|
||||
),
|
||||
showSupportBadge: (map["purchase"] as Map<String, Object?>?)?["showSupportBadge"] as bool? ?? true,
|
||||
minimumFaces: (map["people"] as Map<String, Object?>?)?["minimumFaces"] as int? ?? 3,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -129,6 +135,7 @@ sharedLinksEnabled: $sharedLinksEnabled,
|
|||
tagsEnabled: $tagsEnabled,
|
||||
userAvatarColor: $userAvatarColor,
|
||||
showSupportBadge: $showSupportBadge,
|
||||
minimumFaces: $minimumFaces,
|
||||
}''';
|
||||
}
|
||||
|
||||
|
|
@ -145,7 +152,8 @@ showSupportBadge: $showSupportBadge,
|
|||
other.sharedLinksEnabled == sharedLinksEnabled &&
|
||||
other.tagsEnabled == tagsEnabled &&
|
||||
other.userAvatarColor == userAvatarColor &&
|
||||
other.showSupportBadge == showSupportBadge;
|
||||
other.showSupportBadge == showSupportBadge &&
|
||||
other.minimumFaces == minimumFaces;
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
@ -157,7 +165,8 @@ showSupportBadge: $showSupportBadge,
|
|||
sharedLinksEnabled.hashCode ^
|
||||
tagsEnabled.hashCode ^
|
||||
userAvatarColor.hashCode ^
|
||||
showSupportBadge.hashCode;
|
||||
showSupportBadge.hashCode ^
|
||||
minimumFaces.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ class DriftPeopleService {
|
|||
return _repository.getAssetPeople(assetId);
|
||||
}
|
||||
|
||||
Future<List<DriftPerson>> getAllPeople() {
|
||||
return _repository.getAllPeople();
|
||||
Future<List<DriftPerson>> getAllPeople({int minFaces = 3}) {
|
||||
return _repository.getAllPeople(minFaces: minFaces);
|
||||
}
|
||||
|
||||
Future<int> updateName(String personId, String name) async {
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ class DriftPeopleRepository extends DriftDatabaseRepository {
|
|||
}).get();
|
||||
}
|
||||
|
||||
Future<List<DriftPerson>> getAllPeople() async {
|
||||
Future<List<DriftPerson>> getAllPeople({int minFaces = 3}) async {
|
||||
final people = _db.personEntity;
|
||||
final faces = _db.assetFaceEntity;
|
||||
final assets = _db.remoteAssetEntity;
|
||||
|
|
@ -49,7 +49,7 @@ class DriftPeopleRepository extends DriftDatabaseRepository {
|
|||
faces.isVisible.equals(true) &
|
||||
faces.deletedAt.isNull(),
|
||||
)
|
||||
..groupBy([people.id], having: faces.id.count().isBiggerOrEqualValue(3) | people.name.equals('').not())
|
||||
..groupBy([people.id], having: faces.id.count().isBiggerOrEqualValue(minFaces) | people.name.equals('').not())
|
||||
..orderBy([
|
||||
OrderingTerm(expression: people.name.equals('').not(), mode: OrderingMode.desc),
|
||||
OrderingTerm(expression: faces.id.count(), mode: OrderingMode.desc),
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:immich_mobile/domain/models/person.model.dart';
|
|||
import 'package:immich_mobile/domain/services/people.service.dart';
|
||||
import 'package:immich_mobile/infrastructure/repositories/people.repository.dart';
|
||||
import 'package:immich_mobile/providers/infrastructure/db.provider.dart';
|
||||
import 'package:immich_mobile/providers/infrastructure/user_metadata.provider.dart';
|
||||
import 'package:immich_mobile/repositories/person_api.repository.dart';
|
||||
|
||||
final driftPeopleRepositoryProvider = Provider<DriftPeopleRepository>(
|
||||
|
|
@ -20,5 +21,6 @@ final driftPeopleAssetProvider = FutureProvider.family<List<DriftPerson>, String
|
|||
|
||||
final driftGetAllPeopleProvider = FutureProvider<List<DriftPerson>>((ref) async {
|
||||
final service = ref.watch(driftPeopleServiceProvider);
|
||||
return service.getAllPeople();
|
||||
final prefs = await ref.watch(userMetadataPreferencesProvider.future);
|
||||
return service.getAllPeople(minFaces: prefs?.minimumFaces ?? 3);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:collection/collection.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/domain/models/user_metadata.model.dart';
|
||||
import 'package:immich_mobile/infrastructure/repositories/user_metadata.repository.dart';
|
||||
|
|
@ -19,6 +20,5 @@ final userMetadataProvider = FutureProvider<List<UserMetadata>>((ref) async {
|
|||
|
||||
final userMetadataPreferencesProvider = FutureProvider<Preferences?>((ref) async {
|
||||
final metadataList = await ref.watch(userMetadataProvider.future);
|
||||
final metadataWithPrefs = metadataList.firstWhere((meta) => meta.preferences != null);
|
||||
return metadataWithPrefs.preferences;
|
||||
return metadataList.firstWhereOrNull((meta) => meta.preferences != null)?.preferences;
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue