diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/ThreadDetailsFragment.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/ThreadDetailsFragment.kt index 2bdaea5fd..1952736e5 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/ThreadDetailsFragment.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/ThreadDetailsFragment.kt @@ -57,6 +57,7 @@ import com.flowcrypt.email.extensions.androidx.fragment.app.toast import com.flowcrypt.email.extensions.exceptionMsg import com.flowcrypt.email.extensions.gone import com.flowcrypt.email.extensions.showDialogFragment +import com.flowcrypt.email.extensions.visibleOrGone import com.flowcrypt.email.jetpack.lifecycle.CustomAndroidViewModelFactory import com.flowcrypt.email.jetpack.viewmodel.RecipientsViewModel import com.flowcrypt.email.jetpack.viewmodel.ThreadDetailsViewModel @@ -144,6 +145,19 @@ class ThreadDetailsFragment : BaseFragment(), Prog } private val messagesInThreadListAdapter = MessagesInThreadListAdapter( + object : MessagesInThreadListAdapter.AdapterListener { + override fun onDataSubmitted(list: List?) { + val freshestMessageInConversation = + (list?.getOrNull(1) as? MessagesInThreadListAdapter.Message) + updateThreadReplyButtons( + if (freshestMessageInConversation?.messageEntity?.isDraft == true) { + null + } else { + freshestMessageInConversation + } + ) + } + }, object : MessagesInThreadListAdapter.OnMessageActionsListener { override fun onMessageClick(position: Int, message: MessagesInThreadListAdapter.Message) { processMessageClick(message) @@ -457,6 +471,10 @@ class ThreadDetailsFragment : BaseFragment(), Prog } private fun initViews() { + binding?.layoutReplyButtons?.replyButton?.gone() + binding?.layoutReplyButtons?.replyAllButton?.gone() + binding?.layoutReplyButtons?.forwardButton?.gone() + binding?.recyclerViewThreads?.apply { val linearLayoutManager = LinearLayoutManager(context) layoutManager = linearLayoutManager @@ -498,16 +516,6 @@ class ThreadDetailsFragment : BaseFragment(), Prog binding?.swipeRefreshLayout?.isEnabled = true messagesInThreadListAdapter.submitList(items) showContent() - val freshestMessageInConversation = - (items.getOrNull(1) as? MessagesInThreadListAdapter.Message) - updateThreadReplyButtons( - if (freshestMessageInConversation?.messageEntity?.isDraft == true) { - null - } else { - freshestMessageInConversation - } - ) - if (!it.data.silentUpdate) { tryToOpenTheFreshestMessage(items) } @@ -969,8 +977,11 @@ class ThreadDetailsFragment : BaseFragment(), Prog val replyAllButton = binding?.layoutReplyButtons?.replyAllButton val forwardButton = binding?.layoutReplyButtons?.forwardButton + replyButton?.visibleOrGone(message != null) + replyAllButton?.visibleOrGone(message != null) + forwardButton?.visibleOrGone(message != null) + if (message == null) { - binding?.layoutReplyButtons?.root?.gone() return } diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/adapter/MessagesInThreadListAdapter.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/adapter/MessagesInThreadListAdapter.kt index 4f0d23094..9a4a38e74 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/adapter/MessagesInThreadListAdapter.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/adapter/MessagesInThreadListAdapter.kt @@ -70,7 +70,10 @@ import java.nio.charset.StandardCharsets /** * @author Denys Bondarenko */ -class MessagesInThreadListAdapter(private val onMessageActionsListener: OnMessageActionsListener) : +class MessagesInThreadListAdapter( + private val adapterListener: AdapterListener, + private val onMessageActionsListener: OnMessageActionsListener +) : ListAdapter( DIFF_UTIL_ITEM_CALLBACK ) { @@ -166,10 +169,7 @@ class MessagesInThreadListAdapter(private val onMessageActionsListener: OnMessag override fun submitList(list: List?) { super.submitList(list) - LogsUtil.d( - TAG, - "submitList|list.size = ${list?.size}" - ) + adapterListener.onDataSubmitted(list) } fun getMessageItemById(messageId: Long): Message? { @@ -198,6 +198,10 @@ class MessagesInThreadListAdapter(private val onMessageActionsListener: OnMessag fun getAccount(): AccountEntity? } + interface AdapterListener { + fun onDataSubmitted(list: List?) + } + abstract inner class BaseViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { protected val context: Context get() = itemView.context diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/adapter/MsgsPagedListAdapter.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/adapter/MsgsPagedListAdapter.kt index 24ca21aff..8735dd4e6 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/adapter/MsgsPagedListAdapter.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/adapter/MsgsPagedListAdapter.kt @@ -242,10 +242,12 @@ class MsgsPagedListAdapter(private val onMessageClickListener: OnMessageClickLis binding.textViewSenderAddress.text = if (messageEntity.isGmailThread) { messageEntity.getThreadSpannableString(context).let { spannableString -> SpannableStringBuilder(senderAddress).apply { - if (spannableString.startsWith("(")) { - append(" ") - } else { - append(", ") + if (spannableString.isNotEmpty()) { + if (spannableString.startsWith("(")) { + append(" ") + } else { + append(", ") + } } append(spannableString) }