From 6824183cf15a762f15a0bcd256a1f9ed5d9cc8b7 Mon Sep 17 00:00:00 2001 From: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com> Date: Wed, 22 Oct 2025 12:28:04 +0700 Subject: [PATCH] Hiperdex: add regex to clean title (#11163) * feat(Hiperdex): add preferences to remove title regex * feat(Hiperdex): add preferences to remove title regex * add original title to description * make companion * custom regex verification * verify regex * Revert "Revert "switch to checkbox"" This reverts commit 491fd17282fad18a04b3ff1570784954fde2703f. * add real-time validation for custom regex input & update summary on change * Fix version * Also clean title while browsing/searching --- src/en/hiperdex/build.gradle | 2 +- .../extension/en/hiperdex/Hiperdex.kt | 109 ++++++++++++++++++ 2 files changed, 110 insertions(+), 1 deletion(-) diff --git a/src/en/hiperdex/build.gradle b/src/en/hiperdex/build.gradle index 1a4ab667c..c0d86dc36 100644 --- a/src/en/hiperdex/build.gradle +++ b/src/en/hiperdex/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Hiperdex' themePkg = 'madara' baseUrl = 'https://hiperdex.com' - overrideVersionCode = 20 + overrideVersionCode = 21 isNsfw = true } diff --git a/src/en/hiperdex/src/eu/kanade/tachiyomi/extension/en/hiperdex/Hiperdex.kt b/src/en/hiperdex/src/eu/kanade/tachiyomi/extension/en/hiperdex/Hiperdex.kt index 533ef38a4..e4d8854a7 100644 --- a/src/en/hiperdex/src/eu/kanade/tachiyomi/extension/en/hiperdex/Hiperdex.kt +++ b/src/en/hiperdex/src/eu/kanade/tachiyomi/extension/en/hiperdex/Hiperdex.kt @@ -1,6 +1,10 @@ package eu.kanade.tachiyomi.extension.en.hiperdex +import android.text.Editable +import android.text.TextWatcher +import android.widget.Button import android.widget.Toast +import androidx.preference.CheckBoxPreference import androidx.preference.EditTextPreference import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.lib.randomua.addRandomUAPreferenceToScreen @@ -10,7 +14,10 @@ import eu.kanade.tachiyomi.lib.randomua.setRandomUserAgent import eu.kanade.tachiyomi.multisrc.madara.Madara import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.ConfigurableSource +import eu.kanade.tachiyomi.source.model.SManga import keiyoushi.utils.getPreferences +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element import java.text.SimpleDateFormat import java.util.Locale @@ -53,12 +60,109 @@ class Hiperdex : } }.also { screen.addPreference(it) } + CheckBoxPreference(screen.context).apply { + key = "${REMOVE_TITLE_VERSION_PREF}_$lang" + title = "Remove version information from entry titles" + summary = "This removes version tags like '(Official)' or '(Uncensored)' from entry titles " + + "and helps identify duplicate entries in your library. " + + "To update existing entries, remove them from your library (unfavorite) and refresh manually. " + + "You might also want to clear the database in advanced settings." + setDefaultValue(false) + }.also { screen.addPreference(it) } + + EditTextPreference(screen.context).apply { + key = "${REMOVE_TITLE_CUSTOM_PREF}_$lang" + title = "Custom regex to be removed from title" + summary = customRemoveTitle() + setDefaultValue("") + + val validate = { str: String -> + runCatching { Regex(str) } + .map { true to "" } + .getOrElse { false to it.message } + } + + setOnBindEditTextListener { editText -> + editText.addTextChangedListener( + object : TextWatcher { + override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {} + override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {} + + override fun afterTextChanged(editable: Editable?) { + editable ?: return + val text = editable.toString() + val valid = validate(text) + editText.error = if (!valid.first) valid.second else null + editText.rootView.findViewById