From dd07318201cde183c6c48bd2b1bbf9c92dd49a67 Mon Sep 17 00:00:00 2001 From: Aria Moradi Date: Sun, 22 Aug 2021 19:06:26 +0430 Subject: [PATCH] Tachidesk: fix crash issues (#8735) * fix tachidesk crash issues * re-format file --- src/all/tachidesk/build.gradle | 2 +- .../extension/all/tachidesk/Tachidesk.kt | 39 ++++++++++++------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/all/tachidesk/build.gradle b/src/all/tachidesk/build.gradle index cd65aecba..544adefda 100644 --- a/src/all/tachidesk/build.gradle +++ b/src/all/tachidesk/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'Tachidesk' pkgNameSuffix = 'all.tachidesk' extClass = '.Tachidesk' - extVersionCode = 1 + extVersionCode = 2 libVersion = '1.2' containsNsfw = true } diff --git a/src/all/tachidesk/src/eu/kanade/tachiyomi/extension/all/tachidesk/Tachidesk.kt b/src/all/tachidesk/src/eu/kanade/tachiyomi/extension/all/tachidesk/Tachidesk.kt index 83de59a83..30a9af5a7 100644 --- a/src/all/tachidesk/src/eu/kanade/tachiyomi/extension/all/tachidesk/Tachidesk.kt +++ b/src/all/tachidesk/src/eu/kanade/tachiyomi/extension/all/tachidesk/Tachidesk.kt @@ -100,24 +100,36 @@ class Tachidesk : ConfigurableSource, HttpSource() { override fun getFilterList(): FilterList = FilterList( - CategorySelect(categoryList), - Filter.Header("Note: Restart tachiyomi to refresh categories!") + CategorySelect(refreshCategoryList(baseUrl).let { categoryList }), + Filter.Header("Press reset to attempt to fetch categories") ) - private lateinit var categoryList: List - init { + private var categoryList: List = emptyList() + + private fun refreshCategoryList(baseUrl: String) { Single.fromCallable { - client.newCall(GET("$checkedBaseUrl/api/v1/category", headers)).execute() + client.newCall(GET("$baseUrl/api/v1/category", headers)).execute() } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe { response -> - categoryList = try { - json.decodeFromString>(response.body!!.string()) - } catch (e: Exception) { - emptyList() - } - } + .subscribe( + { response -> + categoryList = try { + json.decodeFromString>(response.body!!.string()) + } catch (e: Exception) { + emptyList() + } + }, + {} + ) + } + + init { + val initBaseUrl = Injekt.get().getSharedPreferences("source_$id", 0x0000).getString(ADDRESS_TITLE, ADDRESS_DEFAULT)!! + + if (initBaseUrl.isNotBlank()) { + refreshCategoryList(initBaseUrl) + } } private val defaultCategoryId: Int @@ -137,7 +149,8 @@ class Tachidesk : ConfigurableSource, HttpSource() { is CategorySelect -> { selectedFilter = categoryList[filter.state].id } - else -> {} + else -> { + } } }