parent
3bd98888ee
commit
1556685031
|
@ -0,0 +1,84 @@
|
||||||
|
## [1.2.12]
|
||||||
|
|
||||||
|
Requires Komga `0.41.0`
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* filter by collection
|
||||||
|
|
||||||
|
## [1.2.11]
|
||||||
|
|
||||||
|
Requires Komga `0.35.2`
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* Set password preferences inputTypes
|
||||||
|
|
||||||
|
## [1.2.10]
|
||||||
|
|
||||||
|
Requires Komga `0.35.2`
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* unread only filter (closes gotson/komga#180)
|
||||||
|
* prefix book titles with number (closes gotson/komga#169)
|
||||||
|
|
||||||
|
## [1.2.9]
|
||||||
|
|
||||||
|
Requires Komga `0.22.0`
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* use SourceFactory to have multiple Komga servers (3 for the moment)
|
||||||
|
|
||||||
|
## [1.2.8]
|
||||||
|
|
||||||
|
Requires Komga `0.22.0`
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* use book metadata title for chapter display name
|
||||||
|
* use book metadata sort number for chapter number
|
||||||
|
|
||||||
|
## [1.2.7]
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* use series metadata title for display name
|
||||||
|
* filter on series status
|
||||||
|
|
||||||
|
## [1.2.6]
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* Add support for AndroidX preferences
|
||||||
|
|
||||||
|
## [1.2.5]
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add sort options in filter
|
||||||
|
|
||||||
|
## [1.2.4]
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* better handling of authentication
|
||||||
|
|
||||||
|
## [1.2.3]
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* filters by library
|
||||||
|
|
||||||
|
## [1.2.2]
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* request converted image from server if format is not supported
|
||||||
|
|
||||||
|
## [1.2.1]
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* first version
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
extName = 'Komga'
|
extName = 'Komga'
|
||||||
pkgNameSuffix = 'all.komga'
|
pkgNameSuffix = 'all.komga'
|
||||||
extClass = '.KomgaFactory'
|
extClass = '.KomgaFactory'
|
||||||
extVersionCode = 11
|
extVersionCode = 12
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ import com.github.salomonbrys.kotson.fromJson
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import eu.kanade.tachiyomi.extension.BuildConfig
|
import eu.kanade.tachiyomi.extension.BuildConfig
|
||||||
import eu.kanade.tachiyomi.extension.all.komga.dto.BookDto
|
import eu.kanade.tachiyomi.extension.all.komga.dto.BookDto
|
||||||
|
import eu.kanade.tachiyomi.extension.all.komga.dto.CollectionDto
|
||||||
import eu.kanade.tachiyomi.extension.all.komga.dto.LibraryDto
|
import eu.kanade.tachiyomi.extension.all.komga.dto.LibraryDto
|
||||||
import eu.kanade.tachiyomi.extension.all.komga.dto.PageDto
|
import eu.kanade.tachiyomi.extension.all.komga.dto.PageDto
|
||||||
import eu.kanade.tachiyomi.extension.all.komga.dto.PageWrapperDto
|
import eu.kanade.tachiyomi.extension.all.komga.dto.PageWrapperDto
|
||||||
|
@ -23,10 +24,6 @@ import eu.kanade.tachiyomi.source.model.Page
|
||||||
import eu.kanade.tachiyomi.source.model.SChapter
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
import eu.kanade.tachiyomi.source.model.SManga
|
import eu.kanade.tachiyomi.source.model.SManga
|
||||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||||
import java.text.DecimalFormat
|
|
||||||
import java.text.SimpleDateFormat
|
|
||||||
import java.util.Date
|
|
||||||
import java.util.Locale
|
|
||||||
import okhttp3.Credentials
|
import okhttp3.Credentials
|
||||||
import okhttp3.Headers
|
import okhttp3.Headers
|
||||||
import okhttp3.HttpUrl
|
import okhttp3.HttpUrl
|
||||||
|
@ -38,6 +35,10 @@ import rx.android.schedulers.AndroidSchedulers
|
||||||
import rx.schedulers.Schedulers
|
import rx.schedulers.Schedulers
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import java.text.DecimalFormat
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.Date
|
||||||
|
import java.util.Locale
|
||||||
|
|
||||||
open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
|
open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
|
||||||
override fun popularMangaRequest(page: Int): Request =
|
override fun popularMangaRequest(page: Int): Request =
|
||||||
|
@ -73,6 +74,17 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
|
||||||
url.addQueryParameter("library_id", libraryToInclude.joinToString(","))
|
url.addQueryParameter("library_id", libraryToInclude.joinToString(","))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
is CollectionGroup -> {
|
||||||
|
val collectionToInclude = mutableListOf<Long>()
|
||||||
|
filter.state.forEach { content ->
|
||||||
|
if (content.state) {
|
||||||
|
collectionToInclude.add(content.id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (collectionToInclude.isNotEmpty()) {
|
||||||
|
url.addQueryParameter("collection_id", collectionToInclude.joinToString(","))
|
||||||
|
}
|
||||||
|
}
|
||||||
is StatusGroup -> {
|
is StatusGroup -> {
|
||||||
val statusToInclude = mutableListOf<String>()
|
val statusToInclude = mutableListOf<String>()
|
||||||
filter.state.forEach { content ->
|
filter.state.forEach { content ->
|
||||||
|
@ -187,6 +199,8 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
|
||||||
|
|
||||||
private class LibraryFilter(val id: Long, name: String) : Filter.CheckBox(name, false)
|
private class LibraryFilter(val id: Long, name: String) : Filter.CheckBox(name, false)
|
||||||
private class LibraryGroup(libraries: List<LibraryFilter>) : Filter.Group<LibraryFilter>("Libraries", libraries)
|
private class LibraryGroup(libraries: List<LibraryFilter>) : Filter.Group<LibraryFilter>("Libraries", libraries)
|
||||||
|
private class CollectionFilter(val id: Long, name: String) : Filter.CheckBox(name, false)
|
||||||
|
private class CollectionGroup(collections: List<CollectionFilter>) : Filter.Group<CollectionFilter>("Collections", collections)
|
||||||
private class SeriesSort : Filter.Sort("Sort", arrayOf("Alphabetically", "Date added", "Date updated"), Selection(0, true))
|
private class SeriesSort : Filter.Sort("Sort", arrayOf("Alphabetically", "Date added", "Date updated"), Selection(0, true))
|
||||||
private class StatusFilter(name: String) : Filter.CheckBox(name, false)
|
private class StatusFilter(name: String) : Filter.CheckBox(name, false)
|
||||||
private class StatusGroup(filters: List<StatusFilter>) : Filter.Group<StatusFilter>("Status", filters)
|
private class StatusGroup(filters: List<StatusFilter>) : Filter.Group<StatusFilter>("Status", filters)
|
||||||
|
@ -195,12 +209,14 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
|
||||||
override fun getFilterList(): FilterList =
|
override fun getFilterList(): FilterList =
|
||||||
FilterList(
|
FilterList(
|
||||||
UnreadOnly(),
|
UnreadOnly(),
|
||||||
LibraryGroup(libraries.map { LibraryFilter(it.id, it.name) }.sortedBy { it.name }),
|
LibraryGroup(libraries.map { LibraryFilter(it.id, it.name) }.sortedBy { it.name.toLowerCase() }),
|
||||||
|
CollectionGroup(collections.map { CollectionFilter(it.id, it.name) }.sortedBy { it.name.toLowerCase() }),
|
||||||
StatusGroup(listOf("Ongoing", "Ended", "Abandoned", "Hiatus").map { StatusFilter(it) }),
|
StatusGroup(listOf("Ongoing", "Ended", "Abandoned", "Hiatus").map { StatusFilter(it) }),
|
||||||
SeriesSort()
|
SeriesSort()
|
||||||
)
|
)
|
||||||
|
|
||||||
private var libraries = emptyList<LibraryDto>()
|
private var libraries = emptyList<LibraryDto>()
|
||||||
|
private var collections = emptyList<CollectionDto>()
|
||||||
|
|
||||||
override val name = "Komga${if (suffix.isNotBlank()) " ($suffix)" else ""}"
|
override val name = "Komga${if (suffix.isNotBlank()) " ($suffix)" else ""}"
|
||||||
override val lang = "en"
|
override val lang = "en"
|
||||||
|
@ -311,6 +327,19 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
|
||||||
emptyList()
|
emptyList()
|
||||||
}
|
}
|
||||||
}, {})
|
}, {})
|
||||||
|
|
||||||
|
Single.fromCallable {
|
||||||
|
client.newCall(GET("$baseUrl/api/v1/collections?unpaged=true", headers)).execute()
|
||||||
|
}
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe({
|
||||||
|
collections = try {
|
||||||
|
gson.fromJson<PageWrapperDto<CollectionDto>>(it.body()?.charStream()!!).content
|
||||||
|
} catch (e: Exception) {
|
||||||
|
emptyList()
|
||||||
|
}
|
||||||
|
}, {})
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
|
@ -75,3 +75,13 @@ data class AuthorDto(
|
||||||
val name: String,
|
val name: String,
|
||||||
val role: String
|
val role: String
|
||||||
)
|
)
|
||||||
|
|
||||||
|
data class CollectionDto(
|
||||||
|
val id: Long,
|
||||||
|
val name: String,
|
||||||
|
val ordered: Boolean,
|
||||||
|
val seriesIds: List<Long>,
|
||||||
|
val createdDate: String,
|
||||||
|
val lastModifiedDate: String,
|
||||||
|
val filtered: Boolean
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue