|
|
|
@ -15,7 +15,8 @@ sealed interface MangaListFilter {
|
|
|
|
(tagsExclude.isEmpty() || parser.isTagsExclusionSupported) &&
|
|
|
|
(tagsExclude.isEmpty() || parser.isTagsExclusionSupported) &&
|
|
|
|
(contentRating.isEmpty() || parser.availableContentRating.containsAll(contentRating)) &&
|
|
|
|
(contentRating.isEmpty() || parser.availableContentRating.containsAll(contentRating)) &&
|
|
|
|
(states.isEmpty() || parser.availableStates.containsAll(states) &&
|
|
|
|
(states.isEmpty() || parser.availableStates.containsAll(states) &&
|
|
|
|
(query.isNullOrEmpty() || parser.searchSupportedWithMultipleFilters))
|
|
|
|
(parser.searchSupportedWithMultipleFilters) &&
|
|
|
|
|
|
|
|
(parser.isSearchYearSupported) && (parser.isSearchOriginalLanguages))
|
|
|
|
|
|
|
|
|
|
|
|
is Search -> parser.isSearchSupported
|
|
|
|
is Search -> parser.isSearchSupported
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -34,21 +35,25 @@ sealed interface MangaListFilter {
|
|
|
|
@JvmField val tags: Set<MangaTag>,
|
|
|
|
@JvmField val tags: Set<MangaTag>,
|
|
|
|
@JvmField val tagsExclude: Set<MangaTag>,
|
|
|
|
@JvmField val tagsExclude: Set<MangaTag>,
|
|
|
|
@JvmField val locale: Locale?,
|
|
|
|
@JvmField val locale: Locale?,
|
|
|
|
|
|
|
|
@JvmField val localeMangas: Locale?,
|
|
|
|
@JvmField val states: Set<MangaState>,
|
|
|
|
@JvmField val states: Set<MangaState>,
|
|
|
|
@JvmField val contentRating: Set<ContentRating>,
|
|
|
|
@JvmField val contentRating: Set<ContentRating>,
|
|
|
|
@JvmField val query: String?,
|
|
|
|
@JvmField val query: String?,
|
|
|
|
|
|
|
|
@JvmField val year: Int?,
|
|
|
|
) : MangaListFilter {
|
|
|
|
) : MangaListFilter {
|
|
|
|
|
|
|
|
|
|
|
|
override fun isEmpty(): Boolean =
|
|
|
|
override fun isEmpty(): Boolean =
|
|
|
|
tags.isEmpty() && tagsExclude.isEmpty() && locale == null && states.isEmpty() && contentRating.isEmpty() && query == null
|
|
|
|
tags.isEmpty() && tagsExclude.isEmpty() && locale == null && localeMangas == null && states.isEmpty() && contentRating.isEmpty() && query == null && year == null
|
|
|
|
|
|
|
|
|
|
|
|
fun newBuilder() = Builder(sortOrder)
|
|
|
|
fun newBuilder() = Builder(sortOrder)
|
|
|
|
.tags(tags)
|
|
|
|
.tags(tags)
|
|
|
|
.tagsExclude(tagsExclude)
|
|
|
|
.tagsExclude(tagsExclude)
|
|
|
|
.locale(locale)
|
|
|
|
.locale(locale)
|
|
|
|
|
|
|
|
.localeMangas(localeMangas)
|
|
|
|
.states(states)
|
|
|
|
.states(states)
|
|
|
|
.contentRatings(contentRating)
|
|
|
|
.contentRatings(contentRating)
|
|
|
|
.query(query)
|
|
|
|
.query(query)
|
|
|
|
|
|
|
|
.year(year)
|
|
|
|
|
|
|
|
|
|
|
|
class Builder(sortOrder: SortOrder) {
|
|
|
|
class Builder(sortOrder: SortOrder) {
|
|
|
|
|
|
|
|
|
|
|
|
@ -56,9 +61,11 @@ sealed interface MangaListFilter {
|
|
|
|
private var _tags: Set<MangaTag>? = null
|
|
|
|
private var _tags: Set<MangaTag>? = null
|
|
|
|
private var _tagsExclude: Set<MangaTag>? = null
|
|
|
|
private var _tagsExclude: Set<MangaTag>? = null
|
|
|
|
private var _locale: Locale? = null
|
|
|
|
private var _locale: Locale? = null
|
|
|
|
|
|
|
|
private var _localeMangas: Locale? = null
|
|
|
|
private var _states: Set<MangaState>? = null
|
|
|
|
private var _states: Set<MangaState>? = null
|
|
|
|
private var _contentRating: Set<ContentRating>? = null
|
|
|
|
private var _contentRating: Set<ContentRating>? = null
|
|
|
|
private var _query: String? = null
|
|
|
|
private var _query: String? = null
|
|
|
|
|
|
|
|
private var _year: Int? = null
|
|
|
|
|
|
|
|
|
|
|
|
fun sortOrder(order: SortOrder) = apply {
|
|
|
|
fun sortOrder(order: SortOrder) = apply {
|
|
|
|
_sortOrder = order
|
|
|
|
_sortOrder = order
|
|
|
|
@ -76,6 +83,10 @@ sealed interface MangaListFilter {
|
|
|
|
_locale = locale
|
|
|
|
_locale = locale
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun localeMangas(localeMangas: Locale?) = apply {
|
|
|
|
|
|
|
|
_localeMangas = localeMangas
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fun states(states: Set<MangaState>?) = apply {
|
|
|
|
fun states(states: Set<MangaState>?) = apply {
|
|
|
|
_states = states
|
|
|
|
_states = states
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -84,18 +95,26 @@ sealed interface MangaListFilter {
|
|
|
|
_contentRating = rating
|
|
|
|
_contentRating = rating
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fun query(query: String?) {
|
|
|
|
fun query(query: String?) = apply {
|
|
|
|
_query = query
|
|
|
|
_query = query
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun year(year: Int?) = apply {
|
|
|
|
|
|
|
|
_year = year
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun build() = Advanced(
|
|
|
|
fun build() = Advanced(
|
|
|
|
sortOrder = _sortOrder,
|
|
|
|
sortOrder = _sortOrder,
|
|
|
|
tags = _tags.orEmpty(),
|
|
|
|
tags = _tags.orEmpty(),
|
|
|
|
tagsExclude = _tagsExclude.orEmpty(),
|
|
|
|
tagsExclude = _tagsExclude.orEmpty(),
|
|
|
|
locale = _locale,
|
|
|
|
locale = _locale,
|
|
|
|
|
|
|
|
localeMangas = _localeMangas,
|
|
|
|
states = _states.orEmpty(),
|
|
|
|
states = _states.orEmpty(),
|
|
|
|
contentRating = _contentRating.orEmpty(),
|
|
|
|
contentRating = _contentRating.orEmpty(),
|
|
|
|
query = _query,
|
|
|
|
query = _query,
|
|
|
|
|
|
|
|
year = _year,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|