mirror of
https://github.com/nextcloud/talk-android
synced 2025-03-07 06:39:45 +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.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
|
import android.view.View
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.content.res.ResourcesCompat
|
import androidx.core.content.res.ResourcesCompat
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
@ -84,10 +85,8 @@ class SharedItemsActivity : AppCompatActivity() {
|
|||||||
viewModel = ViewModelProvider(this, viewModelFactory)[SharedItemsViewModel::class.java]
|
viewModel = ViewModelProvider(this, viewModelFactory)[SharedItemsViewModel::class.java]
|
||||||
|
|
||||||
viewModel.viewState.observe(this) { state ->
|
viewModel.viewState.observe(this) { state ->
|
||||||
|
handleEmptyView(state)
|
||||||
when (state) {
|
when (state) {
|
||||||
SharedItemsViewModel.NoSharedItemsState -> {
|
|
||||||
// todo
|
|
||||||
}
|
|
||||||
is SharedItemsViewModel.LoadedState -> {
|
is SharedItemsViewModel.LoadedState -> {
|
||||||
val sharedMediaItems = state.items
|
val sharedMediaItems = state.items
|
||||||
Log.d(TAG, "Items received: $sharedMediaItems")
|
Log.d(TAG, "Items received: $sharedMediaItems")
|
||||||
@ -106,6 +105,9 @@ class SharedItemsActivity : AppCompatActivity() {
|
|||||||
binding.imageRecycler.layoutManager = layoutManager
|
binding.imageRecycler.layoutManager = layoutManager
|
||||||
}
|
}
|
||||||
is SharedItemsViewModel.TabsLoadedState -> initTabs(state.types)
|
is SharedItemsViewModel.TabsLoadedState -> initTabs(state.types)
|
||||||
|
else -> {
|
||||||
|
// noop
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,6 +123,20 @@ class SharedItemsActivity : AppCompatActivity() {
|
|||||||
viewModel.initialize(userEntity, roomToken, SharedItemType.MEDIA)
|
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>) {
|
private fun initTabs(sharedItemTypes: Set<SharedItemType>) {
|
||||||
|
|
||||||
if (sharedItemTypes.contains(SharedItemType.MEDIA)) {
|
if (sharedItemTypes.contains(SharedItemType.MEDIA)) {
|
||||||
|
@ -48,22 +48,15 @@ class SharedItemsViewModel @Inject constructor(
|
|||||||
|
|
||||||
// items
|
// items
|
||||||
sealed interface ViewState
|
sealed interface ViewState
|
||||||
|
object InitialState : ViewState
|
||||||
object NoSharedItemsState : ViewState
|
object NoSharedItemsState : ViewState
|
||||||
open class TabsLoadedState(val types: Set<SharedItemType>) : ViewState
|
open class TabsLoadedState(val types: Set<SharedItemType>) : ViewState
|
||||||
class LoadedState(types: Set<SharedItemType>, val items: SharedMediaItems) : TabsLoadedState(types)
|
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>
|
val viewState: LiveData<ViewState>
|
||||||
get() = _viewState
|
get() = _viewState
|
||||||
|
|
||||||
// private val _sharedItems: MutableLiveData<SharedMediaItems> by lazy {
|
|
||||||
// MutableLiveData<SharedMediaItems>().also {
|
|
||||||
// loadItems(_currentItemType)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// val sharedItems: LiveData<SharedMediaItems>
|
|
||||||
// get() = _sharedItems
|
|
||||||
|
|
||||||
fun loadNextItems() {
|
fun loadNextItems() {
|
||||||
when (val currentState = _viewState.value) {
|
when (val currentState = _viewState.value) {
|
||||||
is LoadedState -> {
|
is LoadedState -> {
|
||||||
|
@ -56,6 +56,12 @@
|
|||||||
|
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</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
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/image_recycler"
|
android:id="@+id/image_recycler"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -423,6 +423,7 @@
|
|||||||
<!-- shared items -->
|
<!-- shared items -->
|
||||||
<string name="nc_shared_items">Shared items</string>
|
<string name="nc_shared_items">Shared items</string>
|
||||||
<string name="nc_shared_items_description">Images, files, voice messages…</string>
|
<string name="nc_shared_items_description">Images, files, voice messages…</string>
|
||||||
|
<string name="nc_shared_items_empty">No shared items</string>
|
||||||
|
|
||||||
<!-- voice messages -->
|
<!-- voice messages -->
|
||||||
<string name="nc_voice_message_filename">Talk recording from %1$s (%2$s)</string>
|
<string name="nc_voice_message_filename">Talk recording from %1$s (%2$s)</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user