mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Allow 'Default' category as the default for adding manga (#2292)
This commit is contained in:
		@@ -500,19 +500,21 @@ open class BrowseCatalogueController(bundle: Bundle) :
 | 
			
		||||
            adapter?.notifyItemChanged(position)
 | 
			
		||||
 | 
			
		||||
            val categories = presenter.getCategories()
 | 
			
		||||
            val defaultCategory = categories.find { it.id == preferences.defaultCategory() }
 | 
			
		||||
            if (defaultCategory != null) {
 | 
			
		||||
                presenter.moveMangaToCategory(manga, defaultCategory)
 | 
			
		||||
            } else if (categories.size <= 1) { // default or the one from the user
 | 
			
		||||
                presenter.moveMangaToCategory(manga, categories.firstOrNull())
 | 
			
		||||
            } else {
 | 
			
		||||
                val ids = presenter.getMangaCategoryIds(manga)
 | 
			
		||||
                val preselected = ids.mapNotNull { id ->
 | 
			
		||||
                    categories.indexOfFirst { it.id == id }.takeIf { it != -1 }
 | 
			
		||||
                }.toTypedArray()
 | 
			
		||||
            val defaultCategoryId = preferences.defaultCategory()
 | 
			
		||||
            val defaultCategory = categories.find { it.id == defaultCategoryId }
 | 
			
		||||
            when {
 | 
			
		||||
                defaultCategory != null -> presenter.moveMangaToCategory(manga, defaultCategory)
 | 
			
		||||
                defaultCategoryId == 0 || categories.isEmpty() -> // 'Default' or no category
 | 
			
		||||
                    presenter.moveMangaToCategory(manga, null)
 | 
			
		||||
                else -> {
 | 
			
		||||
                    val ids = presenter.getMangaCategoryIds(manga)
 | 
			
		||||
                    val preselected = ids.mapNotNull { id ->
 | 
			
		||||
                        categories.indexOfFirst { it.id == id }.takeIf { it != -1 }
 | 
			
		||||
                    }.toTypedArray()
 | 
			
		||||
 | 
			
		||||
                ChangeMangaCategoriesDialog(this, listOf(manga), categories, preselected)
 | 
			
		||||
                        .showDialog(router)
 | 
			
		||||
                    ChangeMangaCategoriesDialog(this, listOf(manga), categories, preselected)
 | 
			
		||||
                            .showDialog(router)
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            activity?.toast(activity?.getString(R.string.manga_added_library))
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -316,9 +316,9 @@ open class BrowseCataloguePresenter(
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the default, and user categories.
 | 
			
		||||
     * Get user categories.
 | 
			
		||||
     *
 | 
			
		||||
     * @return List of categories, default plus user categories
 | 
			
		||||
     * @return List of categories, not including the default category
 | 
			
		||||
     */
 | 
			
		||||
    fun getCategories(): List<Category> {
 | 
			
		||||
        return db.getCategories().executeAsBlocking()
 | 
			
		||||
 
 | 
			
		||||
@@ -382,11 +382,12 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
 | 
			
		||||
        toggleFavorite()
 | 
			
		||||
        if (manga.favorite) {
 | 
			
		||||
            val categories = presenter.getCategories()
 | 
			
		||||
            val defaultCategory = categories.find { it.id == preferences.defaultCategory() }
 | 
			
		||||
            val defaultCategoryId = preferences.defaultCategory()
 | 
			
		||||
            val defaultCategory = categories.find { it.id == defaultCategoryId }
 | 
			
		||||
            when {
 | 
			
		||||
                defaultCategory != null -> presenter.moveMangaToCategory(manga, defaultCategory)
 | 
			
		||||
                categories.size <= 1 -> // default or the one from the user
 | 
			
		||||
                    presenter.moveMangaToCategory(manga, categories.firstOrNull())
 | 
			
		||||
                defaultCategoryId == 0 || categories.isEmpty() -> // 'Default' or no category
 | 
			
		||||
                    presenter.moveMangaToCategory(manga, null)
 | 
			
		||||
                else -> {
 | 
			
		||||
                    val ids = presenter.getMangaCategoryIds(manga)
 | 
			
		||||
                    val preselected = ids.mapNotNull { id ->
 | 
			
		||||
@@ -413,9 +414,9 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
 | 
			
		||||
            activity?.toast(activity?.getString(R.string.manga_added_library))
 | 
			
		||||
        }
 | 
			
		||||
        val categories = presenter.getCategories()
 | 
			
		||||
        if (categories.size <= 1) {
 | 
			
		||||
            // default or the one from the user then just add to favorite.
 | 
			
		||||
            presenter.moveMangaToCategory(manga, categories.firstOrNull())
 | 
			
		||||
        if (categories.isEmpty()) {
 | 
			
		||||
            // no categories exist, display a message about adding categories
 | 
			
		||||
            activity?.toast(activity?.getString(R.string.action_add_category))
 | 
			
		||||
        } else {
 | 
			
		||||
            val ids = presenter.getMangaCategoryIds(manga)
 | 
			
		||||
            val preselected = ids.mapNotNull { id ->
 | 
			
		||||
 
 | 
			
		||||
@@ -130,9 +130,9 @@ class MangaInfoPresenter(
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the default, and user categories.
 | 
			
		||||
     * Get user categories.
 | 
			
		||||
     *
 | 
			
		||||
     * @return List of categories, default plus user categories
 | 
			
		||||
     * @return List of categories, not including the default category
 | 
			
		||||
     */
 | 
			
		||||
    fun getCategories(): List<Category> {
 | 
			
		||||
        return db.getCategories().executeAsBlocking()
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,7 @@ import android.view.View
 | 
			
		||||
import com.afollestad.materialdialogs.MaterialDialog
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Category
 | 
			
		||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
 | 
			
		||||
@@ -179,15 +180,17 @@ class SettingsGeneralController : SettingsController() {
 | 
			
		||||
            key = Keys.defaultCategory
 | 
			
		||||
            titleRes = R.string.default_category
 | 
			
		||||
 | 
			
		||||
            val selectedCategory = dbCategories.find { it.id == preferences.defaultCategory() }
 | 
			
		||||
            val categories = listOf(Category.createDefault()) + dbCategories
 | 
			
		||||
 | 
			
		||||
            val selectedCategory = categories.find { it.id == preferences.defaultCategory() }
 | 
			
		||||
            entries = arrayOf(context.getString(R.string.default_category_summary)) +
 | 
			
		||||
                    dbCategories.map { it.name }.toTypedArray()
 | 
			
		||||
            entryValues = arrayOf("-1") + dbCategories.map { it.id.toString() }.toTypedArray()
 | 
			
		||||
                    categories.map { it.name }.toTypedArray()
 | 
			
		||||
            entryValues = arrayOf("-1") + categories.map { it.id.toString() }.toTypedArray()
 | 
			
		||||
            defaultValue = "-1"
 | 
			
		||||
            summary = selectedCategory?.name ?: context.getString(R.string.default_category_summary)
 | 
			
		||||
 | 
			
		||||
            onChange { newValue ->
 | 
			
		||||
                summary = dbCategories.find {
 | 
			
		||||
                summary = categories.find {
 | 
			
		||||
                    it.id == (newValue as String).toInt()
 | 
			
		||||
                }?.name ?: context.getString(R.string.default_category_summary)
 | 
			
		||||
                true
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user