Kavita: Fix Init property title not initialized (#13195)
* Fixes "lateinit property title not initialized" * Updated CHANGELOG.md * Comment a bit more the logic for single-file volumes Co-authored-by: ThePromidius <chronocraft.mygs@gmail.com>
This commit is contained in:
		
							parent
							
								
									4aa14a2cbd
								
							
						
					
					
						commit
						b24d88df35
					
				@ -1,3 +1,9 @@
 | 
			
		||||
## 1.3.6
 | 
			
		||||
 | 
			
		||||
### Fix
 | 
			
		||||
 | 
			
		||||
* Fixed "lateinit property title not initialized"
 | 
			
		||||
 | 
			
		||||
## 1.3.5
 | 
			
		||||
 | 
			
		||||
### Features
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@ ext {
 | 
			
		||||
    extName = 'Kavita'
 | 
			
		||||
    pkgNameSuffix = 'all.kavita'
 | 
			
		||||
    extClass = '.KavitaFactory'
 | 
			
		||||
    extVersionCode = 5
 | 
			
		||||
    extVersionCode = 6
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
 | 
			
		||||
@ -115,10 +115,16 @@ class Kavita(private val suffix: String = "") : ConfigurableSource, UnmeteredSou
 | 
			
		||||
    private val helper = KavitaHelper()
 | 
			
		||||
    private inline fun <reified T> Response.parseAs(): T =
 | 
			
		||||
        use {
 | 
			
		||||
            if (it.code == 401) {
 | 
			
		||||
                Log.e(LOG_TAG, "Http error 401 - Not authorized: ${it.request.url}")
 | 
			
		||||
                Throwable("Http error 401 - Not authorized: ${it.request.url}")
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (it.peekBody(Long.MAX_VALUE).string().isEmpty()) {
 | 
			
		||||
                Log.e(LOG_TAG, "Empty body String for request url: ${it.request.url}")
 | 
			
		||||
                throw EmptyRequestBody(
 | 
			
		||||
                    "Body of the response is empty. RequestUrl=${it.request.url}\nPlease check your kavita instance is up to date",
 | 
			
		||||
                    Throwable("Empty Body of the response is empty. RequestUrl=${it.request.url}\n Please check your kavita instance is up to date")
 | 
			
		||||
                    Throwable("Error. Request body is empty")
 | 
			
		||||
                )
 | 
			
		||||
            }
 | 
			
		||||
            json.decodeFromString(it.body?.string().orEmpty())
 | 
			
		||||
@ -389,7 +395,6 @@ class Kavita(private val suffix: String = "") : ConfigurableSource, UnmeteredSou
 | 
			
		||||
        return client.newCall(GET("$apiUrl/series/metadata?seriesId=$serieId", headersBuilder().build()))
 | 
			
		||||
            .asObservableSuccess()
 | 
			
		||||
            .map { response ->
 | 
			
		||||
                Log.d(LOG_TAG, "fetchMangaDetails response body: ```${response.peekBody(Long.MAX_VALUE).string()}```")
 | 
			
		||||
                mangaDetailsParse(response).apply { initialized = true }
 | 
			
		||||
            }
 | 
			
		||||
    }
 | 
			
		||||
@ -408,7 +413,6 @@ class Kavita(private val suffix: String = "") : ConfigurableSource, UnmeteredSou
 | 
			
		||||
        val result = response.parseAs<SeriesMetadataDto>()
 | 
			
		||||
 | 
			
		||||
        val existingSeries = series.find { dto -> dto.id == result.seriesId }
 | 
			
		||||
        Log.d("[Kavita]", "old manga url:")
 | 
			
		||||
        if (existingSeries != null) {
 | 
			
		||||
            val manga = helper.createSeriesDto(existingSeries, apiUrl)
 | 
			
		||||
            manga.url = "$apiUrl/Series/${result.seriesId}"
 | 
			
		||||
@ -420,6 +424,9 @@ class Kavita(private val suffix: String = "") : ConfigurableSource, UnmeteredSou
 | 
			
		||||
 | 
			
		||||
            return manga
 | 
			
		||||
        }
 | 
			
		||||
        val serieDto = client.newCall(GET("$apiUrl/Series/${result.seriesId}", headersBuilder().build()))
 | 
			
		||||
            .execute()
 | 
			
		||||
            .parseAs<SeriesDto>()
 | 
			
		||||
 | 
			
		||||
        return SManga.create().apply {
 | 
			
		||||
            url = "$apiUrl/Series/${result.seriesId}"
 | 
			
		||||
@ -427,6 +434,7 @@ class Kavita(private val suffix: String = "") : ConfigurableSource, UnmeteredSou
 | 
			
		||||
            description = result.summary
 | 
			
		||||
            author = result.writers.joinToString { it.name }
 | 
			
		||||
            genre = result.genres.joinToString { it.title }
 | 
			
		||||
            title = serieDto.name
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -456,23 +464,29 @@ class Kavita(private val suffix: String = "") : ConfigurableSource, UnmeteredSou
 | 
			
		||||
        SChapter.create().apply {
 | 
			
		||||
            // If there are multiple chapters to this volume, then prefix with Volume number
 | 
			
		||||
            if (volume.chapters.isNotEmpty() && obj.number != "0") {
 | 
			
		||||
                // This volume is not volume 0, hence they are not loose chapters
 | 
			
		||||
                // We just add a nice Volume X to the chapter title
 | 
			
		||||
                // Chapter-based Volume
 | 
			
		||||
                name = "Volume ${volume.number} Chapter ${obj.number}"
 | 
			
		||||
                chapter_number = obj.number.toFloat()
 | 
			
		||||
            } else if (obj.number == "0") {
 | 
			
		||||
                // This chapter is solely on volume
 | 
			
		||||
                // Both specials and volume has chapter number 0
 | 
			
		||||
                if (volume.number == 0) {
 | 
			
		||||
                    // Treat as special
 | 
			
		||||
                    // Special is not in a volume
 | 
			
		||||
                    if (obj.range == "") {
 | 
			
		||||
                        // Special does not have any Title
 | 
			
		||||
                        name = "Chapter 0"
 | 
			
		||||
                        chapter_number = obj.number.toFloat()
 | 
			
		||||
                    } else {
 | 
			
		||||
                        // We use it's own special tile
 | 
			
		||||
                        name = obj.range
 | 
			
		||||
                        chapter_number = obj.number.toFloat()
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                    // Is a single-file volume
 | 
			
		||||
                    // We encode the chapter number to support tracking
 | 
			
		||||
                    name = "Volume ${volume.number}"
 | 
			
		||||
//                    val newVolNumber: Float = (volume.number / 100).toFloat()
 | 
			
		||||
//                    chapter_number = newVolNumber.toString().padStart(3, '0').toFloat()
 | 
			
		||||
                    chapter_number = volume.number.toFloat() / 100
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user