ente/lib/face_search_manager.dart

43 lines
1.4 KiB
Dart
Raw Normal View History

2020-04-05 12:22:38 +00:00
import 'package:dio/dio.dart';
import 'package:photos/core/configuration.dart';
import 'package:photos/db/db_helper.dart';
2020-05-02 16:28:54 +00:00
import 'package:logging/logging.dart';
2020-04-05 12:22:38 +00:00
import 'package:photos/models/face.dart';
import 'package:photos/models/photo.dart';
2020-04-05 12:22:38 +00:00
class FaceSearchManager {
2020-05-02 16:28:54 +00:00
final logger = Logger("FaceSearchManager");
2020-04-05 12:22:38 +00:00
final _dio = Dio();
2020-04-05 14:00:44 +00:00
FaceSearchManager._privateConstructor();
static final FaceSearchManager instance =
FaceSearchManager._privateConstructor();
2020-04-05 12:22:38 +00:00
Future<List<Face>> getFaces() {
return _dio
2020-05-08 20:08:01 +00:00
.get(Configuration.instance.getHttpEndpoint() + "/photos/faces",
2020-05-01 17:59:50 +00:00
queryParameters: {"token": Configuration.instance.getToken()})
2020-04-05 12:22:38 +00:00
.then((response) => (response.data["faces"] as List)
.map((face) => new Face.fromJson(face))
.toList())
.catchError(_onError);
}
2020-04-17 08:17:37 +00:00
Future<List<Photo>> getFaceSearchResults(Face face) async {
var futures = _dio.get(
2020-04-30 15:18:26 +00:00
Configuration.instance.getHttpEndpoint() +
2020-05-08 20:08:01 +00:00
"/photos/search/face/" +
2020-04-30 15:18:26 +00:00
face.faceID.toString(),
queryParameters: {
"token": Configuration.instance.getToken(),
}).then((response) => (response.data["results"] as List)
2020-04-17 08:17:37 +00:00
.map((result) => (DatabaseHelper.instance.getPhotoByPath(result))));
return Future.wait(await futures);
2020-04-05 14:00:44 +00:00
}
2020-04-05 12:22:38 +00:00
void _onError(error) {
2020-05-02 16:28:54 +00:00
logger.severe(error);
2020-04-05 12:22:38 +00:00
}
}