Fix duplicate contacts during story selection.

This commit is contained in:
Michelle Tang 2024-12-12 11:35:03 -05:00 committed by Greyson Parrelli
parent 010c45da94
commit dadf782bd1
3 changed files with 11 additions and 3 deletions

View file

@ -78,7 +78,10 @@ abstract class BaseStoryRecipientSelectionFragment : Fragment(R.layout.stories_b
viewModel.state.observe(viewLifecycleOwner) {
if (it.distributionListId == null || it.privateStory != null) {
getAttachedContactSelectionFragment().markSelected(it.selection.toSet())
if (it.isStartingSelection) {
getAttachedContactSelectionFragment().markSelected(it.selection.toSet())
viewModel.onStartingSelectionAdded()
}
presentTitle(toolbar, it.selection.size)
}
}

View file

@ -7,5 +7,6 @@ import org.thoughtcrime.securesms.recipients.RecipientId
data class BaseStoryRecipientSelectionState(
val distributionListId: DistributionListId?,
val privateStory: DistributionListRecord? = null,
val selection: Set<RecipientId> = emptySet()
val selection: Set<RecipientId> = emptySet(),
val isStartingSelection: Boolean = false
)

View file

@ -29,7 +29,7 @@ class BaseStoryRecipientSelectionViewModel(
disposable += repository.getRecord(distributionListId)
.subscribe { record ->
val startingSelection = if (record.privacyMode == DistributionListPrivacyMode.ALL_EXCEPT) record.rawMembers else record.members
store.update { it.copy(privateStory = record, selection = it.selection + startingSelection) }
store.update { it.copy(privateStory = record, selection = it.selection + startingSelection, isStartingSelection = true) }
}
}
}
@ -61,6 +61,10 @@ class BaseStoryRecipientSelectionViewModel(
}
}
fun onStartingSelectionAdded() {
store.update { it.copy(isStartingSelection = false) }
}
sealed class Action {
data class GoToNextScreen(val recipients: Set<RecipientId>) : Action()
object ExitFlow : Action()