fix(mmrcms): refactor search and image/link generation logic (fixes #152)

This commit is contained in:
xMohnad
2025-06-24 11:59:13 +00:00
parent cf68efe0f9
commit 601de70a25

View File

@@ -58,45 +58,32 @@ class MMRCMS extends MProvider {
@override @override
Future<MPages> search(String query, int page, FilterList filterList) async { Future<MPages> search(String query, int page, FilterList filterList) async {
final filters = filterList.filters; String url = getBaseUrl();
String url = "";
if (query.isNotEmpty) {
url = "${getBaseUrl()}/search?query=$query";
}
final res = (await client.get(Uri.parse(url))).body;
List<MManga> mangaList = []; List<MManga> mangaList = [];
List<String> urls = []; bool hasNextPage = false;
List<String> names = [];
List<String> images = [];
if (query.isNotEmpty) { if (query.isNotEmpty) {
url = "$url/search?query=$query";
final res = (await client.get(Uri.parse(url))).body;
final jsonList = json.decode(res)["suggestions"]; final jsonList = json.decode(res)["suggestions"];
for (var da in jsonList) { for (var da in jsonList) {
String value = da["value"]; String value = da["value"];
String data = da["data"]; String data = da["data"];
if (source.name == 'Scan VF') { final mangaSubString = getMangaSubString();
urls.add('${getBaseUrl()}/$data'); final path = mangaSubString.isEmpty ? data : '$mangaSubString/$data';
} else {
urls.add('${getBaseUrl()}/manga/$data'); mangaList.add(
} MManga(
names.add(value); name: value,
images.add( link: '${getBaseUrl()}/$path',
"${getBaseUrl()}/uploads/manga/$data/cover/cover_250x350.jpg", imageUrl: guessCover('/$path'),
),
); );
} }
} }
for (var i = 0; i < names.length; i++) {
MManga manga = MManga();
manga.name = names[i];
manga.imageUrl = images[i];
manga.link = urls[i];
mangaList.add(manga);
}
return MPages(mangaList, true); return MPages(mangaList, hasNextPage);
} }
@override @override
@@ -240,6 +227,12 @@ class MMRCMS extends MProvider {
return titles[lang?.toLowerCase()] ?? titles['en']!; return titles[lang?.toLowerCase()] ?? titles['en']!;
} }
String getMangaSubString() {
const sourceTypeMap = {'Scan VF': "", "Read Comics Online": "comic"};
return sourceTypeMap[source.name] ?? "manga";
}
String ll(String url) { String ll(String url) {
if (url.contains("?")) { if (url.contains("?")) {
return "&"; return "&";
@@ -248,9 +241,9 @@ class MMRCMS extends MProvider {
} }
String guessCover(String mangaUrl, {String? url}) { String guessCover(String mangaUrl, {String? url}) {
String baseUrl = getBaseUrl();
if (url == null || url?.endsWith("no-image.png")) { if (url == null || url?.endsWith("no-image.png")) {
String slug = substringAfterLast(mangaUrl, '/'); String slug = substringAfterLast(mangaUrl, '/');
String baseUrl = getBaseUrl();
return "${baseUrl}/uploads/manga/${slug}/cover/cover_250x350.jpg"; return "${baseUrl}/uploads/manga/${slug}/cover/cover_250x350.jpg";
} else if (url?.startsWith(baseUrl)) { } else if (url?.startsWith(baseUrl)) {
return url; return url;