mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	Fix default category showing up in edit manga categories list
Also remove some usages of runBlocking
This commit is contained in:
		| @@ -8,13 +8,13 @@ import eu.kanade.tachiyomi.R | |||||||
|  |  | ||||||
| val Category.visualName: String | val Category.visualName: String | ||||||
|     @Composable |     @Composable | ||||||
|     get() = when (id) { |     get() = when { | ||||||
|         Category.UNCATEGORIZED_ID -> stringResource(id = R.string.label_default) |         isSystemCategory -> stringResource(id = R.string.label_default) | ||||||
|         else -> name |         else -> name | ||||||
|     } |     } | ||||||
|  |  | ||||||
| fun Category.visualName(context: Context): String = | fun Category.visualName(context: Context): String = | ||||||
|     when (id) { |     when { | ||||||
|         Category.UNCATEGORIZED_ID -> context.getString(R.string.label_default) |         isSystemCategory -> context.getString(R.string.label_default) | ||||||
|         else -> name |         else -> name | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -10,7 +10,6 @@ import eu.kanade.tachiyomi.network.await | |||||||
| import eu.kanade.tachiyomi.network.jsonMime | import eu.kanade.tachiyomi.network.jsonMime | ||||||
| import eu.kanade.tachiyomi.network.parseAs | import eu.kanade.tachiyomi.network.parseAs | ||||||
| import eu.kanade.tachiyomi.util.lang.withIOContext | import eu.kanade.tachiyomi.util.lang.withIOContext | ||||||
| import kotlinx.coroutines.runBlocking |  | ||||||
| import kotlinx.serialization.json.JsonArray | import kotlinx.serialization.json.JsonArray | ||||||
| import kotlinx.serialization.json.JsonObject | import kotlinx.serialization.json.JsonObject | ||||||
| import kotlinx.serialization.json.buildJsonObject | import kotlinx.serialization.json.buildJsonObject | ||||||
| @@ -127,15 +126,13 @@ class ShikimoriApi(private val client: OkHttpClient, interceptor: ShikimoriInter | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fun getCurrentUser(): Int { |     suspend fun getCurrentUser(): Int { | ||||||
|         return runBlocking { |         return authClient.newCall(GET("$apiUrl/users/whoami")) | ||||||
|             authClient.newCall(GET("$apiUrl/users/whoami")) |             .await() | ||||||
|                 .await() |             .parseAs<JsonObject>() | ||||||
|                 .parseAs<JsonObject>() |             .let { | ||||||
|                 .let { |                 it["id"]!!.jsonPrimitive.int | ||||||
|                     it["id"]!!.jsonPrimitive.int |             } | ||||||
|                 } |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     suspend fun accessToken(code: String): OAuth { |     suspend fun accessToken(code: String): OAuth { | ||||||
|   | |||||||
| @@ -389,7 +389,7 @@ open class BrowseSourcePresenter( | |||||||
|     suspend fun getCategories(): List<DomainCategory> { |     suspend fun getCategories(): List<DomainCategory> { | ||||||
|         return getCategories.subscribe() |         return getCategories.subscribe() | ||||||
|             .firstOrNull() |             .firstOrNull() | ||||||
|             ?.filterNot { it.id == DomainCategory.UNCATEGORIZED_ID } |             ?.filterNot { it.isSystemCategory } | ||||||
|             ?: emptyList() |             ?: emptyList() | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -32,14 +32,6 @@ import uy.kohesive.injekt.Injekt | |||||||
| import uy.kohesive.injekt.api.get | import uy.kohesive.injekt.api.get | ||||||
| import uy.kohesive.injekt.injectLazy | import uy.kohesive.injekt.injectLazy | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Presenter of [GlobalSearchController] |  | ||||||
|  * Function calls should be done from here. UI calls should be done from the controller. |  | ||||||
|  * |  | ||||||
|  * @param sourceManager manages the different sources. |  | ||||||
|  * @param db manages the database calls. |  | ||||||
|  * @param preferences manages the preference calls. |  | ||||||
|  */ |  | ||||||
| open class GlobalSearchPresenter( | open class GlobalSearchPresenter( | ||||||
|     private val initialQuery: String? = "", |     private val initialQuery: String? = "", | ||||||
|     private val initialExtensionFilter: String? = null, |     private val initialExtensionFilter: String? = null, | ||||||
| @@ -256,7 +248,7 @@ open class GlobalSearchPresenter( | |||||||
|         val networkManga = source.getMangaDetails(manga.toMangaInfo()) |         val networkManga = source.getMangaDetails(manga.toMangaInfo()) | ||||||
|         manga.copyFrom(networkManga.toSManga()) |         manga.copyFrom(networkManga.toSManga()) | ||||||
|         manga.initialized = true |         manga.initialized = true | ||||||
|         runBlocking { updateManga.await(manga.toDomainManga()!!.toMangaUpdate()) } |         updateManga.await(manga.toDomainManga()!!.toMangaUpdate()) | ||||||
|         return manga |         return manga | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -408,7 +408,7 @@ class LibraryPresenter( | |||||||
|     private fun getLibraryObservable(): Observable<Library> { |     private fun getLibraryObservable(): Observable<Library> { | ||||||
|         return combine(getCategoriesFlow(), getLibraryMangasFlow()) { dbCategories, libraryManga -> |         return combine(getCategoriesFlow(), getLibraryMangasFlow()) { dbCategories, libraryManga -> | ||||||
|             val categories = if (libraryManga.isNotEmpty() && libraryManga.containsKey(0).not()) { |             val categories = if (libraryManga.isNotEmpty() && libraryManga.containsKey(0).not()) { | ||||||
|                 dbCategories.filterNot { it.id == Category.UNCATEGORIZED_ID } |                 dbCategories.filterNot { it.isSystemCategory } | ||||||
|             } else { |             } else { | ||||||
|                 dbCategories |                 dbCategories | ||||||
|             } |             } | ||||||
|   | |||||||
| @@ -61,6 +61,7 @@ import eu.kanade.tachiyomi.util.system.toast | |||||||
| import eu.kanade.tachiyomi.widget.materialdialogs.QuadStateTextView | import eu.kanade.tachiyomi.widget.materialdialogs.QuadStateTextView | ||||||
| import eu.kanade.tachiyomi.widget.materialdialogs.await | import eu.kanade.tachiyomi.widget.materialdialogs.await | ||||||
| import kotlinx.coroutines.launch | import kotlinx.coroutines.launch | ||||||
|  | import kotlinx.coroutines.runBlocking | ||||||
| import logcat.LogPriority | import logcat.LogPriority | ||||||
| import eu.kanade.domain.chapter.model.Chapter as DomainChapter | import eu.kanade.domain.chapter.model.Chapter as DomainChapter | ||||||
|  |  | ||||||
| @@ -214,7 +215,7 @@ class MangaController : | |||||||
|                 } |                 } | ||||||
|             } else null, |             } else null, | ||||||
|             onRequireCategory = { manga, categories -> |             onRequireCategory = { manga, categories -> | ||||||
|                 val ids = presenter.getMangaCategoryIds(manga) |                 val ids = runBlocking { presenter.getMangaCategoryIds(manga) } | ||||||
|                 val preselected = categories.map { |                 val preselected = categories.map { | ||||||
|                     if (it.id in ids) { |                     if (it.id in ids) { | ||||||
|                         QuadStateTextView.State.CHECKED.ordinal |                         QuadStateTextView.State.CHECKED.ordinal | ||||||
|   | |||||||
| @@ -64,7 +64,6 @@ import kotlinx.coroutines.flow.filter | |||||||
| import kotlinx.coroutines.flow.launchIn | import kotlinx.coroutines.flow.launchIn | ||||||
| import kotlinx.coroutines.flow.map | import kotlinx.coroutines.flow.map | ||||||
| import kotlinx.coroutines.flow.update | import kotlinx.coroutines.flow.update | ||||||
| import kotlinx.coroutines.runBlocking |  | ||||||
| import kotlinx.coroutines.supervisorScope | import kotlinx.coroutines.supervisorScope | ||||||
| import kotlinx.coroutines.withContext | import kotlinx.coroutines.withContext | ||||||
| import logcat.LogPriority | import logcat.LogPriority | ||||||
| @@ -351,7 +350,7 @@ class MangaPresenter( | |||||||
|      * @return List of categories, not including the default category |      * @return List of categories, not including the default category | ||||||
|      */ |      */ | ||||||
|     suspend fun getCategories(): List<Category> { |     suspend fun getCategories(): List<Category> { | ||||||
|         return getCategories.await() |         return getCategories.await().filterNot { it.isSystemCategory } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -360,8 +359,8 @@ class MangaPresenter( | |||||||
|      * @param manga the manga to get categories from. |      * @param manga the manga to get categories from. | ||||||
|      * @return Array of category ids the manga is in, if none returns default id |      * @return Array of category ids the manga is in, if none returns default id | ||||||
|      */ |      */ | ||||||
|     fun getMangaCategoryIds(manga: DomainManga): Array<Long> { |     suspend fun getMangaCategoryIds(manga: DomainManga): Array<Long> { | ||||||
|         val categories = runBlocking { getCategories.await(manga.id) } |         val categories = getCategories.await(manga.id) | ||||||
|         return categories.map { it.id }.toTypedArray() |         return categories.map { it.id }.toTypedArray() | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -9,8 +9,9 @@ import eu.kanade.tachiyomi.data.updater.AppUpdateChecker | |||||||
| import eu.kanade.tachiyomi.data.updater.AppUpdateResult | import eu.kanade.tachiyomi.data.updater.AppUpdateResult | ||||||
| import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController | import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController | ||||||
| import eu.kanade.tachiyomi.ui.base.controller.pushController | import eu.kanade.tachiyomi.ui.base.controller.pushController | ||||||
| import eu.kanade.tachiyomi.util.lang.launchNow | import eu.kanade.tachiyomi.util.lang.launchIO | ||||||
| import eu.kanade.tachiyomi.util.lang.toDateTimestampString | import eu.kanade.tachiyomi.util.lang.toDateTimestampString | ||||||
|  | import eu.kanade.tachiyomi.util.lang.withUIContext | ||||||
| import eu.kanade.tachiyomi.util.system.logcat | import eu.kanade.tachiyomi.util.system.logcat | ||||||
| import eu.kanade.tachiyomi.util.system.toast | import eu.kanade.tachiyomi.util.system.toast | ||||||
| import logcat.LogPriority | import logcat.LogPriority | ||||||
| @@ -43,20 +44,23 @@ class AboutController : BasicFullComposeController() { | |||||||
|  |  | ||||||
|         activity!!.toast(R.string.update_check_look_for_updates) |         activity!!.toast(R.string.update_check_look_for_updates) | ||||||
|  |  | ||||||
|         launchNow { |         viewScope.launchIO { | ||||||
|             try { |             val result = updateChecker.checkForUpdate(activity!!, isUserPrompt = true) | ||||||
|                 when (val result = updateChecker.checkForUpdate(activity!!, isUserPrompt = true)) { |             withUIContext { | ||||||
|                     is AppUpdateResult.NewUpdate -> { |                 try { | ||||||
|                         NewUpdateDialogController(result).showDialog(router) |                     when (result) { | ||||||
|  |                         is AppUpdateResult.NewUpdate -> { | ||||||
|  |                             NewUpdateDialogController(result).showDialog(router) | ||||||
|  |                         } | ||||||
|  |                         is AppUpdateResult.NoNewUpdate -> { | ||||||
|  |                             activity?.toast(R.string.update_check_no_new_updates) | ||||||
|  |                         } | ||||||
|  |                         else -> {} | ||||||
|                     } |                     } | ||||||
|                     is AppUpdateResult.NoNewUpdate -> { |                 } catch (error: Exception) { | ||||||
|                         activity?.toast(R.string.update_check_no_new_updates) |                     activity?.toast(error.message) | ||||||
|                     } |                     logcat(LogPriority.ERROR, error) | ||||||
|                     else -> {} |  | ||||||
|                 } |                 } | ||||||
|             } catch (error: Exception) { |  | ||||||
|                 activity?.toast(error.message) |  | ||||||
|                 logcat(LogPriority.ERROR, error) |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user