Add missing empty states
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user