Favourites
This commit is contained in:
parent
6a84a9bef0
commit
1747ab0245
23 changed files with 469 additions and 67 deletions
|
@ -7,18 +7,19 @@ import '/features/core/services/logging_service.dart';
|
|||
import '/l10n/generated/l10n.dart';
|
||||
import '/locator.dart';
|
||||
import '../abstracts/images_api.dart';
|
||||
import '../data/models/image_model.dart';
|
||||
import '../data/dtos/image_model_dto.dart';
|
||||
|
||||
class UnsplashImagesApi implements ImagesApi {
|
||||
final LoggingService _loggingService = LoggingService.locate;
|
||||
final random = Random();
|
||||
|
||||
@override
|
||||
FutureOr<Iterable<Map<String, dynamic>>> fetchImageUri({required String token}) async {
|
||||
FutureOr<Iterable<ImageModelDTO>> fetchImageUri({required String token}) async {
|
||||
// Dummy fetching delay emulation
|
||||
await Future.delayed(const Duration(
|
||||
milliseconds: ConstValues.defaultEmulatedLatencyMillis * ConstValues.numberOfImages));
|
||||
|
||||
final Iterable<Map<String, dynamic>> fetchedImageModelDtos;
|
||||
try {
|
||||
// Create fixed number of images
|
||||
final dummyImageModels =
|
||||
|
@ -29,7 +30,7 @@ class UnsplashImagesApi implements ImagesApi {
|
|||
|
||||
final imageUri = _imageUrlGenerator(imageSide: imageSide);
|
||||
|
||||
return ImageModel(
|
||||
return ImageModelDTO(
|
||||
imageIndex: imageIndex,
|
||||
uri: imageUri,
|
||||
// Custom dummy name for the image
|
||||
|
@ -39,15 +40,19 @@ class UnsplashImagesApi implements ImagesApi {
|
|||
});
|
||||
|
||||
// Emulating serialization
|
||||
return dummyImageModels.map((final dummyModel) => dummyModel.toJson());
|
||||
fetchedImageModelDtos = dummyImageModels.map((final dummyModel) => dummyModel.toJson());
|
||||
} on Exception catch (ex, stackTrace) {
|
||||
_loggingService.handleException(ex, stackTrace);
|
||||
return const Iterable.empty();
|
||||
}
|
||||
|
||||
// Emulating deserialization
|
||||
return fetchedImageModelDtos
|
||||
.map((final emulatedModelSerialized) => ImageModelDTO.fromJson(emulatedModelSerialized));
|
||||
}
|
||||
|
||||
@override
|
||||
FutureOr<Iterable<Map<String, dynamic>>> searchImages({
|
||||
FutureOr<Iterable<ImageModelDTO>> searchImages({
|
||||
required String searchStr,
|
||||
required String token,
|
||||
}) async {
|
||||
|
@ -57,6 +62,7 @@ class UnsplashImagesApi implements ImagesApi {
|
|||
await Future.delayed(
|
||||
Duration(milliseconds: ConstValues.defaultEmulatedLatencyMillis * numberOfResults));
|
||||
|
||||
final Iterable<Map<String, dynamic>> searchImageModelDtos;
|
||||
try {
|
||||
// Create (randomly-bounded) dummy number of images
|
||||
final dummyImageModels = Iterable<int>.generate(numberOfResults).map((final imageIndex) {
|
||||
|
@ -66,7 +72,7 @@ class UnsplashImagesApi implements ImagesApi {
|
|||
|
||||
final imageUri = _imageUrlGenerator(imageSide: imageSide);
|
||||
|
||||
return ImageModel(
|
||||
return ImageModelDTO(
|
||||
imageIndex: imageIndex,
|
||||
uri: imageUri,
|
||||
// Custom dummy name for the image
|
||||
|
@ -75,11 +81,14 @@ class UnsplashImagesApi implements ImagesApi {
|
|||
});
|
||||
|
||||
// Emulating serialization
|
||||
return dummyImageModels.map((final dummyModel) => dummyModel.toJson());
|
||||
searchImageModelDtos = dummyImageModels.map((final dummyModel) => dummyModel.toJson());
|
||||
} on Exception catch (ex, stackTrace) {
|
||||
_loggingService.handleException(ex, stackTrace);
|
||||
return List.empty();
|
||||
}
|
||||
|
||||
return searchImageModelDtos
|
||||
.map((final emulatedModelSerialized) => ImageModelDTO.fromJson(emulatedModelSerialized));
|
||||
}
|
||||
|
||||
Uri _imageUrlGenerator({required int imageSide}) => Uri(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue