diff --git a/lib/09_use_case/data/mapper/photo_mapper.dart b/lib/09_use_case/data/mapper/photo_mapper.dart index d270330..8239c48 100644 --- a/lib/09_use_case/data/mapper/photo_mapper.dart +++ b/lib/09_use_case/data/mapper/photo_mapper.dart @@ -1,5 +1,5 @@ import '../dto/photo_result_dto.dart'; -import '../model/photo.dart'; +import '../../domain/model/photo.dart'; extension ToPhoto on Hits { Photo toPhoto() { diff --git a/lib/09_use_case/data/repository/photo_repository_impl.dart b/lib/09_use_case/data/repository/photo_repository_impl.dart index eef458b..f511b17 100644 --- a/lib/09_use_case/data/repository/photo_repository_impl.dart +++ b/lib/09_use_case/data/repository/photo_repository_impl.dart @@ -1,9 +1,9 @@ import 'package:learn_flutter_together/09_use_case/data/data_source/photo_data_source.dart'; import 'package:learn_flutter_together/09_use_case/data/mapper/photo_mapper.dart'; -import 'package:learn_flutter_together/09_use_case/data/repository/photo_repository.dart'; +import 'package:learn_flutter_together/09_use_case/domain/repository/photo_repository.dart'; -import '../model/photo.dart'; +import '../../domain/model/photo.dart'; class PhotoRepositoryImpl implements PhotoRepository { final PhotoDataSource _photoDataSource; diff --git a/lib/09_use_case/data/model/photo.dart b/lib/09_use_case/domain/model/photo.dart similarity index 100% rename from lib/09_use_case/data/model/photo.dart rename to lib/09_use_case/domain/model/photo.dart diff --git a/lib/09_use_case/data/model/photo.freezed.dart b/lib/09_use_case/domain/model/photo.freezed.dart similarity index 100% rename from lib/09_use_case/data/model/photo.freezed.dart rename to lib/09_use_case/domain/model/photo.freezed.dart diff --git a/lib/09_use_case/data/model/photo.g.dart b/lib/09_use_case/domain/model/photo.g.dart similarity index 100% rename from lib/09_use_case/data/model/photo.g.dart rename to lib/09_use_case/domain/model/photo.g.dart diff --git a/lib/09_use_case/data/repository/photo_repository.dart b/lib/09_use_case/domain/repository/photo_repository.dart similarity index 100% rename from lib/09_use_case/data/repository/photo_repository.dart rename to lib/09_use_case/domain/repository/photo_repository.dart diff --git a/lib/09_use_case/domain/use_case/get_photos_use_case.dart b/lib/09_use_case/domain/use_case/get_photos_use_case.dart new file mode 100644 index 0000000..73d8932 --- /dev/null +++ b/lib/09_use_case/domain/use_case/get_photos_use_case.dart @@ -0,0 +1,12 @@ +import '../model/photo.dart'; +import '../repository/photo_repository.dart'; + +class GetPhotosUseCase { + final PhotoRepository _photoRepository; + + GetPhotosUseCase(this._photoRepository); + + Future> execute(String query) async { + return (await _photoRepository.getPhotos(query)).take(3).toList(); + } +} diff --git a/lib/09_use_case/main.dart b/lib/09_use_case/main.dart index b37e96a..f3b9aff 100644 --- a/lib/09_use_case/main.dart +++ b/lib/09_use_case/main.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:learn_flutter_together/09_use_case/domain/use_case/get_photos_use_case.dart'; import 'package:learn_flutter_together/09_use_case/presentation/search_list/search_list_screen.dart'; import 'package:learn_flutter_together/09_use_case/presentation/search_list/search_list_view_model.dart'; import 'package:provider/provider.dart'; @@ -24,8 +25,10 @@ class MyApp extends StatelessWidget { home: ChangeNotifierProvider( // cnp create: (_) => SearchListViewModel( - photoRepository: PhotoRepositoryImpl( - photoDataSource: PhotoDataSource(), + getPhotosUseCase: GetPhotosUseCase( + PhotoRepositoryImpl( + photoDataSource: PhotoDataSource(), + ), ), ), child: const SearchListScreen(), diff --git a/lib/09_use_case/presentation/photo_detail/photo_detail_screen.dart b/lib/09_use_case/presentation/photo_detail/photo_detail_screen.dart index d75212a..e28c4f8 100644 --- a/lib/09_use_case/presentation/photo_detail/photo_detail_screen.dart +++ b/lib/09_use_case/presentation/photo_detail/photo_detail_screen.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import '../../data/model/photo.dart'; +import '../../domain/model/photo.dart'; class PhotoDetailScreen extends StatelessWidget { final Photo photo; diff --git a/lib/09_use_case/presentation/search_list/components/image_card_widget.dart b/lib/09_use_case/presentation/search_list/components/image_card_widget.dart index d37a621..4b9d485 100644 --- a/lib/09_use_case/presentation/search_list/components/image_card_widget.dart +++ b/lib/09_use_case/presentation/search_list/components/image_card_widget.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import '../../../data/model/photo.dart'; +import '../../../domain/model/photo.dart'; class ImageCardWidget extends StatelessWidget { final Photo photo; diff --git a/lib/09_use_case/presentation/search_list/search_list_state.dart b/lib/09_use_case/presentation/search_list/search_list_state.dart index 63c7fb8..25054ec 100644 --- a/lib/09_use_case/presentation/search_list/search_list_state.dart +++ b/lib/09_use_case/presentation/search_list/search_list_state.dart @@ -1,6 +1,6 @@ import 'package:freezed_annotation/freezed_annotation.dart'; -import '../../data/model/photo.dart'; +import '../../domain/model/photo.dart'; part 'search_list_state.freezed.dart'; diff --git a/lib/09_use_case/presentation/search_list/search_list_view_model.dart b/lib/09_use_case/presentation/search_list/search_list_view_model.dart index b94d995..450b33d 100644 --- a/lib/09_use_case/presentation/search_list/search_list_view_model.dart +++ b/lib/09_use_case/presentation/search_list/search_list_view_model.dart @@ -1,13 +1,14 @@ import 'package:flutter/material.dart'; -import '../../data/repository/photo_repository.dart'; +import 'package:learn_flutter_together/09_use_case/domain/use_case/get_photos_use_case.dart'; +import '../../domain/repository/photo_repository.dart'; import 'search_list_state.dart'; class SearchListViewModel with ChangeNotifier { - final PhotoRepository _photoRepository; + final GetPhotosUseCase _getPhotosUseCase; SearchListViewModel({ - required PhotoRepository photoRepository, - }) : _photoRepository = photoRepository; + required GetPhotosUseCase getPhotosUseCase, + }) : _getPhotosUseCase = getPhotosUseCase; SearchListState _state = const SearchListState(); @@ -18,7 +19,7 @@ class SearchListViewModel with ChangeNotifier { notifyListeners(); _state = state.copyWith( - photos: await _photoRepository.getPhotos(query), + photos: await _getPhotosUseCase.execute(query), isLoading: false, ); notifyListeners();