Skip to content

Commit 3791126

Browse files
authored
Merge pull request #219 from amitamrutiya2210/issue-132-size-of-trackers
issue 132 display size of traker in filter torrent menu
2 parents 61f7d74 + 917a504 commit 3791126

15 files changed

+256
-535
lines changed

lib/Api/event_handler_api.dart

Lines changed: 48 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'dart:collection';
12
import 'dart:convert';
23
import 'package:awesome_notifications/awesome_notifications.dart';
34
import 'package:duration/duration.dart';
@@ -99,6 +100,7 @@ class EventHandlerApi {
99100
for (var hash in newTorrentList.keys) {
100101
try {
101102
TorrentModel torrentModel = TorrentModel.fromJson(newTorrentList[hash]);
103+
torrentModel.tags = torrentModel.tags.toSet().toList();
102104
torrentList.add(torrentModel);
103105
} catch (e) {
104106
print(e.toString());
@@ -200,61 +202,83 @@ class EventHandlerApi {
200202
Provider.of<FilterProvider>(context, listen: false);
201203
var maptrackerURIs = {};
202204
var mapStatus = {};
203-
Map<String, dynamic> mapTags = {};
204205
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 = [];
208209

209-
//For torrent TrackerURIs
210-
filterProvider.trackerURIsListMain = [];
210+
//For torrent trackerURI
211+
//make a List of Map for trackerURIs and their corresponding size
211212
try {
212213
for (int i = 0; i < torrentList.length; i++) {
213214
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+
});
218219
}
219220
}
221+
filterProvider.setTrackersSizeList(trackersSizeList);
220222
} catch (e) {
221223
print(e);
222224
}
225+
//make a map of trackerURIs and their corresponding status
223226
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+
];
227233
} 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+
]);
229240
}
230241
});
242+
maptrackerURIs = SplayTreeMap<String, dynamic>.from(maptrackerURIs);
231243
filterProvider.setmaptrackerURIs(maptrackerURIs);
232244
} catch (e) {
233245
print(e);
234246
}
235247

236248
//For torrent tags
249+
//make a List of Map for tags and their corresponding size
237250
try {
238251
for (int i = 0; i < torrentList.length; i++) {
239252
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+
}
245261
}
246262
}
263+
filterProvider.setTagsSizeList(tagsSizeList);
247264
} catch (e) {
248265
print(e);
249266
}
267+
//make a map of tags and their corresponding status
250268
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)];
254272
} 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+
]);
256279
}
257280
});
281+
mapTags = SplayTreeMap<String, dynamic>.from(mapTags);
258282
filterProvider.setmapTags(mapTags);
259283
} catch (e) {
260284
print(e);
@@ -271,6 +295,7 @@ class EventHandlerApi {
271295
} catch (e) {
272296
print(e);
273297
}
298+
274299
try {
275300
statusList.forEach((element) {
276301
if (!mapStatus.containsKey(element)) {

lib/Components/add_tag_dialogue.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class _AddTagDialogueState extends State<AddTagDialogue>
2323
bool _showdropdown = false;
2424
late TextEditingController _textController;
2525
int _itemsVisibleInDropdown = 1;
26-
Set<String> _inputTagList = {};
26+
List<String> _inputTagList = [];
2727
Map<String, bool> _existingTags = {};
2828
Map<String, bool> _newEnterdTags = {};
2929
late Animation _animation;
@@ -35,9 +35,9 @@ class _AddTagDialogueState extends State<AddTagDialogue>
3535
void initState() {
3636
super.initState();
3737
_textController =
38-
TextEditingController(text: widget.torrents[0].tags.toSet().join(","));
38+
TextEditingController(text: widget.torrents[0].tags.join(","));
3939
_textController.addListener(_handleControllerChanged);
40-
_inputTagList = _textController.text.split(',').toSet();
40+
_inputTagList = _textController.text.split(',');
4141
}
4242

4343
@override
@@ -342,7 +342,7 @@ class _AddTagDialogueState extends State<AddTagDialogue>
342342
setState(() {
343343
_textController.text = '';
344344
_existingTags.updateAll((key, value) => value = false);
345-
_inputTagList = {};
345+
_inputTagList = [];
346346
_newEnterdTags = {};
347347
});
348348
}
@@ -356,7 +356,7 @@ class _AddTagDialogueState extends State<AddTagDialogue>
356356
_textController.selection = TextSelection.fromPosition(
357357
TextPosition(offset: _textController.text.length));
358358
}
359-
_inputTagList = _textController.text.split(',').toSet();
359+
_inputTagList = _textController.text.split(',');
360360
_inputTagList.remove("");
361361

362362
//if user press Untagged

0 commit comments

Comments
 (0)