mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-25 12:17:22 +00:00
Fix clear filter position.
This commit is contained in:
committed by
Cody Henthorne
parent
be02c1bc0a
commit
dce883bcf5
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user