Update parsers
This commit is contained in:
@@ -30,6 +30,7 @@ import org.koitharu.kotatsu.parsers.model.SortOrder
|
|||||||
import org.koitharu.kotatsu.parsers.util.find
|
import org.koitharu.kotatsu.parsers.util.find
|
||||||
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
|
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
|
||||||
import org.koitharu.kotatsu.parsers.util.mapToSet
|
import org.koitharu.kotatsu.parsers.util.mapToSet
|
||||||
|
import org.koitharu.kotatsu.parsers.util.nullIfEmpty
|
||||||
import org.koitharu.kotatsu.reader.domain.ReaderColorFilter
|
import org.koitharu.kotatsu.reader.domain.ReaderColorFilter
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.net.Proxy
|
import java.net.Proxy
|
||||||
@@ -413,10 +414,10 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
|
|||||||
get() = prefs.getString(KEY_PROXY_PORT, null)?.toIntOrNull() ?: 0
|
get() = prefs.getString(KEY_PROXY_PORT, null)?.toIntOrNull() ?: 0
|
||||||
|
|
||||||
val proxyLogin: String?
|
val proxyLogin: String?
|
||||||
get() = prefs.getString(KEY_PROXY_LOGIN, null)?.takeUnless { it.isEmpty() }
|
get() = prefs.getString(KEY_PROXY_LOGIN, null)?.nullIfEmpty()
|
||||||
|
|
||||||
val proxyPassword: String?
|
val proxyPassword: String?
|
||||||
get() = prefs.getString(KEY_PROXY_PASSWORD, null)?.takeUnless { it.isEmpty() }
|
get() = prefs.getString(KEY_PROXY_PASSWORD, null)?.nullIfEmpty()
|
||||||
|
|
||||||
var localListOrder: SortOrder
|
var localListOrder: SortOrder
|
||||||
get() = prefs.getEnumValue(KEY_LOCAL_LIST_ORDER, SortOrder.NEWEST)
|
get() = prefs.getEnumValue(KEY_LOCAL_LIST_ORDER, SortOrder.NEWEST)
|
||||||
@@ -493,7 +494,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
|
|||||||
get() = prefs.getBoolean(KEY_BACKUP_TG_ENABLED, false)
|
get() = prefs.getBoolean(KEY_BACKUP_TG_ENABLED, false)
|
||||||
|
|
||||||
val backupTelegramChatId: String?
|
val backupTelegramChatId: String?
|
||||||
get() = prefs.getString(KEY_BACKUP_TG_CHAT, null)?.takeUnless { it.isEmpty() }
|
get() = prefs.getString(KEY_BACKUP_TG_CHAT, null)?.nullIfEmpty()
|
||||||
|
|
||||||
val isReadingTimeEstimationEnabled: Boolean
|
val isReadingTimeEstimationEnabled: Boolean
|
||||||
get() = prefs.getBoolean(KEY_READING_TIME, true)
|
get() = prefs.getBoolean(KEY_READING_TIME, true)
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import org.koitharu.kotatsu.parsers.config.ConfigKey
|
|||||||
import org.koitharu.kotatsu.parsers.config.MangaSourceConfig
|
import org.koitharu.kotatsu.parsers.config.MangaSourceConfig
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||||
import org.koitharu.kotatsu.parsers.model.SortOrder
|
import org.koitharu.kotatsu.parsers.model.SortOrder
|
||||||
|
import org.koitharu.kotatsu.parsers.util.nullIfEmpty
|
||||||
import org.koitharu.kotatsu.settings.utils.validation.DomainValidator
|
import org.koitharu.kotatsu.settings.utils.validation.DomainValidator
|
||||||
|
|
||||||
class SourceSettings(context: Context, source: MangaSource) : MangaSourceConfig {
|
class SourceSettings(context: Context, source: MangaSource) : MangaSourceConfig {
|
||||||
@@ -38,7 +39,7 @@ class SourceSettings(context: Context, source: MangaSource) : MangaSourceConfig
|
|||||||
|
|
||||||
is ConfigKey.ShowSuspiciousContent -> prefs.getBoolean(key.key, key.defaultValue)
|
is ConfigKey.ShowSuspiciousContent -> prefs.getBoolean(key.key, key.defaultValue)
|
||||||
is ConfigKey.SplitByTranslations -> prefs.getBoolean(key.key, key.defaultValue)
|
is ConfigKey.SplitByTranslations -> prefs.getBoolean(key.key, key.defaultValue)
|
||||||
is ConfigKey.PreferredImageServer -> prefs.getString(key.key, key.defaultValue)?.takeUnless(String::isEmpty)
|
is ConfigKey.PreferredImageServer -> prefs.getString(key.key, key.defaultValue)?.nullIfEmpty()
|
||||||
} as T
|
} as T
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.net.Uri
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.storage.StorageManager
|
import android.os.storage.StorageManager
|
||||||
import android.provider.DocumentsContract
|
import android.provider.DocumentsContract
|
||||||
|
import org.koitharu.kotatsu.parsers.util.nullIfEmpty
|
||||||
import org.koitharu.kotatsu.parsers.util.removeSuffix
|
import org.koitharu.kotatsu.parsers.util.removeSuffix
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.lang.reflect.Array as ArrayReflect
|
import java.lang.reflect.Array as ArrayReflect
|
||||||
@@ -80,7 +81,7 @@ private fun getVolumePathForAndroid11AndAbove(volumeId: String, context: Context
|
|||||||
private fun getVolumeIdFromTreeUri(treeUri: Uri): String? {
|
private fun getVolumeIdFromTreeUri(treeUri: Uri): String? {
|
||||||
val docId = DocumentsContract.getTreeDocumentId(treeUri)
|
val docId = DocumentsContract.getTreeDocumentId(treeUri)
|
||||||
val split = docId.split(":".toRegex())
|
val split = docId.split(":".toRegex())
|
||||||
return split.firstOrNull()?.takeUnless { it.isEmpty() }
|
return split.firstOrNull()?.nullIfEmpty()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getDocumentPathFromTreeUri(treeUri: Uri): String? {
|
private fun getDocumentPathFromTreeUri(treeUri: Uri): String? {
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import org.koitharu.kotatsu.core.util.ext.newImageRequest
|
|||||||
import org.koitharu.kotatsu.core.util.ext.setTextColorAttr
|
import org.koitharu.kotatsu.core.util.ext.setTextColorAttr
|
||||||
import org.koitharu.kotatsu.databinding.ItemPageThumbBinding
|
import org.koitharu.kotatsu.databinding.ItemPageThumbBinding
|
||||||
import org.koitharu.kotatsu.list.ui.model.ListModel
|
import org.koitharu.kotatsu.list.ui.model.ListModel
|
||||||
|
import org.koitharu.kotatsu.parsers.util.nullIfEmpty
|
||||||
import com.google.android.material.R as materialR
|
import com.google.android.material.R as materialR
|
||||||
|
|
||||||
fun pageThumbnailAD(
|
fun pageThumbnailAD(
|
||||||
@@ -36,7 +37,7 @@ fun pageThumbnailAD(
|
|||||||
AdapterDelegateClickListenerAdapter(this, clickListener).attach(itemView)
|
AdapterDelegateClickListenerAdapter(this, clickListener).attach(itemView)
|
||||||
|
|
||||||
bind {
|
bind {
|
||||||
val data: Any = item.page.preview?.takeUnless { it.isEmpty() } ?: item.page.toMangaPage()
|
val data: Any = item.page.preview?.nullIfEmpty() ?: item.page.toMangaPage()
|
||||||
binding.imageViewThumb.newImageRequest(lifecycleOwner, data)?.run {
|
binding.imageViewThumb.newImageRequest(lifecycleOwner, data)?.run {
|
||||||
defaultPlaceholders(context)
|
defaultPlaceholders(context)
|
||||||
size(thumbSize)
|
size(thumbSize)
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import org.koitharu.kotatsu.parsers.model.MangaTag
|
|||||||
import org.koitharu.kotatsu.parsers.model.SortOrder
|
import org.koitharu.kotatsu.parsers.model.SortOrder
|
||||||
import org.koitharu.kotatsu.parsers.model.YEAR_MIN
|
import org.koitharu.kotatsu.parsers.model.YEAR_MIN
|
||||||
import org.koitharu.kotatsu.parsers.util.ifZero
|
import org.koitharu.kotatsu.parsers.util.ifZero
|
||||||
|
import org.koitharu.kotatsu.parsers.util.nullIfEmpty
|
||||||
import org.koitharu.kotatsu.parsers.util.suspendlazy.suspendLazy
|
import org.koitharu.kotatsu.parsers.util.suspendlazy.suspendLazy
|
||||||
import org.koitharu.kotatsu.remotelist.ui.RemoteListFragment
|
import org.koitharu.kotatsu.remotelist.ui.RemoteListFragment
|
||||||
import org.koitharu.kotatsu.search.domain.MangaSearchRepository
|
import org.koitharu.kotatsu.search.domain.MangaSearchRepository
|
||||||
@@ -267,7 +268,7 @@ class FilterCoordinator @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun setQuery(value: String?) {
|
fun setQuery(value: String?) {
|
||||||
val newQuery = value?.trim()?.takeUnless { it.isEmpty() }
|
val newQuery = value?.trim()?.nullIfEmpty()
|
||||||
currentListFilter.update { oldValue ->
|
currentListFilter.update { oldValue ->
|
||||||
if (capabilities.isSearchWithFiltersSupported || newQuery == null) {
|
if (capabilities.isSearchWithFiltersSupported || newQuery == null) {
|
||||||
oldValue.copy(query = newQuery)
|
oldValue.copy(query = newQuery)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import com.google.android.material.badge.BadgeDrawable
|
|||||||
import com.google.android.material.badge.BadgeUtils
|
import com.google.android.material.badge.BadgeUtils
|
||||||
import com.google.android.material.badge.ExperimentalBadgeUtils
|
import com.google.android.material.badge.ExperimentalBadgeUtils
|
||||||
import org.koitharu.kotatsu.R
|
import org.koitharu.kotatsu.R
|
||||||
|
import org.koitharu.kotatsu.parsers.util.nullIfEmpty
|
||||||
|
|
||||||
@CheckResult
|
@CheckResult
|
||||||
fun View.bindBadge(badge: BadgeDrawable?, counter: Int): BadgeDrawable? {
|
fun View.bindBadge(badge: BadgeDrawable?, counter: Int): BadgeDrawable? {
|
||||||
@@ -34,7 +35,7 @@ private fun View.bindBadgeImpl(
|
|||||||
if (counter > 0) {
|
if (counter > 0) {
|
||||||
badgeDrawable.number = counter
|
badgeDrawable.number = counter
|
||||||
} else {
|
} else {
|
||||||
badgeDrawable.text = text?.takeUnless { it.isEmpty() }
|
badgeDrawable.text = text?.nullIfEmpty()
|
||||||
}
|
}
|
||||||
badgeDrawable.isVisible = true
|
badgeDrawable.isVisible = true
|
||||||
badgeDrawable.align(this)
|
badgeDrawable.align(this)
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import org.koitharu.kotatsu.core.util.ext.setValueRounded
|
|||||||
import org.koitharu.kotatsu.databinding.ActivityColorFilterBinding
|
import org.koitharu.kotatsu.databinding.ActivityColorFilterBinding
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaPage
|
import org.koitharu.kotatsu.parsers.model.MangaPage
|
||||||
import org.koitharu.kotatsu.parsers.util.format
|
import org.koitharu.kotatsu.parsers.util.format
|
||||||
|
import org.koitharu.kotatsu.parsers.util.nullIfEmpty
|
||||||
import org.koitharu.kotatsu.reader.domain.ReaderColorFilter
|
import org.koitharu.kotatsu.reader.domain.ReaderColorFilter
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import com.google.android.material.R as materialR
|
import com.google.android.material.R as materialR
|
||||||
@@ -132,7 +133,7 @@ class ColorFilterConfigActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun loadPreview(page: MangaPage) {
|
private fun loadPreview(page: MangaPage) {
|
||||||
val data: Any = page.preview?.takeUnless { it.isEmpty() } ?: page
|
val data: Any = page.preview?.nullIfEmpty() ?: page
|
||||||
ImageRequest.Builder(this@ColorFilterConfigActivity)
|
ImageRequest.Builder(this@ColorFilterConfigActivity)
|
||||||
.data(data)
|
.data(data)
|
||||||
.scale(Scale.FILL)
|
.scale(Scale.FILL)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.koitharu.kotatsu.scrobbling.common.data
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.core.content.edit
|
import androidx.core.content.edit
|
||||||
import org.jsoup.internal.StringUtil.StringJoiner
|
import org.jsoup.internal.StringUtil.StringJoiner
|
||||||
|
import org.koitharu.kotatsu.parsers.util.nullIfEmpty
|
||||||
import org.koitharu.kotatsu.scrobbling.common.domain.model.ScrobblerService
|
import org.koitharu.kotatsu.scrobbling.common.domain.model.ScrobblerService
|
||||||
import org.koitharu.kotatsu.scrobbling.common.domain.model.ScrobblerUser
|
import org.koitharu.kotatsu.scrobbling.common.domain.model.ScrobblerUser
|
||||||
|
|
||||||
@@ -31,7 +32,7 @@ class ScrobblerStorage(context: Context, service: ScrobblerService) {
|
|||||||
ScrobblerUser(
|
ScrobblerUser(
|
||||||
id = lines[0].toLong(),
|
id = lines[0].toLong(),
|
||||||
nickname = lines[1],
|
nickname = lines[1],
|
||||||
avatar = lines[2].takeUnless(String::isEmpty),
|
avatar = lines[2].nullIfEmpty(),
|
||||||
service = ScrobblerService.valueOf(lines[3]),
|
service = ScrobblerService.valueOf(lines[3]),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import okhttp3.internal.closeQuietly
|
|||||||
import okio.IOException
|
import okio.IOException
|
||||||
import org.koitharu.kotatsu.core.network.CommonHeaders
|
import org.koitharu.kotatsu.core.network.CommonHeaders
|
||||||
import org.koitharu.kotatsu.parsers.util.mimeType
|
import org.koitharu.kotatsu.parsers.util.mimeType
|
||||||
|
import org.koitharu.kotatsu.parsers.util.nullIfEmpty
|
||||||
import org.koitharu.kotatsu.parsers.util.parseHtml
|
import org.koitharu.kotatsu.parsers.util.parseHtml
|
||||||
import org.koitharu.kotatsu.parsers.util.runCatchingCancellable
|
import org.koitharu.kotatsu.parsers.util.runCatchingCancellable
|
||||||
import org.koitharu.kotatsu.scrobbling.common.data.ScrobblerStorage
|
import org.koitharu.kotatsu.scrobbling.common.data.ScrobblerStorage
|
||||||
@@ -34,7 +35,7 @@ class KitsuInterceptor(private val storage: ScrobblerStorage) : Interceptor {
|
|||||||
}
|
}
|
||||||
if (response.mimeType?.toMediaTypeOrNull()?.subtype == SUBTYPE_HTML) {
|
if (response.mimeType?.toMediaTypeOrNull()?.subtype == SUBTYPE_HTML) {
|
||||||
val message = runCatchingCancellable {
|
val message = runCatchingCancellable {
|
||||||
response.parseHtml().title().takeUnless { it.isEmpty() }
|
response.parseHtml().title().nullIfEmpty()
|
||||||
}.onFailure {
|
}.onFailure {
|
||||||
response.closeQuietly()
|
response.closeQuietly()
|
||||||
}.getOrNull() ?: "Invalid response (${response.code})"
|
}.getOrNull() ?: "Invalid response (${response.code})"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ diskLruCache = "1.4"
|
|||||||
fragment = "1.8.5"
|
fragment = "1.8.5"
|
||||||
gradle = "8.7.3"
|
gradle = "8.7.3"
|
||||||
guava = "33.3.1-android"
|
guava = "33.3.1-android"
|
||||||
hilt = "2.53"
|
hilt = "2.53.1"
|
||||||
hiltWork = "1.2.0"
|
hiltWork = "1.2.0"
|
||||||
json = "20240303"
|
json = "20240303"
|
||||||
junit = "4.13.2"
|
junit = "4.13.2"
|
||||||
@@ -28,10 +28,10 @@ leakcanary = "3.0-alpha-8"
|
|||||||
lifecycle = "2.8.7"
|
lifecycle = "2.8.7"
|
||||||
markwon = "4.6.2"
|
markwon = "4.6.2"
|
||||||
material = "1.13.0-alpha08"
|
material = "1.13.0-alpha08"
|
||||||
moshi = "1.15.1"
|
moshi = "1.15.2"
|
||||||
okhttp = "4.12.0"
|
okhttp = "4.12.0"
|
||||||
okio = "3.9.1"
|
okio = "3.9.1"
|
||||||
parsers = "fece09b781"
|
parsers = "f86d31f811"
|
||||||
preference = "1.2.1"
|
preference = "1.2.1"
|
||||||
recyclerview = "1.3.2"
|
recyclerview = "1.3.2"
|
||||||
room = "2.6.1"
|
room = "2.6.1"
|
||||||
|
|||||||
Reference in New Issue
Block a user