From 6716726ff106bed34770dcf9bc4d75e33a0e9a1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Kr=C3=BCger?= Date: Tue, 10 May 2022 16:22:29 +0200 Subject: [PATCH] Move currentTab from activity to viewmodel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tim Krüger --- .../talk/activities/SharedItemsActivity.kt | 16 ++++---------- .../repositories/SharedItemsRepository.kt | 4 +--- .../talk/repositories/SharedMediaItems.kt | 1 - .../talk/viewmodels/SharedItemsViewModel.kt | 21 ++++++++++++------- 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/SharedItemsActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/SharedItemsActivity.kt index 76fb75600..dade8fb7f 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/SharedItemsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/SharedItemsActivity.kt @@ -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(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) { 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 diff --git a/app/src/main/java/com/nextcloud/talk/repositories/SharedItemsRepository.kt b/app/src/main/java/com/nextcloud/talk/repositories/SharedItemsRepository.kt index aa9d97fbc..270df6139 100644 --- a/app/src/main/java/com/nextcloud/talk/repositories/SharedItemsRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/repositories/SharedItemsRepository.kt @@ -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, - type: SharedItemType, parameters: Parameters ): SharedMediaItems { @@ -84,7 +83,6 @@ class SharedItemsRepository { val moreItemsExisting = items.count() == BATCH_SIZE return SharedMediaItems( - type, sortedMutableItems, chatLastGiven, moreItemsExisting, diff --git a/app/src/main/java/com/nextcloud/talk/repositories/SharedMediaItems.kt b/app/src/main/java/com/nextcloud/talk/repositories/SharedMediaItems.kt index fc5e6b897..6572c1595 100644 --- a/app/src/main/java/com/nextcloud/talk/repositories/SharedMediaItems.kt +++ b/app/src/main/java/com/nextcloud/talk/repositories/SharedMediaItems.kt @@ -1,7 +1,6 @@ package com.nextcloud.talk.repositories class SharedMediaItems( - val type: SharedItemType, val items: List, var lastSeenId: Int?, var moreItemsExisting: Boolean, diff --git a/app/src/main/java/com/nextcloud/talk/viewmodels/SharedItemsViewModel.kt b/app/src/main/java/com/nextcloud/talk/viewmodels/SharedItemsViewModel.kt index 9f6121071..7123b3200 100644 --- a/app/src/main/java/com/nextcloud/talk/viewmodels/SharedItemsViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/viewmodels/SharedItemsViewModel.kt @@ -21,7 +21,7 @@ class SharedItemsViewModel( ) : ViewModel() { - private val _sharedItemType: MutableLiveData> by lazy { + private val _sharedItemTypes: MutableLiveData> by lazy { MutableLiveData>().also { availableTypes() } @@ -33,24 +33,32 @@ class SharedItemsViewModel( } } - val sharedItemType: LiveData> - get() = _sharedItemType + private var _currentItemType = initialType + + val sharedItemTypes: LiveData> + get() = _sharedItemTypes val sharedItems: LiveData 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 } }) }