Add missing empty states

This commit is contained in:
Koitharu
2022-07-19 14:49:34 +03:00
parent 59243be030
commit 7b53468c2e
5 changed files with 28 additions and 5 deletions

View File

@@ -23,7 +23,7 @@ abstract class FavouriteCategoriesDao {
(SELECT manga_id FROM favourites WHERE favourites.category_id == favourite_categories.category_id)
ORDER BY favourite_categories.sort_key
"""
)
) // FIXME empty categories are ignored
abstract fun observeAllWithDetails(): Flow<Map<FavouriteCategoryEntity, List<String>>>
@Query("SELECT * FROM favourite_categories WHERE category_id = :id AND deleted_at = 0")

View File

@@ -74,7 +74,7 @@ class FavouriteCategoriesActivity :
}
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
menu.findItem(R.id.action_reorder)?.isVisible = !viewModel.isInReorderMode()
menu.findItem(R.id.action_reorder)?.isVisible = !viewModel.isInReorderMode() && !viewModel.isEmpty()
return super.onPrepareOptionsMenu(menu)
}
@@ -139,6 +139,7 @@ class FavouriteCategoriesActivity :
private fun onCategoriesChanged(categories: List<ListModel>) {
adapter.items = categories
invalidateOptionsMenu()
}
private fun onError(e: Throwable) {
@@ -211,4 +212,4 @@ class FavouriteCategoriesActivity :
fun newIntent(context: Context) = Intent(context, FavouriteCategoriesActivity::class.java)
}
}
}

View File

@@ -6,10 +6,12 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.combine
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.BaseViewModel
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.favourites.domain.FavouritesRepository
import org.koitharu.kotatsu.favourites.ui.categories.adapter.CategoryListModel
import org.koitharu.kotatsu.list.ui.model.EmptyState
import org.koitharu.kotatsu.list.ui.model.LoadingState
import org.koitharu.kotatsu.utils.ext.asLiveDataDistinct
import org.koitharu.kotatsu.utils.ext.mapItems
@@ -47,6 +49,15 @@ class FavouritesCategoriesViewModel(
category = category,
isReorderMode = reordering,
)
}.ifEmpty {
listOf(
EmptyState(
icon = R.drawable.ic_empty_favourites,
textPrimary = R.string.text_empty_holder_primary,
textSecondary = R.string.empty_favourite_categories,
actionStringRes = 0,
)
)
}
}.asLiveDataDistinct(viewModelScope.coroutineContext + Dispatchers.Default, listOf(LoadingState))
@@ -68,6 +79,8 @@ class FavouritesCategoriesViewModel(
fun isInReorderMode(): Boolean = isReorder.value
fun isEmpty(): Boolean = detalizedCategories.value?.none { it is CategoryListModel } ?: true
fun setReorderMode(isReorderMode: Boolean) {
isReorder.value = isReorderMode
}
@@ -85,4 +98,4 @@ class FavouritesCategoriesViewModel(
repository.reorderCategories(ids)
}
}
}
}

View File

@@ -86,6 +86,7 @@ class LibraryFragment : BaseFragment<FragmentLibraryBinding>(), LibraryListEvent
}
override fun onSectionClick(section: LibrarySectionModel, view: View) {
selectionController?.clear()
val intent = when (section) {
is LibrarySectionModel.History -> HistoryActivity.newIntent(view.context)
is LibrarySectionModel.Favourites -> FavouritesActivity.newIntent(view.context, section.category)
@@ -189,4 +190,4 @@ class LibraryFragment : BaseFragment<FragmentLibraryBinding>(), LibraryListEvent
fun newInstance() = LibraryFragment()
}
}
}

View File

@@ -113,6 +113,14 @@ class LibraryViewModel(
for ((category, list) in favourites) {
result += LibrarySectionModel.Favourites(list.toUi(ListMode.GRID, this), category, R.string.show_all)
}
if (result.isEmpty()) {
result += EmptyState(
icon = R.drawable.ic_empty_history,
textPrimary = R.string.text_history_holder_primary,
textSecondary = R.string.text_history_holder_secondary,
actionStringRes = 0,
)
}
return result
}