From 7dd8d703e9a2c01cf2c49c866bdaf83fc6592c31 Mon Sep 17 00:00:00 2001 From: xMohnad Date: Thu, 26 Jun 2025 09:19:23 +0000 Subject: [PATCH] feat(manhwaz): make baseUrl configurable via source preferences --- javascript/manga/src/en/manhwaz.js | 43 +++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/javascript/manga/src/en/manhwaz.js b/javascript/manga/src/en/manhwaz.js index 1e762f90..fe673011 100644 --- a/javascript/manga/src/en/manhwaz.js +++ b/javascript/manga/src/en/manhwaz.js @@ -161,7 +161,7 @@ class DefaultExtension extends MProvider { } async getPopular(page) { - const url = `${this.source.baseUrl}/genre/manhwa?page=${page}&m_orderby=views`; + const url = `${this.getBaseUrl()}/genre/manhwa?page=${page}&m_orderby=views`; const res = await new Client().get(url, this.getHeaders()); return this.mangaListFromPage(res, ".page-item-detail"); } @@ -171,7 +171,7 @@ class DefaultExtension extends MProvider { } async getLatestUpdates(page) { - const url = `${this.source.baseUrl}/?page=${page}`; + const url = `${this.getBaseUrl()}/?page=${page}`; const res = await new Client().get(url, this.getHeaders()); return this.mangaListFromPage(res, ".page-item-detail"); } @@ -179,13 +179,13 @@ class DefaultExtension extends MProvider { async search(query, page, filters) { if (query && query.trim()) { // Search with query - const url = `${this.source.baseUrl}/search?s=${encodeURIComponent(query)}&page=${page}`; + const url = `${this.getBaseUrl()}/search?s=${encodeURIComponent(query)}&page=${page}`; const res = await new Client().get(url, this.getHeaders()); return this.mangaListFromPage(res, ".page-item-detail"); } // Filter-based search - let url = this.source.baseUrl; + let url = this.getBaseUrl(); let hasGenreFilter = false; // Process filters @@ -227,9 +227,7 @@ class DefaultExtension extends MProvider { async getDetail(url) { // Ensure we have the full URL - const fullUrl = url.startsWith("http") - ? url - : `${this.source.baseUrl}${url}`; + const fullUrl = url.startsWith("http") ? url : `${this.getBaseUrl()}${url}`; const res = await new Client().get(fullUrl, this.getHeaders()); const doc = new Document(res.body); @@ -302,9 +300,7 @@ class DefaultExtension extends MProvider { async getPageList(url) { // Ensure we have the full URL - const fullUrl = url.startsWith("http") - ? url - : `${this.source.baseUrl}${url}`; + const fullUrl = url.startsWith("http") ? url : `${this.getBaseUrl()}${url}`; const res = await new Client().get(fullUrl, this.getHeaders()); const doc = new Document(res.body); @@ -322,7 +318,7 @@ class DefaultExtension extends MProvider { if (imageUrl.startsWith("//")) { finalUrl = "https:" + imageUrl; } else if (imageUrl.startsWith("/")) { - finalUrl = this.source.baseUrl + imageUrl; + finalUrl = this.getBaseUrl() + imageUrl; } pages.push(finalUrl); @@ -395,7 +391,30 @@ class DefaultExtension extends MProvider { ]; } + getBaseUrl() { + const preference = new SharedPreferences(); + var base_url = preference.get("domain_url"); + if (base_url.length == 0) { + return this.source.baseUrl; + } + if (base_url.endsWith("/")) { + return base_url.slice(0, -1); + } + return base_url; + } + getSourcePreferences() { - return []; + return [ + { + key: "domain_url", + editTextPreference: { + title: "Edit URL", + summary: "", + value: this.source.baseUrl, + dialogTitle: "URL", + dialogMessage: "", + }, + }, + ]; } }