diff --git a/src/en/mangadistrict/build.gradle b/src/en/mangadistrict/build.gradle index ee15ea3dc..935580855 100644 --- a/src/en/mangadistrict/build.gradle +++ b/src/en/mangadistrict/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.MangaDistrict' themePkg = 'madara' baseUrl = 'https://mangadistrict.com' - overrideVersionCode = 12 + overrideVersionCode = 13 isNsfw = true } diff --git a/src/en/mangadistrict/src/eu/kanade/tachiyomi/extension/en/mangadistrict/MangaDistrict.kt b/src/en/mangadistrict/src/eu/kanade/tachiyomi/extension/en/mangadistrict/MangaDistrict.kt index 99f8b8670..52b70f189 100644 --- a/src/en/mangadistrict/src/eu/kanade/tachiyomi/extension/en/mangadistrict/MangaDistrict.kt +++ b/src/en/mangadistrict/src/eu/kanade/tachiyomi/extension/en/mangadistrict/MangaDistrict.kt @@ -2,9 +2,14 @@ package eu.kanade.tachiyomi.extension.en.mangadistrict import android.annotation.SuppressLint import android.content.SharedPreferences +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.ListPreference import androidx.preference.PreferenceScreen -import androidx.preference.SwitchPreferenceCompat import eu.kanade.tachiyomi.multisrc.madara.Madara import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.asObservableSuccess @@ -84,8 +89,15 @@ class MangaDistrict : override fun chapterFromElement(element: Element): SChapter { return super.chapterFromElement(element).apply { val urlKey = url.urlKey() - preferences.dates[urlKey]?.also { - date_upload = it + val dates = preferences.dates + dates[urlKey]?.also { + if (date_upload == 0L) { + // If date_upload is not set (due to NEW tag), try to get it from the page lists + date_upload = it + } else { + dates.remove(urlKey) + preferences.dates = dates + } } } } @@ -168,11 +180,18 @@ class MangaDistrict : } } - private val titleVersion = Regex("\\(.*\\)") - private fun SManga.cleanTitleIfNeeded() = apply { - if (isRemoveTitleVersion()) { - title = title.replace(titleVersion, "").trim() + title = title.let { originalTitle -> + var tempTitle = originalTitle + customRemoveTitle().takeIf { it.isNotEmpty() }?.let { customRegex -> + runCatching { + tempTitle = tempTitle.replace(Regex(customRegex), "") + } + } + if (isRemoveTitleVersion()) { + tempTitle = tempTitle.replace(titleRegex, "") + } + tempTitle.trim() } } @@ -277,6 +296,8 @@ class MangaDistrict : ) private fun isRemoveTitleVersion() = preferences.getBoolean(REMOVE_TITLE_VERSION_PREF, false) + private fun customRemoveTitle(): String = + preferences.getString("${REMOVE_TITLE_CUSTOM_PREF}_$lang", "")!! private fun getImgRes() = preferences.getString(IMG_RES_PREF, IMG_RES_DEFAULT)!! private var SharedPreferences.dates: MutableMap @@ -292,7 +313,7 @@ class MangaDistrict : } override fun setupPreferenceScreen(screen: PreferenceScreen) { - SwitchPreferenceCompat(screen.context).apply { + CheckBoxPreference(screen.context).apply { key = REMOVE_TITLE_VERSION_PREF title = "Remove version information from entry titles" summary = "This removes version tags like “(Official)” or “(Doujinshi)” from entry titles " + @@ -302,6 +323,46 @@ class MangaDistrict : setDefaultValue(false) }.let(screen::addPreference) + 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