mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-06-29 10:35:52 +01:00
Fix duplicate key crash in contact search lists.
This commit is contained in:
@@ -148,7 +148,7 @@ object ContactSearchModels {
|
||||
): MappingEntryProvider<Any> {
|
||||
return MappingEntryProviderBuilder<Any>().apply {
|
||||
viewHolder<StoryModel>(
|
||||
key = { model -> "StoryModel${model.story.recipient.id}" }
|
||||
key = { model -> "StoryModel:${model.story.recipient.id}:${model.story.privacyMode}" }
|
||||
) { ctx ->
|
||||
LayoutFactory(
|
||||
{ view -> StoryViewHolder(view, displayOptions.displayCheckBox, callbacks::onStoryClicked, storyContextMenuCallbacks, displayOptions.displayStoryRing) },
|
||||
@@ -156,7 +156,7 @@ object ContactSearchModels {
|
||||
).createViewHolder(FrameLayout(ctx))
|
||||
}
|
||||
entry<RecipientModel>(
|
||||
key = { model -> model.knownRecipient.recipient.id }
|
||||
key = { model -> "${model.knownRecipient.sectionKey}:${model.knownRecipient.recipient.id}" }
|
||||
) { model ->
|
||||
Column(modifier = Modifier.fillMaxWidth()) {
|
||||
val letter = model.knownRecipient.headerLetter
|
||||
@@ -193,7 +193,9 @@ object ContactSearchModels {
|
||||
)
|
||||
}
|
||||
}
|
||||
viewHolder<UnknownRecipientModel> { ctx ->
|
||||
viewHolder<UnknownRecipientModel>(
|
||||
key = { model -> "Unknown:${model.data.sectionKey}:${model.data.mode}:${model.data.query}" }
|
||||
) { ctx ->
|
||||
LayoutFactory(
|
||||
{ view -> UnknownRecipientViewHolder(view, callbacks::onUnknownRecipientClicked, displayOptions.displayCheckBox) },
|
||||
R.layout.contact_search_unknown_item
|
||||
|
||||
+9
-3
@@ -105,19 +105,25 @@ object ConversationListSearchModels {
|
||||
requestManager: RequestManager
|
||||
): MappingEntryProvider<Any> {
|
||||
return MappingEntryProviderBuilder<Any>().apply {
|
||||
viewHolder<ThreadModel> { ctx ->
|
||||
viewHolder<ThreadModel>(
|
||||
key = { model -> "Thread:${model.thread.contactSearchKey}" }
|
||||
) { ctx ->
|
||||
LayoutFactory(
|
||||
{ view -> ThreadViewHolder(onThreadClicked, onThreadLongClicked, lifecycleOwner, requestManager, view) },
|
||||
R.layout.conversation_list_item_view
|
||||
).createViewHolder(FrameLayout(ctx))
|
||||
}
|
||||
viewHolder<MessageModel> { ctx ->
|
||||
viewHolder<MessageModel>(
|
||||
key = { model -> "Message:${model.message.contactSearchKey}" }
|
||||
) { ctx ->
|
||||
LayoutFactory(
|
||||
{ view -> MessageViewHolder(onMessageClicked, lifecycleOwner, requestManager, view) },
|
||||
R.layout.conversation_list_item_view
|
||||
).createViewHolder(FrameLayout(ctx))
|
||||
}
|
||||
viewHolder<GroupWithMembersModel> { ctx ->
|
||||
viewHolder<GroupWithMembersModel>(
|
||||
key = { model -> "GroupWithMembers:${model.groupWithMembers.contactSearchKey}" }
|
||||
) { ctx ->
|
||||
LayoutFactory(
|
||||
{ view -> GroupWithMembersViewHolder(onGroupWithMembersClicked, lifecycleOwner, requestManager, view) },
|
||||
R.layout.conversation_list_item_view
|
||||
|
||||
Reference in New Issue
Block a user