@@ -47,7 +47,7 @@ Future<ApiResult<ImageModel>> getImage(int imageId) async {
4747 return ApiResult (error: ApiErrors .error);
4848}
4949
50- Future <ApiResult <List <ImageModel >>> fetchImages (int albumID, int page) async {
50+ Future <ApiResult <List <ImageModel >>> fetchImages (int albumID, [ int page = 0 ] ) async {
5151 Map <String , dynamic > queries = {
5252 'format' : 'json' ,
5353 'method' : 'pwg.categories.getImages' ,
@@ -61,7 +61,7 @@ Future<ApiResult<List<ImageModel>>> fetchImages(int albumID, int page) async {
6161 Response response = await ApiClient .get (queryParameters: queries);
6262
6363 if (response.statusCode == 200 ) {
64- var jsonImages = json.decode (response.data)[" result" ][ " images" ];
64+ var jsonImages = json.decode (response.data)[' result' ][ ' images' ];
6565 List <ImageModel > images = List <ImageModel >.from (
6666 jsonImages.map ((image) => ImageModel .fromJson (image)),
6767 );
@@ -78,10 +78,12 @@ Future<ApiResult<List<ImageModel>>> fetchImages(int albumID, int page) async {
7878
7979Future <ApiResult <Map >> searchImages (String searchQuery, [int page = 0 ]) async {
8080 Map <String , dynamic > query = {
81- "format" : "json" ,
82- "method" : "pwg.images.search" ,
83- "query" : searchQuery,
84- "page" : page,
81+ 'format' : 'json' ,
82+ 'method' : 'pwg.images.search' ,
83+ 'query' : searchQuery,
84+ 'order' : Preferences .getImageSort.value,
85+ 'per_page' : Settings .defaultElementPerPage,
86+ 'page' : page,
8587 };
8688
8789 try {
@@ -91,17 +93,17 @@ Future<ApiResult<Map>> searchImages(String searchQuery, [int page = 0]) async {
9193 final Map <String , dynamic > result = json.decode (response.data);
9294 if (result['err' ] == 1002 ) {
9395 return ApiResult <Map >(data: {
94- " total_count" : 0 ,
95- " images" : [],
96+ ' total_count' : 0 ,
97+ ' images' : [],
9698 });
9799 }
98- final jsonImages = result[" result" ][ " images" ];
100+ final jsonImages = result[' result' ][ ' images' ];
99101 List <ImageModel > images = List <ImageModel >.from (
100102 jsonImages.map ((image) => ImageModel .fromJson (image)),
101103 );
102104 return ApiResult <Map >(data: {
103- " total_count" : result[" result" ][ " paging" ][ " total_count" ],
104- " images" : images,
105+ ' total_count' : result[' result' ][ ' paging' ][ ' total_count' ],
106+ ' images' : images,
105107 });
106108 }
107109 } on DioError catch (e) {
@@ -112,6 +114,46 @@ Future<ApiResult<Map>> searchImages(String searchQuery, [int page = 0]) async {
112114 return ApiResult (error: ApiErrors .searchImagesError);
113115}
114116
117+ Future <ApiResult <Map >> fetchFavorites ([int page = 0 ]) async {
118+ Map <String , dynamic > query = {
119+ 'format' : 'json' ,
120+ 'method' : 'pwg.users.favorites.getList' ,
121+ 'order' : Preferences .getImageSort.value,
122+ 'per_page' : Settings .defaultElementPerPage,
123+ 'page' : page,
124+ };
125+
126+ try {
127+ Response response = await ApiClient .get (queryParameters: query);
128+
129+ if (response.statusCode == 200 ) {
130+ final Map <String , dynamic > result = json.decode (response.data);
131+ if (result['stat' ] == 'fail' ) {
132+ return ApiResult <Map >(data: {
133+ 'total_count' : 0 ,
134+ 'images' : [],
135+ });
136+ }
137+ final jsonImages = result['result' ]['images' ];
138+ List <ImageModel > images = List <ImageModel >.from (
139+ jsonImages.map ((image) {
140+ image['is_favorite' ] = true ;
141+ return ImageModel .fromJson (image);
142+ }),
143+ );
144+ return ApiResult <Map >(data: {
145+ 'total_count' : result['result' ]['paging' ]['count' ],
146+ 'images' : images,
147+ });
148+ }
149+ } on DioError catch (e) {
150+ debugPrint ('Fetch favorites: ${e .message }' );
151+ } on Error catch (e) {
152+ debugPrint ('Fetch favorites: ${e .stackTrace }' );
153+ }
154+ return ApiResult (error: ApiErrors .error);
155+ }
156+
115157Future <bool > _requestPermissions () async {
116158 var permission = await Permission .storage.status;
117159 if (permission != PermissionStatus .granted) {
0 commit comments