From 5310ed3f3d7e2ada7bf644ba15d26f809d5f63d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Brey?= Date: Fri, 20 May 2022 15:24:53 +0200 Subject: [PATCH] SharedItems: show empty state when there are no shared items MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tim Krüger Signed-off-by: Álvaro Brey --- .../activities/SharedItemsActivity.kt | 22 ++++++++++++++++--- .../viewmodels/SharedItemsViewModel.kt | 11 ++-------- .../main/res/layout/activity_shared_items.xml | 6 +++++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt b/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt index 4ebed5b75..a74a2adea 100644 --- a/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt @@ -25,6 +25,7 @@ package com.nextcloud.talk.shareditems.activities import android.os.Bundle import android.util.Log import android.view.MenuItem +import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.core.content.res.ResourcesCompat import androidx.lifecycle.ViewModelProvider @@ -84,10 +85,8 @@ class SharedItemsActivity : AppCompatActivity() { viewModel = ViewModelProvider(this, viewModelFactory)[SharedItemsViewModel::class.java] viewModel.viewState.observe(this) { state -> + handleEmptyView(state) when (state) { - SharedItemsViewModel.NoSharedItemsState -> { - // todo - } is SharedItemsViewModel.LoadedState -> { val sharedMediaItems = state.items Log.d(TAG, "Items received: $sharedMediaItems") @@ -106,6 +105,9 @@ class SharedItemsActivity : AppCompatActivity() { binding.imageRecycler.layoutManager = layoutManager } is SharedItemsViewModel.TabsLoadedState -> initTabs(state.types) + else -> { + // noop + } } } @@ -121,6 +123,20 @@ class SharedItemsActivity : AppCompatActivity() { viewModel.initialize(userEntity, roomToken, SharedItemType.MEDIA) } + private fun handleEmptyView(state: SharedItemsViewModel.ViewState?) { + when (state) { + SharedItemsViewModel.NoSharedItemsState -> { + binding.emptyContainer.emptyListViewHeadline.text = getString(R.string.nc_shared_items_empty) + binding.emptyContainer.emptyListView.visibility = View.VISIBLE + binding.sharedItemsTabs.visibility = View.GONE + } + else -> { + binding.emptyContainer.emptyListView.visibility = View.GONE + binding.sharedItemsTabs.visibility = View.VISIBLE + } + } + } + private fun initTabs(sharedItemTypes: Set) { if (sharedItemTypes.contains(SharedItemType.MEDIA)) { diff --git a/app/src/main/java/com/nextcloud/talk/shareditems/viewmodels/SharedItemsViewModel.kt b/app/src/main/java/com/nextcloud/talk/shareditems/viewmodels/SharedItemsViewModel.kt index f4ca8a4f2..47e665505 100644 --- a/app/src/main/java/com/nextcloud/talk/shareditems/viewmodels/SharedItemsViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/shareditems/viewmodels/SharedItemsViewModel.kt @@ -48,22 +48,15 @@ class SharedItemsViewModel @Inject constructor( // items sealed interface ViewState + object InitialState : ViewState object NoSharedItemsState : ViewState open class TabsLoadedState(val types: Set) : ViewState class LoadedState(types: Set, val items: SharedMediaItems) : TabsLoadedState(types) - private val _viewState: MutableLiveData = MutableLiveData(NoSharedItemsState) + private val _viewState: MutableLiveData = MutableLiveData(InitialState) val viewState: LiveData get() = _viewState - // private val _sharedItems: MutableLiveData by lazy { - // MutableLiveData().also { - // loadItems(_currentItemType) - // } - // } - // val sharedItems: LiveData - // get() = _sharedItems - fun loadNextItems() { when (val currentState = _viewState.value) { is LoadedState -> { diff --git a/app/src/main/res/layout/activity_shared_items.xml b/app/src/main/res/layout/activity_shared_items.xml index dc65d9f27..54243b293 100644 --- a/app/src/main/res/layout/activity_shared_items.xml +++ b/app/src/main/res/layout/activity_shared_items.xml @@ -56,6 +56,12 @@ + + Shared items Images, files, voice messages… + No shared items Talk recording from %1$s (%2$s)