1
+ import 'dart:collection' ;
1
2
import 'dart:convert' ;
2
3
import 'package:awesome_notifications/awesome_notifications.dart' ;
3
4
import 'package:duration/duration.dart' ;
@@ -99,6 +100,7 @@ class EventHandlerApi {
99
100
for (var hash in newTorrentList.keys) {
100
101
try {
101
102
TorrentModel torrentModel = TorrentModel .fromJson (newTorrentList[hash]);
103
+ torrentModel.tags = torrentModel.tags.toSet ().toList ();
102
104
torrentList.add (torrentModel);
103
105
} catch (e) {
104
106
print (e.toString ());
@@ -200,61 +202,83 @@ class EventHandlerApi {
200
202
Provider .of <FilterProvider >(context, listen: false );
201
203
var maptrackerURIs = {};
202
204
var mapStatus = {};
203
- Map <String , dynamic > mapTags = {};
204
205
List <String > statusList = [];
205
- filterProvider.tagListMain = [] ;
206
- filterProvider.mapTags = { 'Untagged' : 0 } ;
207
- torrentLength = torrentList.length. toString () ;
206
+ Map < String , dynamic > mapTags = {} ;
207
+ List < Map < String , dynamic >> trackersSizeList = [] ;
208
+ List < Map < String , dynamic >> tagsSizeList = [] ;
208
209
209
- //For torrent TrackerURIs
210
- filterProvider.trackerURIsListMain = [];
210
+ //For torrent trackerURI
211
+ //make a List of Map for trackerURIs and their corresponding size
211
212
try {
212
213
for (int i = 0 ; i < torrentList.length; i++ ) {
213
214
for (int j = 0 ; j < torrentList[i].trackerURIs.length; j++ ) {
214
- filterProvider.trackerURIsListMain
215
- . add ( torrentList[i].trackerURIs[j].toString ());
216
- filterProvider
217
- . settrackerURIsListMain (filterProvider.trackerURIsListMain );
215
+ trackersSizeList. add ({
216
+ torrentList[i].trackerURIs[j].toString ():
217
+ torrentList[i].sizeBytes. toString ()
218
+ } );
218
219
}
219
220
}
221
+ filterProvider.setTrackersSizeList (trackersSizeList);
220
222
} catch (e) {
221
223
print (e);
222
224
}
225
+ //make a map of trackerURIs and their corresponding status
223
226
try {
224
- filterProvider.trackerURIsListMain.forEach ((element) {
225
- if (! maptrackerURIs.containsKey (element)) {
226
- maptrackerURIs[element] = 1 ;
227
+ filterProvider.trackersSizeList.forEach ((element) {
228
+ if (! maptrackerURIs.containsKey (element.keys.first)) {
229
+ maptrackerURIs[element.keys.first] = [
230
+ 1 ,
231
+ double .parse (element.values.first)
232
+ ];
227
233
} else {
228
- maptrackerURIs[element] += 1 ;
234
+ maptrackerURIs.update (
235
+ element.keys.first,
236
+ (value) => [
237
+ value[0 ] + 1 ,
238
+ value[1 ] + double .parse (element.values.first)
239
+ ]);
229
240
}
230
241
});
242
+ maptrackerURIs = SplayTreeMap <String , dynamic >.from (maptrackerURIs);
231
243
filterProvider.setmaptrackerURIs (maptrackerURIs);
232
244
} catch (e) {
233
245
print (e);
234
246
}
235
247
236
248
//For torrent tags
249
+ //make a List of Map for tags and their corresponding size
237
250
try {
238
251
for (int i = 0 ; i < torrentList.length; i++ ) {
239
252
if (torrentList[i].tags.isEmpty) {
240
- filterProvider.mapTags.update ('Untagged' , (value) => ++ value);
241
- }
242
- for (int j = 0 ; j < torrentList[i].tags.length; j++ ) {
243
- filterProvider.tagListMain.add (torrentList[i].tags[j].toString ());
244
- filterProvider.setTagsListMain (filterProvider.tagListMain);
253
+ tagsSizeList.add ({'Untagged' : '0' });
254
+ } else {
255
+ for (int j = 0 ; j < torrentList[i].tags.length; j++ ) {
256
+ tagsSizeList.add ({
257
+ torrentList[i].tags[j].toString ():
258
+ torrentList[i].sizeBytes.toString ()
259
+ });
260
+ }
245
261
}
246
262
}
263
+ filterProvider.setTagsSizeList (tagsSizeList);
247
264
} catch (e) {
248
265
print (e);
249
266
}
267
+ //make a map of tags and their corresponding status
250
268
try {
251
- filterProvider.tagListMain .forEach ((element) {
252
- if (! mapTags.containsKey (element)) {
253
- mapTags[element] = 1 ;
269
+ filterProvider.tagsSizeList .forEach ((element) {
270
+ if (! mapTags.containsKey (element.keys.first )) {
271
+ mapTags[element.keys.first ] = [ 1 , double . parse (element.values.first)] ;
254
272
} else {
255
- mapTags[element] += 1 ;
273
+ mapTags.update (
274
+ element.keys.first,
275
+ (value) => [
276
+ value[0 ] + 1 ,
277
+ value[1 ] + double .parse (element.values.first)
278
+ ]);
256
279
}
257
280
});
281
+ mapTags = SplayTreeMap <String , dynamic >.from (mapTags);
258
282
filterProvider.setmapTags (mapTags);
259
283
} catch (e) {
260
284
print (e);
@@ -271,6 +295,7 @@ class EventHandlerApi {
271
295
} catch (e) {
272
296
print (e);
273
297
}
298
+
274
299
try {
275
300
statusList.forEach ((element) {
276
301
if (! mapStatus.containsKey (element)) {
0 commit comments