diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCatalogueController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCatalogueController.kt index f8e56adb90..baa3fad5eb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCatalogueController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCatalogueController.kt @@ -364,7 +364,7 @@ open class BrowseCatalogueController(bundle: Bundle) : val message = if (error is NoResultsException) "No results found" else (error.message ?: "") snack?.dismiss() - snack = catalogue_view?.snack(message, Snackbar.LENGTH_INDEFINITE) { + snack = catalouge_layout?.snack(message, Snackbar.LENGTH_INDEFINITE) { setAction(R.string.action_retry) { // If not the first page, show bottom progress bar. if (adapter.mainItemCount > 0) { @@ -524,20 +524,22 @@ 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) + } } - } /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCataloguePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCataloguePresenter.kt index 017b1ba496..33843587b3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCataloguePresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCataloguePresenter.kt @@ -319,9 +319,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 { return db.getCategories().executeAsBlocking() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt index df70b8950a..4168df9b9d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoController.kt @@ -428,11 +428,12 @@ class MangaInfoController : NucleusController(), 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 -> @@ -477,9 +478,9 @@ class MangaInfoController : NucleusController(), showAddedSnack() } 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 -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoPresenter.kt index 572d152a9c..692ec70d92 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoPresenter.kt @@ -155,9 +155,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 { return db.getCategories().executeAsBlocking() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt index 58d8f48401..e93a95f4c6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt @@ -10,6 +10,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 @@ -182,15 +183,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