11import 'dart:convert' ;
22
33import 'package:dio/dio.dart' ;
4- import 'package:piwigo_ng/model/CategoryModel.dart' ;
5-
64import 'API.dart' ;
75
8- Future <List < dynamic >> fetchAlbums (String albumID) async {
6+ Future <Map < String , dynamic >> fetchAlbums (String albumID) async {
97
108 Map <String , String > queries = {
119 "format" : "json" ,
1210 "method" : "pwg.categories.getList" ,
1311 "cat_id" : albumID
1412 };
15- Response response = await API .dio.get ('ws.php' , queryParameters: queries);
1613
17- if (response.statusCode == 200 ) {
18- return json.decode (response.data)["result" ]["categories" ];
19- } else {
20- throw Exception ("bad request: " + response.statusCode.toString ());
14+ try {
15+ Response response = await API .dio.get ('ws.php' , queryParameters: queries);
16+
17+ if (response.statusCode == 200 ) {
18+ return json.decode (response.data);
19+ } else {
20+ return {
21+ 'stat' : 'fail' ,
22+ 'result' : response.statusMessage
23+ };
24+ }
25+ } catch (e) {
26+ var error = e as DioError ;
27+ return {
28+ 'stat' : 'fail' ,
29+ 'result' : error.message
30+ };
2131 }
2232}
23- Future <CategoryModel > getAlbumList () async {
33+ Future <Map < String , dynamic > > getAlbumList () async {
2434 Map <String , String > queries = {
2535 "format" : "json" ,
2636 "method" : "pwg.categories.getAdminList" ,
2737 };
2838
29- Response response = await API .dio.get ('ws.php' , queryParameters: queries);
39+ try {
40+ Response response = await API .dio.get ('ws.php' , queryParameters: queries);
3041
31- if (response.statusCode == 200 ) {
32- CategoryModel root = CategoryModel ("0" , "root" , fullname: "root" );
33- json.decode (response.data)['result' ]['categories' ].forEach ((cat) {
34- List <int > rank = cat['global_rank' ].split ('.' ).map (int .parse).toList ().cast <int >();
35- CategoryModel newCat = CategoryModel (cat['id' ], cat['name' ], comment: cat['comment' ], nbImages: cat['nb_images' ].toString (), fullname: cat['fullname' ], status: cat['status' ]);
36- if (rank.length > 1 ) {
37- CategoryModel nextInputCat = root.children.elementAt (rank.first- 1 );
38- rank.removeAt (0 );
39- addCatRecursive (rank, newCat, nextInputCat);
40- } else {
41- root.children.add (newCat);
42- }
43- });
44- return root;
45- } else {
46- throw Exception ("bad request: " + response.statusCode.toString ());
47- }
48- }
49- void addCatRecursive (List <int > rank, CategoryModel cat, CategoryModel inputCat) {
50- if (rank.length > 1 ) {
51- CategoryModel nextInputCat = inputCat.children.elementAt (rank.first- 1 );
52- rank.removeAt (0 );
53- addCatRecursive (rank, cat, nextInputCat);
54- } else {
55- inputCat.children.add (cat);
42+ if (response.statusCode == 200 ) {
43+ return json.decode (response.data);
44+ } else {
45+ return {
46+ 'stat' : 'fail' ,
47+ 'result' : response.statusMessage
48+ };
49+ }
50+ } catch (e) {
51+ var error = e as DioError ;
52+ return {
53+ 'stat' : 'fail' ,
54+ 'result' : error.message
55+ };
5656 }
5757}
5858
@@ -64,16 +64,23 @@ Future<dynamic> addCategory(String catName, String catDesc, String parent) async
6464 "comment" : catDesc,
6565 "parent" : parent
6666 };
67-
6867 try {
6968 Response response = await API .dio.post ('ws.php' , queryParameters: queries);
7069
7170 if (response.statusCode == 200 ) {
7271 return json.decode (response.data);
72+ } else {
73+ return {
74+ 'stat' : 'fail' ,
75+ 'result' : response.statusMessage
76+ };
7377 }
7478 } catch (e) {
75- print ('Dio add category error $e ' );
76- return e;
79+ var error = e as DioError ;
80+ return {
81+ 'stat' : 'fail' ,
82+ 'result' : error.message
83+ };
7784 }
7885}
7986Future <dynamic > deleteCategory (String catId) async {
@@ -86,18 +93,25 @@ Future<dynamic> deleteCategory(String catId) async {
8693 "pwg_token" : API .prefs.getString ("pwg_token" ),
8794 });
8895 try {
89- Response response = await API .dio.post (
90- 'ws.php' ,
96+ Response response = await API .dio.post ('ws.php' ,
9197 data: formData,
9298 queryParameters: queries
9399 );
94100
95101 if (response.statusCode == 200 ) {
96102 return json.decode (response.data);
103+ } else {
104+ return {
105+ 'stat' : 'fail' ,
106+ 'result' : response.statusMessage
107+ };
97108 }
98- } catch (e) {
99- print ('Dio delete category error $e ' );
100- return e;
109+ } catch (e) {
110+ var error = e as DioError ;
111+ return {
112+ 'stat' : 'fail' ,
113+ 'result' : error.message
114+ };
101115 }
102116}
103117Future <dynamic > moveCategory (int catId, String parentCatId) async {
@@ -110,22 +124,30 @@ Future<dynamic> moveCategory(int catId, String parentCatId) async {
110124 "parent" : parentCatId,
111125 "pwg_token" : API .prefs.getString ("pwg_token" ),
112126 });
127+
113128 try {
114- Response response = await API .dio.post (
115- 'ws.php' ,
129+ Response response = await API .dio.post ('ws.php' ,
116130 data: formData,
117131 queryParameters: queries
118132 );
119133
120134 if (response.statusCode == 200 ) {
121135 return json.decode (response.data);
136+ } else {
137+ return {
138+ 'stat' : 'fail' ,
139+ 'result' : response.statusMessage
140+ };
122141 }
123- } catch (e) {
124- print ('Dio move category error $e ' );
125- return e;
142+ } catch (e) {
143+ var error = e as DioError ;
144+ return {
145+ 'stat' : 'fail' ,
146+ 'result' : error.message
147+ };
126148 }
127149}
128- Future <dynamic > editCategory (int catId, String catName, String catDesc, bool private ) async {
150+ Future <dynamic > editCategory (int catId, String catName, String catDesc) async {
129151 Map <String , String > queries = {
130152 "format" : "json" ,
131153 "method" : "pwg.categories.setInfo" ,
@@ -134,7 +156,6 @@ Future<dynamic> editCategory(int catId, String catName, String catDesc, bool pri
134156 "category_id" : catId,
135157 "name" : catName,
136158 "comment" : catDesc,
137- "status" : private ? "private" : "public" ,
138159 });
139160 try {
140161 Response response = await API .dio.post (
0 commit comments