Fix clear filter position.

This commit is contained in:
lisa-signal
2025-05-22 10:37:55 -04:00
committed by Cody Henthorne
parent be02c1bc0a
commit dce883bcf5
6 changed files with 42 additions and 3 deletions

View File

@@ -14,6 +14,7 @@ import org.thoughtcrime.securesms.database.MessageTypes
import org.thoughtcrime.securesms.databinding.CallLogAdapterItemBinding
import org.thoughtcrime.securesms.databinding.CallLogCreateCallLinkItemBinding
import org.thoughtcrime.securesms.databinding.ConversationListItemClearFilterBinding
import org.thoughtcrime.securesms.databinding.ConversationListItemClearFilterEmptyBinding
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.util.DateUtils
@@ -61,6 +62,13 @@ class CallLogAdapter(
inflater = ConversationListItemClearFilterBinding::inflate
)
)
registerFactory(
ClearFilterEmptyModel::class.java,
BindingFactory(
creator = { ClearFilterEmptyViewHolder(it, callbacks::onClearFilterClicked) },
inflater = ConversationListItemClearFilterEmptyBinding::inflate
)
)
registerFactory(
CreateCallLinkModel::class.java,
BindingFactory(
@@ -68,7 +76,6 @@ class CallLogAdapter(
inflater = CallLogCreateCallLinkItemBinding::inflate
)
)
registerFactory(
CallLinkModel::class.java,
BindingFactory(
@@ -95,6 +102,7 @@ class CallLogAdapter(
is CallLogRow.Call -> CallModel(it, selectionState, itemCount, it.peer.id == localCallRecipientId)
is CallLogRow.CallLink -> CallLinkModel(it, selectionState, itemCount, it.recipient.id == localCallRecipientId)
is CallLogRow.ClearFilter -> ClearFilterModel()
is CallLogRow.ClearFilterEmpty -> ClearFilterEmptyModel()
is CallLogRow.CreateCallLink -> CreateCallLinkModel()
}
}
@@ -178,6 +186,11 @@ class CallLogAdapter(
override fun areContentsTheSame(newItem: ClearFilterModel): Boolean = true
}
private class ClearFilterEmptyModel : MappingModel<ClearFilterEmptyModel> {
override fun areItemsTheSame(newItem: ClearFilterEmptyModel): Boolean = true
override fun areContentsTheSame(newItem: ClearFilterEmptyModel): Boolean = true
}
private class CreateCallLinkModel : MappingModel<CreateCallLinkModel> {
override fun areItemsTheSame(newItem: CreateCallLinkModel): Boolean = true
@@ -463,6 +476,19 @@ class CallLogAdapter(
override fun bind(model: ClearFilterModel) = Unit
}
private class ClearFilterEmptyViewHolder(
binding: ConversationListItemClearFilterEmptyBinding,
onClearFilterClicked: () -> Unit
) : BindingViewHolder<ClearFilterEmptyModel, ConversationListItemClearFilterEmptyBinding>(binding) {
init {
binding.clearFilter.setOnClickListener { onClearFilterClicked() }
binding.clearFilterTitle.setText(R.string.CallLogAdapter__no_missed_calls)
}
override fun bind(model: ClearFilterEmptyModel) = Unit
}
private class CreateCallLinkViewHolder(
binding: CallLogCreateCallLinkItemBinding,
onClick: () -> Unit

View File

@@ -82,7 +82,11 @@ class CallLogPagedDataSource(
stopwatch.split("calls")
if (hasFilter && start <= clearFilterStart && remaining > 0) {
callLogRows.add(CallLogRow.ClearFilter)
if (callLogRows.isNotEmpty()) {
callLogRows.add(CallLogRow.ClearFilter)
} else {
callLogRows.add(CallLogRow.ClearFilterEmpty)
}
}
repository.onCallTabPageLoaded(callLogRows)

View File

@@ -52,6 +52,10 @@ sealed class CallLogRow {
override val id: Id = Id.ClearFilter
}
data object ClearFilterEmpty : CallLogRow() {
override val id: Id = Id.ClearFilterEmpty
}
data object CreateCallLink : CallLogRow() {
override val id: Id = Id.CreateCallLink
}
@@ -60,6 +64,7 @@ sealed class CallLogRow {
data class Call(val children: Set<Long>) : Id()
data class CallLink(val roomId: CallLinkRoomId) : Id()
data object ClearFilter : Id()
data object ClearFilterEmpty : Id()
data object CreateCallLink : Id()
}

View File

@@ -129,6 +129,8 @@ class ConversationListAdapter extends ListAdapter<Conversation, RecyclerView.Vie
return new ClearFilterViewHolder(v, onClearFilterClicked);
} else if (viewType == TYPE_CLEAR_FILTER_EMPTY) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.conversation_list_item_clear_filter_empty, parent, false);
TextView title = v.findViewById(R.id.clear_filter_title);
title.setText(R.string.ConversationListFragment__no_unread_chats);
return new ClearFilterViewHolder(v, onClearFilterClicked);
} else if (viewType == TYPE_CHAT_FOLDER_EMPTY) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.conversation_list_item_folder_empty, parent, false);