|
@@ -96,20 +96,18 @@ import com.nextcloud.talk.messagesearch.MessageSearchHelper
|
|
import com.nextcloud.talk.messagesearch.MessageSearchHelper.MessageSearchResults
|
|
import com.nextcloud.talk.messagesearch.MessageSearchHelper.MessageSearchResults
|
|
import com.nextcloud.talk.models.json.conversations.Conversation
|
|
import com.nextcloud.talk.models.json.conversations.Conversation
|
|
import com.nextcloud.talk.models.json.conversations.RoomsOverall
|
|
import com.nextcloud.talk.models.json.conversations.RoomsOverall
|
|
-import com.nextcloud.talk.models.json.status.Status
|
|
|
|
-import com.nextcloud.talk.models.json.statuses.StatusesOverall
|
|
|
|
import com.nextcloud.talk.repositories.unifiedsearch.UnifiedSearchRepository
|
|
import com.nextcloud.talk.repositories.unifiedsearch.UnifiedSearchRepository
|
|
import com.nextcloud.talk.ui.dialog.ChooseAccountDialogFragment
|
|
import com.nextcloud.talk.ui.dialog.ChooseAccountDialogFragment
|
|
import com.nextcloud.talk.ui.dialog.ChooseAccountShareToDialogFragment
|
|
import com.nextcloud.talk.ui.dialog.ChooseAccountShareToDialogFragment
|
|
import com.nextcloud.talk.ui.dialog.ConversationsListBottomDialog
|
|
import com.nextcloud.talk.ui.dialog.ConversationsListBottomDialog
|
|
import com.nextcloud.talk.users.UserManager
|
|
import com.nextcloud.talk.users.UserManager
|
|
import com.nextcloud.talk.utils.ApiUtils
|
|
import com.nextcloud.talk.utils.ApiUtils
|
|
-import com.nextcloud.talk.utils.ParticipantPermissions
|
|
|
|
import com.nextcloud.talk.utils.ClosedInterfaceImpl
|
|
import com.nextcloud.talk.utils.ClosedInterfaceImpl
|
|
import com.nextcloud.talk.utils.ConductorRemapping.remapChatController
|
|
import com.nextcloud.talk.utils.ConductorRemapping.remapChatController
|
|
import com.nextcloud.talk.utils.DisplayUtils
|
|
import com.nextcloud.talk.utils.DisplayUtils
|
|
import com.nextcloud.talk.utils.FileUtils
|
|
import com.nextcloud.talk.utils.FileUtils
|
|
import com.nextcloud.talk.utils.Mimetype
|
|
import com.nextcloud.talk.utils.Mimetype
|
|
|
|
+import com.nextcloud.talk.utils.ParticipantPermissions
|
|
import com.nextcloud.talk.utils.bundle.BundleKeys
|
|
import com.nextcloud.talk.utils.bundle.BundleKeys
|
|
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ACTIVE_CONVERSATION
|
|
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ACTIVE_CONVERSATION
|
|
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_FORWARD_HIDE_SOURCE_ROOM
|
|
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_FORWARD_HIDE_SOURCE_ROOM
|
|
@@ -131,7 +129,6 @@ import eu.davidea.flexibleadapter.FlexibleAdapter
|
|
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
|
|
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
|
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
|
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
|
|
import io.reactivex.Observable
|
|
import io.reactivex.Observable
|
|
-import io.reactivex.Observer
|
|
|
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
|
import io.reactivex.disposables.Disposable
|
|
import io.reactivex.disposables.Disposable
|
|
import io.reactivex.schedulers.Schedulers
|
|
import io.reactivex.schedulers.Schedulers
|
|
@@ -198,7 +195,6 @@ class ConversationsListController(bundle: Bundle) :
|
|
private var layoutManager: SmoothScrollLinearLayoutManager? = null
|
|
private var layoutManager: SmoothScrollLinearLayoutManager? = null
|
|
private val callHeaderItems = HashMap<String, GenericTextHeaderItem>()
|
|
private val callHeaderItems = HashMap<String, GenericTextHeaderItem>()
|
|
private var conversationsListBottomDialog: ConversationsListBottomDialog? = null
|
|
private var conversationsListBottomDialog: ConversationsListBottomDialog? = null
|
|
- private val userStatuses = HashMap<String?, Status>()
|
|
|
|
private var searchHelper: MessageSearchHelper? = null
|
|
private var searchHelper: MessageSearchHelper? = null
|
|
private var searchViewDisposable: Disposable? = null
|
|
private var searchViewDisposable: Disposable? = null
|
|
|
|
|
|
@@ -318,7 +314,7 @@ class ConversationsListController(bundle: Bundle) :
|
|
viewThemeUtils.material
|
|
viewThemeUtils.material
|
|
.colorMaterialTextButton((activity as MainActivity?)!!.binding.switchAccountButton)
|
|
.colorMaterialTextButton((activity as MainActivity?)!!.binding.switchAccountButton)
|
|
}
|
|
}
|
|
- fetchData()
|
|
|
|
|
|
+ fetchRooms()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -493,39 +489,9 @@ class ConversationsListController(bundle: Bundle) :
|
|
searchItem!!.expandActionView()
|
|
searchItem!!.expandActionView()
|
|
}
|
|
}
|
|
|
|
|
|
- fun fetchData() {
|
|
|
|
- if (isUserStatusAvailable(userManager.currentUser.blockingGet())) {
|
|
|
|
- fetchUserStatusesAndRooms()
|
|
|
|
- } else {
|
|
|
|
- fetchRooms()
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ fun fetchRooms() {
|
|
|
|
+ val includeStatus = isUserStatusAvailable(userManager.currentUser.blockingGet())
|
|
|
|
|
|
- private fun fetchUserStatusesAndRooms() {
|
|
|
|
- ncApi.getUserStatuses(credentials, ApiUtils.getUrlForUserStatuses(currentUser!!.baseUrl))
|
|
|
|
- .subscribe(object : Observer<StatusesOverall> {
|
|
|
|
- override fun onSubscribe(d: Disposable) {
|
|
|
|
- // unused atm
|
|
|
|
- }
|
|
|
|
- override fun onNext(statusesOverall: StatusesOverall) {
|
|
|
|
- for (status in statusesOverall.ocs!!.data!!) {
|
|
|
|
- userStatuses[status.userId] = status
|
|
|
|
- }
|
|
|
|
- fetchRooms()
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- override fun onError(e: Throwable) {
|
|
|
|
- Log.e(TAG, "failed to fetch user statuses", e)
|
|
|
|
- fetchRooms()
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- override fun onComplete() {
|
|
|
|
- // unused atm
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private fun fetchRooms() {
|
|
|
|
dispose(null)
|
|
dispose(null)
|
|
isRefreshing = true
|
|
isRefreshing = true
|
|
conversationItems = ArrayList()
|
|
conversationItems = ArrayList()
|
|
@@ -538,7 +504,8 @@ class ConversationsListController(bundle: Bundle) :
|
|
ApiUtils.getUrlForRooms(
|
|
ApiUtils.getUrlForRooms(
|
|
apiVersion,
|
|
apiVersion,
|
|
currentUser!!.baseUrl
|
|
currentUser!!.baseUrl
|
|
- )
|
|
|
|
|
|
+ ),
|
|
|
|
+ includeStatus
|
|
)
|
|
)
|
|
.subscribeOn(Schedulers.io())
|
|
.subscribeOn(Schedulers.io())
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
@@ -589,7 +556,6 @@ class ConversationsListController(bundle: Bundle) :
|
|
conversation,
|
|
conversation,
|
|
currentUser,
|
|
currentUser,
|
|
activity,
|
|
activity,
|
|
- userStatuses[conversation.name],
|
|
|
|
viewThemeUtils
|
|
viewThemeUtils
|
|
)
|
|
)
|
|
conversationItems.add(conversationItem)
|
|
conversationItems.add(conversationItem)
|
|
@@ -598,7 +564,6 @@ class ConversationsListController(bundle: Bundle) :
|
|
currentUser,
|
|
currentUser,
|
|
activity,
|
|
activity,
|
|
callHeaderItems[headerTitle],
|
|
callHeaderItems[headerTitle],
|
|
- userStatuses[conversation.name],
|
|
|
|
viewThemeUtils
|
|
viewThemeUtils
|
|
)
|
|
)
|
|
conversationItemsWithHeader.add(conversationItemWithHeader)
|
|
conversationItemsWithHeader.add(conversationItemWithHeader)
|
|
@@ -681,7 +646,6 @@ class ConversationsListController(bundle: Bundle) :
|
|
currentUser,
|
|
currentUser,
|
|
activity,
|
|
activity,
|
|
callHeaderItems[headerTitle],
|
|
callHeaderItems[headerTitle],
|
|
- userStatuses[conversation.name],
|
|
|
|
viewThemeUtils
|
|
viewThemeUtils
|
|
)
|
|
)
|
|
openConversationItems.add(conversationItem)
|
|
openConversationItems.add(conversationItem)
|
|
@@ -742,7 +706,7 @@ class ConversationsListController(bundle: Bundle) :
|
|
}
|
|
}
|
|
false
|
|
false
|
|
}
|
|
}
|
|
- binding.swipeRefreshLayoutView.setOnRefreshListener { fetchData() }
|
|
|
|
|
|
+ binding.swipeRefreshLayoutView.setOnRefreshListener { fetchRooms() }
|
|
viewThemeUtils.androidx.themeSwipeRefreshLayout(binding.swipeRefreshLayoutView)
|
|
viewThemeUtils.androidx.themeSwipeRefreshLayout(binding.swipeRefreshLayoutView)
|
|
binding.emptyLayout.setOnClickListener { showNewConversationsScreen() }
|
|
binding.emptyLayout.setOnClickListener { showNewConversationsScreen() }
|
|
binding.floatingActionButton.setOnClickListener {
|
|
binding.floatingActionButton.setOnClickListener {
|
|
@@ -1182,7 +1146,7 @@ class ConversationsListController(bundle: Bundle) :
|
|
if (currentUser != null && eventStatus.userId == currentUser!!.id) {
|
|
if (currentUser != null && eventStatus.userId == currentUser!!.id) {
|
|
when (eventStatus.eventType) {
|
|
when (eventStatus.eventType) {
|
|
EventStatus.EventType.CONVERSATION_UPDATE -> if (eventStatus.isAllGood && !isRefreshing) {
|
|
EventStatus.EventType.CONVERSATION_UPDATE -> if (eventStatus.isAllGood && !isRefreshing) {
|
|
- fetchData()
|
|
|
|
|
|
+ fetchRooms()
|
|
}
|
|
}
|
|
else -> {}
|
|
else -> {}
|
|
}
|
|
}
|
|
@@ -1191,7 +1155,7 @@ class ConversationsListController(bundle: Bundle) :
|
|
|
|
|
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
|
fun onMessageEvent(conversationsListFetchDataEvent: ConversationsListFetchDataEvent?) {
|
|
fun onMessageEvent(conversationsListFetchDataEvent: ConversationsListFetchDataEvent?) {
|
|
- fetchData()
|
|
|
|
|
|
+ fetchRooms()
|
|
Handler().postDelayed({
|
|
Handler().postDelayed({
|
|
if (conversationsListBottomDialog!!.isShowing) {
|
|
if (conversationsListBottomDialog!!.isShowing) {
|
|
conversationsListBottomDialog!!.dismiss()
|
|
conversationsListBottomDialog!!.dismiss()
|