@@ -73,6 +73,7 @@ class CategoryDbRepository implements CategoryRepository {
73
73
@override
74
74
Future <List <CategoryTo >> loadCategoryData () async {
75
75
List <Map <String , dynamic >> data = await _categoryDao.queryAll ();
76
+
76
77
Completer <List <CategoryTo >> completer = Completer ();
77
78
List <CategoryTo > collects = [];
78
79
@@ -82,8 +83,9 @@ class CategoryDbRepository implements CategoryRepository {
82
83
83
84
for (int i = 0 ; i < data.length; i++ ) {
84
85
List <int > ids = await _categoryDao.loadCollectWidgetIds (data[i]['id' ]);
85
- collects
86
- .add (CategoryTo (widgetIds: ids, model: CategoryPo .fromJson (data[i])));
86
+ collects.add (CategoryTo (
87
+ widgetIds: ids,
88
+ model: CategoryPo .fromJson (data[i])));
87
89
88
90
if (i == data.length - 1 ) {
89
91
completer.complete (collects);
@@ -94,16 +96,48 @@ class CategoryDbRepository implements CategoryRepository {
94
96
}
95
97
96
98
@override
97
- Future <bool > syncCategoryByData (String data) async {
99
+ Future <List <dynamic >> loadLikesData () async {
100
+
101
+ final db = await storage.db;
102
+ var likes = await db.rawQuery ("SELECT id "
103
+ "FROM widget WHERE collected = 1 ORDER BY family,lever DESC" );
104
+ var likesData = likes.map ((e) => e['id' ]).toList ();
105
+
106
+ return likesData;
107
+ }
108
+
109
+
110
+ Future <void > _setLikes (List <dynamic > ids) async {
111
+ if (ids.isEmpty) return ;
112
+ final db = await storage.db;
113
+ String sql = 'UPDATE widget SET collected = 1 WHERE ' ;
114
+ for (int i= 0 ;i< ids.length;i++ ){
115
+ if (i== 0 ){
116
+ sql += 'id = ${ids [i ]} ' ;
117
+ }else {
118
+ sql += 'OR id = ${ids [i ]} ' ;
119
+ }
120
+ }
121
+
122
+ await db.rawUpdate (sql, );
123
+ List <Map <String , dynamic >> data = await db.rawQuery ('SELECT id FROM widget WHERE collected = 1' , []);
124
+ print (data);
125
+ }
126
+
127
+ @override
128
+ Future <bool > syncCategoryByData (String data,String likeData) async {
98
129
try {
99
130
await _categoryDao.clear ();
100
131
List <dynamic > dataMap = json.decode (data);
101
132
for (int i = 0 ; i < dataMap.length; i++ ) {
102
133
CategoryPo po = CategoryPo .fromNetJson (dataMap[i]["model" ]);
103
134
List <dynamic > widgetIds = dataMap[i]["widgetIds" ];
104
135
await addCategory (po);
105
- await _categoryDao.addWidgets (po.id, widgetIds);
136
+ if (widgetIds.isNotEmpty){
137
+ await _categoryDao.addWidgets (po.id, widgetIds);
138
+ }
106
139
}
140
+ await _setLikes (json.decode (likeData));
107
141
return true ;
108
142
} catch (e) {
109
143
print (e);
0 commit comments