Ensure updateMessageRequestAcceptedState runs on main thread.

This commit is contained in:
Alex Hart
2024-12-02 15:41:29 -04:00
committed by Greyson Parrelli
parent d6be14a95f
commit 9fa6d4774d

View File

@@ -42,6 +42,7 @@ import android.widget.TextView.OnEditorActionListener
import android.widget.Toast import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.annotation.MainThread
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ActionMode import androidx.appcompat.view.ActionMode
@@ -893,13 +894,13 @@ class ConversationFragment :
.conversationThreadState .conversationThreadState
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.doOnSuccess { state -> .doOnSuccess { state ->
updateMessageRequestAcceptedState(state.meta.messageRequestData.isMessageRequestAccepted)
SignalLocalMetrics.ConversationOpen.onDataLoaded() SignalLocalMetrics.ConversationOpen.onDataLoaded()
conversationItemDecorations.setFirstUnreadCount(state.meta.unreadCount) conversationItemDecorations.setFirstUnreadCount(state.meta.unreadCount)
colorizer.onGroupMembershipChanged(state.meta.groupMemberAcis) colorizer.onGroupMembershipChanged(state.meta.groupMemberAcis)
} }
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doOnSuccess { state -> .doOnSuccess { state ->
updateMessageRequestAcceptedState(state.meta.messageRequestData.isMessageRequestAccepted)
moveToStartPosition(state.meta) moveToStartPosition(state.meta)
} }
.flatMapObservable { it.items.data } .flatMapObservable { it.items.data }
@@ -1313,14 +1314,9 @@ class ConversationFragment :
updateMessageRequestAcceptedState(!viewModel.hasMessageRequestState) updateMessageRequestAcceptedState(!viewModel.hasMessageRequestState)
} }
@MainThread
private fun updateMessageRequestAcceptedState(isMessageRequestAccepted: Boolean) { private fun updateMessageRequestAcceptedState(isMessageRequestAccepted: Boolean) {
if (binding.conversationItemRecycler.isInLayout) { adapter.setMessageRequestIsAccepted(isMessageRequestAccepted)
binding.conversationItemRecycler.doAfterNextLayout {
adapter.setMessageRequestIsAccepted(isMessageRequestAccepted)
}
} else {
adapter.setMessageRequestIsAccepted(isMessageRequestAccepted)
}
} }
private fun invalidateOptionsMenu() { private fun invalidateOptionsMenu() {