2020-04-05 12:22:38 +00:00
|
|
|
import 'package:dio/dio.dart';
|
|
|
|
import 'package:logger/logger.dart';
|
|
|
|
import 'package:myapp/core/constants.dart' as Constants;
|
2020-04-17 08:17:37 +00:00
|
|
|
import 'package:myapp/db/db_helper.dart';
|
2020-04-05 12:22:38 +00:00
|
|
|
|
|
|
|
import 'models/face.dart';
|
2020-04-17 08:17:37 +00:00
|
|
|
import 'models/photo.dart';
|
2020-04-05 12:22:38 +00:00
|
|
|
|
|
|
|
class FaceSearchManager {
|
|
|
|
final _logger = Logger();
|
|
|
|
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
|
|
|
|
.get(Constants.ENDPOINT + "/faces",
|
|
|
|
queryParameters: {"user": Constants.USER})
|
|
|
|
.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(
|
|
|
|
Constants.ENDPOINT + "/search/face/" + face.faceID.toString(),
|
|
|
|
queryParameters: {"user": Constants.USER}).then((response) => (response
|
|
|
|
.data["results"] as List)
|
|
|
|
.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) {
|
|
|
|
_logger.e(error);
|
|
|
|
}
|
|
|
|
}
|