mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 19:49:33 +01:00
Move currentTab from activity to viewmodel
Signed-off-by: Tim Krüger <t@timkrueger.me>
This commit is contained in:
parent
36769e4fbe
commit
6716726ff1
@ -26,13 +26,10 @@ class SharedItemsActivity : AppCompatActivity() {
|
||||
|
||||
private lateinit var binding: ActivitySharedItemsBinding
|
||||
private lateinit var viewModel: SharedItemsViewModel
|
||||
private lateinit var currentTab: SharedItemType
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
currentTab = SharedItemType.MEDIA
|
||||
|
||||
val roomToken = intent.getStringExtra(KEY_ROOM_TOKEN)!!
|
||||
val conversationName = intent.getStringExtra(KEY_CONVERSATION_NAME)
|
||||
val userEntity = intent.getParcelableExtra<UserEntity>(KEY_USER_ENTITY)!!
|
||||
@ -57,17 +54,17 @@ class SharedItemsActivity : AppCompatActivity() {
|
||||
|
||||
viewModel = ViewModelProvider(
|
||||
this,
|
||||
SharedItemsViewModel.Factory(userEntity, roomToken, currentTab)
|
||||
SharedItemsViewModel.Factory(userEntity, roomToken, SharedItemType.MEDIA)
|
||||
).get(SharedItemsViewModel::class.java)
|
||||
|
||||
viewModel.sharedItemType.observe(this) {
|
||||
viewModel.sharedItemTypes.observe(this) {
|
||||
initTabs(it)
|
||||
}
|
||||
|
||||
viewModel.sharedItems.observe(this) {
|
||||
Log.d(TAG, "Items received: $it")
|
||||
|
||||
if (currentTab == SharedItemType.MEDIA) {
|
||||
if (viewModel.currentItemType == SharedItemType.MEDIA) {
|
||||
val adapter = SharedItemsGridAdapter()
|
||||
adapter.items = it.items
|
||||
adapter.authHeader = it.authHeader
|
||||
@ -97,11 +94,6 @@ class SharedItemsActivity : AppCompatActivity() {
|
||||
})
|
||||
}
|
||||
|
||||
fun updateItems(type: SharedItemType) {
|
||||
currentTab = type
|
||||
viewModel.loadItems(type)
|
||||
}
|
||||
|
||||
private fun initTabs(sharedItemTypes: Set<SharedItemType>) {
|
||||
|
||||
if (sharedItemTypes.contains(SharedItemType.MEDIA)) {
|
||||
@ -155,7 +147,7 @@ class SharedItemsActivity : AppCompatActivity() {
|
||||
|
||||
binding.sharedItemsTabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
||||
override fun onTabSelected(tab: TabLayout.Tab) {
|
||||
updateItems(tab.tag as SharedItemType)
|
||||
viewModel.loadItems(tab.tag as SharedItemType)
|
||||
}
|
||||
|
||||
override fun onTabUnselected(tab: TabLayout.Tab) = Unit
|
||||
|
@ -37,12 +37,11 @@ class SharedItemsRepository {
|
||||
type.toString().lowercase(Locale.ROOT),
|
||||
lastKnownMessageId,
|
||||
BATCH_SIZE
|
||||
).map { map(it, type, parameters) }
|
||||
).map { map(it, parameters) }
|
||||
}
|
||||
|
||||
private fun map(
|
||||
response: Response<ChatShareOverall>,
|
||||
type: SharedItemType,
|
||||
parameters: Parameters
|
||||
): SharedMediaItems {
|
||||
|
||||
@ -84,7 +83,6 @@ class SharedItemsRepository {
|
||||
val moreItemsExisting = items.count() == BATCH_SIZE
|
||||
|
||||
return SharedMediaItems(
|
||||
type,
|
||||
sortedMutableItems,
|
||||
chatLastGiven,
|
||||
moreItemsExisting,
|
||||
|
@ -1,7 +1,6 @@
|
||||
package com.nextcloud.talk.repositories
|
||||
|
||||
class SharedMediaItems(
|
||||
val type: SharedItemType,
|
||||
val items: List<SharedItem>,
|
||||
var lastSeenId: Int?,
|
||||
var moreItemsExisting: Boolean,
|
||||
|
@ -21,7 +21,7 @@ class SharedItemsViewModel(
|
||||
) :
|
||||
ViewModel() {
|
||||
|
||||
private val _sharedItemType: MutableLiveData<Set<SharedItemType>> by lazy {
|
||||
private val _sharedItemTypes: MutableLiveData<Set<SharedItemType>> by lazy {
|
||||
MutableLiveData<Set<SharedItemType>>().also {
|
||||
availableTypes()
|
||||
}
|
||||
@ -33,24 +33,32 @@ class SharedItemsViewModel(
|
||||
}
|
||||
}
|
||||
|
||||
val sharedItemType: LiveData<Set<SharedItemType>>
|
||||
get() = _sharedItemType
|
||||
private var _currentItemType = initialType
|
||||
|
||||
val sharedItemTypes: LiveData<Set<SharedItemType>>
|
||||
get() = _sharedItemTypes
|
||||
|
||||
val sharedItems: LiveData<SharedMediaItems>
|
||||
get() = _sharedItems
|
||||
|
||||
val currentItemType: SharedItemType
|
||||
get() = _currentItemType
|
||||
|
||||
fun loadNextItems() {
|
||||
val currentSharedItems = sharedItems.value!!
|
||||
|
||||
if (currentSharedItems.moreItemsExisting) {
|
||||
repository.media(repositoryParameters, currentSharedItems.type, currentSharedItems.lastSeenId)
|
||||
repository.media(repositoryParameters, _currentItemType, currentSharedItems.lastSeenId)
|
||||
?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
?.subscribe(observer(currentSharedItems.type, false))
|
||||
?.subscribe(observer(_currentItemType, false))
|
||||
}
|
||||
}
|
||||
|
||||
fun loadItems(type: SharedItemType) {
|
||||
|
||||
_currentItemType = type
|
||||
|
||||
repository.media(repositoryParameters, type)?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
?.subscribe(observer(type, true))
|
||||
@ -79,7 +87,6 @@ class SharedItemsViewModel(
|
||||
val oldItems = this@SharedItemsViewModel._sharedItems.value!!.items
|
||||
this@SharedItemsViewModel._sharedItems.value =
|
||||
SharedMediaItems(
|
||||
type,
|
||||
oldItems + newSharedItems!!.items,
|
||||
newSharedItems!!.lastSeenId,
|
||||
newSharedItems!!.moreItemsExisting,
|
||||
@ -108,7 +115,7 @@ class SharedItemsViewModel(
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
this@SharedItemsViewModel._sharedItemType.value = this.types
|
||||
this@SharedItemsViewModel._sharedItemTypes.value = this.types
|
||||
}
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user