mirror of
https://github.com/nextcloud/talk-android
synced 2025-03-06 22:29:09 +00:00
SharedItems: show empty state when there are no shared items
Co-authored-by: Tim Krüger <t@timkrueger.me> Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
This commit is contained in:
parent
ae65de6cce
commit
5310ed3f3d
@ -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<SharedItemType>) {
|
||||
|
||||
if (sharedItemTypes.contains(SharedItemType.MEDIA)) {
|
||||
|
@ -48,22 +48,15 @@ class SharedItemsViewModel @Inject constructor(
|
||||
|
||||
// items
|
||||
sealed interface ViewState
|
||||
object InitialState : ViewState
|
||||
object NoSharedItemsState : ViewState
|
||||
open class TabsLoadedState(val types: Set<SharedItemType>) : ViewState
|
||||
class LoadedState(types: Set<SharedItemType>, val items: SharedMediaItems) : TabsLoadedState(types)
|
||||
|
||||
private val _viewState: MutableLiveData<ViewState> = MutableLiveData(NoSharedItemsState)
|
||||
private val _viewState: MutableLiveData<ViewState> = MutableLiveData(InitialState)
|
||||
val viewState: LiveData<ViewState>
|
||||
get() = _viewState
|
||||
|
||||
// private val _sharedItems: MutableLiveData<SharedMediaItems> by lazy {
|
||||
// MutableLiveData<SharedMediaItems>().also {
|
||||
// loadItems(_currentItemType)
|
||||
// }
|
||||
// }
|
||||
// val sharedItems: LiveData<SharedMediaItems>
|
||||
// get() = _sharedItems
|
||||
|
||||
fun loadNextItems() {
|
||||
when (val currentState = _viewState.value) {
|
||||
is LoadedState -> {
|
||||
|
@ -56,6 +56,12 @@
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<include
|
||||
android:id="@+id/emptyContainer"
|
||||
layout="@layout/empty_list"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/image_recycler"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -423,6 +423,7 @@
|
||||
<!-- shared items -->
|
||||
<string name="nc_shared_items">Shared items</string>
|
||||
<string name="nc_shared_items_description">Images, files, voice messages…</string>
|
||||
<string name="nc_shared_items_empty">No shared items</string>
|
||||
|
||||
<!-- voice messages -->
|
||||
<string name="nc_voice_message_filename">Talk recording from %1$s (%2$s)</string>
|
||||
|
Loading…
Reference in New Issue
Block a user