mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 10:51:17 +00:00
anime(anizone): optimize search filter handling
This commit is contained in:
@@ -53,15 +53,6 @@ class AniZone extends MProvider {
|
|||||||
Future<MPages> search(String query, int page, FilterList filterList) async {
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
String baseUrl = "${source.baseUrl}/filter?keyword=$query";
|
String baseUrl = "${source.baseUrl}/filter?keyword=$query";
|
||||||
|
|
||||||
Map<String, List<String>> filterMap = {
|
|
||||||
"type": [],
|
|
||||||
"status": [],
|
|
||||||
"season": [],
|
|
||||||
"lang": [],
|
|
||||||
"genre": [],
|
|
||||||
};
|
|
||||||
|
|
||||||
// Regroupement des filtres avec une logique générique
|
|
||||||
final filterHandlers = {
|
final filterHandlers = {
|
||||||
"TypeFilter": "type",
|
"TypeFilter": "type",
|
||||||
"LanguageFilter": "lang",
|
"LanguageFilter": "lang",
|
||||||
@@ -70,23 +61,30 @@ class AniZone extends MProvider {
|
|||||||
"GenreFilter": "genre",
|
"GenreFilter": "genre",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
final activeFilterParams = <String, String>{};
|
||||||
|
|
||||||
for (var filter in filterList.filters) {
|
for (var filter in filterList.filters) {
|
||||||
if (filterHandlers.containsKey(filter.type)) {
|
final paramKey = filterHandlers[filter.type];
|
||||||
var key = filterHandlers[filter.type]!;
|
if (paramKey != null && filter.state is List) {
|
||||||
for (var stateItem in filter.state as List) {
|
final selectedValues =
|
||||||
if (stateItem.state == true) {
|
(filter.state as List)
|
||||||
filterMap[key]?.add(stateItem.value as String);
|
.where((item) {
|
||||||
}
|
return item.state == true && item.value != null;
|
||||||
|
})
|
||||||
|
.map((item) => item.value as String)
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
if (selectedValues.isNotEmpty) {
|
||||||
|
activeFilterParams[paramKey] = selectedValues.join("%2C");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//add filters to the url dynamically
|
if (activeFilterParams.isNotEmpty) {
|
||||||
for (var entry in filterMap.entries) {
|
final queryString = activeFilterParams.entries
|
||||||
List<String> values = entry.value;
|
.map((entry) => '${Uri.encodeComponent(entry.key)}=${entry.value}')
|
||||||
if (values.isNotEmpty) {
|
.join('&');
|
||||||
baseUrl += '&${entry.key}=${values.join("%2C")}';
|
baseUrl += '&$queryString';
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return _getMangaList("$baseUrl&page=$page");
|
return _getMangaList("$baseUrl&page=$page");
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import '../../../../../model/source.dart';
|
import '../../../../../model/source.dart';
|
||||||
|
|
||||||
Source get aniZoneSource => _aniZoneSource;
|
Source get aniZoneSource => _aniZoneSource;
|
||||||
const _aniZoneVersion = "0.0.2";
|
const _aniZoneVersion = "0.0.25";
|
||||||
const _aniZoneSourceCodeUrl =
|
const _aniZoneSourceCodeUrl =
|
||||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/fr/anizone/anizone.dart";
|
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/fr/anizone/anizone.dart";
|
||||||
Source _aniZoneSource = Source(
|
Source _aniZoneSource = Source(
|
||||||
|
|||||||
Reference in New Issue
Block a user