Fix state handling in SharedItemsActivity

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
This commit is contained in:
Álvaro Brey 2022-05-23 11:06:57 +02:00 committed by Tim Krüger
parent 05340fc466
commit 1c9730f909
No known key found for this signature in database
GPG Key ID: FECE3A7222C52A4E

View File

@ -85,8 +85,14 @@ class SharedItemsActivity : AppCompatActivity() {
viewModel = ViewModelProvider(this, viewModelFactory)[SharedItemsViewModel::class.java]
viewModel.viewState.observe(this) { state ->
handleEmptyLoadingView(state)
clearEmptyLoading()
when (state) {
is SharedItemsViewModel.LoadingItemsState, SharedItemsViewModel.InitialState -> {
showLoading()
}
is SharedItemsViewModel.NoSharedItemsState -> {
showEmpty()
}
is SharedItemsViewModel.LoadedState -> {
val sharedMediaItems = state.items
Log.d(TAG, "Items received: $sharedMediaItems")
@ -107,9 +113,6 @@ class SharedItemsActivity : AppCompatActivity() {
is SharedItemsViewModel.TypesLoadedState -> {
initTabs(state.types)
}
else -> {
// noop
}
}
}
@ -125,19 +128,20 @@ class SharedItemsActivity : AppCompatActivity() {
viewModel.initialize(userEntity, roomToken)
}
private fun handleEmptyLoadingView(state: SharedItemsViewModel.ViewState?) {
binding.emptyContainer.emptyListViewHeadline.text = when (state) {
SharedItemsViewModel.NoSharedItemsState -> getString(R.string.nc_shared_items_description)
else -> getString(R.string.file_list_loading)
}
binding.emptyContainer.emptyListView.visibility = when (state) {
SharedItemsViewModel.NoSharedItemsState, is SharedItemsViewModel.LoadingItemsState -> View.VISIBLE
else -> View.GONE
}
binding.sharedItemsTabs.visibility = when (state) {
SharedItemsViewModel.NoSharedItemsState -> View.GONE
else -> View.VISIBLE
}
private fun clearEmptyLoading() {
binding.sharedItemsTabs.visibility = View.VISIBLE
binding.emptyContainer.emptyListView.visibility = View.GONE
}
private fun showLoading() {
binding.emptyContainer.emptyListViewHeadline.text = getString(R.string.file_list_loading)
binding.emptyContainer.emptyListView.visibility = View.VISIBLE
}
private fun showEmpty() {
binding.emptyContainer.emptyListViewHeadline.text = getString(R.string.nc_shared_items_empty)
binding.emptyContainer.emptyListView.visibility = View.VISIBLE
binding.sharedItemsTabs.visibility = View.GONE
}
private fun initTabs(sharedItemTypes: Set<SharedItemType>) {