Introduce MangaListFilterCapabilities class

master
Koitharu 2 years ago
parent 481ad02e01
commit ae9a7c6090
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -2,6 +2,8 @@ package org.koitharu.kotatsu.parsers
import androidx.annotation.CallSuper
import androidx.annotation.VisibleForTesting
import kotlinx.coroutines.async
import kotlinx.coroutines.coroutineScope
import okhttp3.Headers
import org.koitharu.kotatsu.parsers.config.ConfigKey
import org.koitharu.kotatsu.parsers.model.*
@ -301,6 +303,27 @@ abstract class MangaParser @InternalParsersApi constructor(
*/
abstract suspend fun getAvailableTags(): Set<MangaTag>
open suspend fun getListFilterCapabilities(): MangaListFilterCapabilities = coroutineScope {
val tagsDeferred = async { getAvailableTags() }
val localesDeferred = async { getAvailableLocales() }
MangaListFilterCapabilities(
availableSortOrders = availableSortOrders,
availableTags = tagsDeferred.await(),
availableStates = availableStates,
availableContentRating = availableContentRating,
availableContentTypes = availableContentTypes,
availableDemographics = availableDemographics,
availableLocales = localesDeferred.await(),
isMultipleTagsSupported = isMultipleTagsSupported,
isTagsExclusionSupported = isTagsExclusionSupported,
isSearchSupported = isSearchSupported,
searchSupportedWithMultipleFilters = searchSupportedWithMultipleFilters,
isSearchYearSupported = isSearchYearSupported,
isSearchYearRangeSupported = isSearchYearRangeSupported,
isSearchOriginalLanguages = isSearchOriginalLanguages,
)
}
/**
* Fetch available locales for multilingual sources
*/

@ -0,0 +1,21 @@
package org.koitharu.kotatsu.parsers.model
import org.koitharu.kotatsu.parsers.InternalParsersApi
import java.util.*
data class MangaListFilterCapabilities @InternalParsersApi constructor(
val availableSortOrders: Set<SortOrder>,
val availableTags: Set<MangaTag>,
val availableStates: Set<MangaState>,
val availableContentRating: Set<ContentRating>,
val availableContentTypes: Set<ContentType>,
val availableDemographics: Set<Demographic>,
val availableLocales: Set<Locale>,
val isMultipleTagsSupported: Boolean,
val isTagsExclusionSupported: Boolean,
val isSearchSupported: Boolean,
val searchSupportedWithMultipleFilters: Boolean,
val isSearchYearSupported: Boolean,
val isSearchYearRangeSupported: Boolean,
val isSearchOriginalLanguages: Boolean,
)
Loading…
Cancel
Save