From f23537f84b01547adeadf0069a1dc5491bba5bda Mon Sep 17 00:00:00 2001 From: Andrey Epin Date: Sat, 17 Feb 2024 13:41:31 -0800 Subject: Shareousel: make the only selected item unselectable Fix: 325496908 Test: atest IntentResolver-tests-unit Test: manual functionality testing Change-Id: Ie7d8a7691d697f3c0aa87ce0a4b144f48bfdbdd5 --- .../intentresolver/contentpreview/PayloadToggleInteractor.kt | 11 ++++++----- .../intentresolver/contentpreview/SelectionTracker.kt | 2 +- .../intentresolver/contentpreview/TargetIntentModifier.kt | 12 +++++++----- 3 files changed, 14 insertions(+), 11 deletions(-) (limited to 'java/src') diff --git a/java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt b/java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt index 003f6884..61eaca77 100644 --- a/java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt +++ b/java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt @@ -163,13 +163,14 @@ class PayloadToggleInteractor( fun setSelected(item: Item, isSelected: Boolean) { val record = item as Record - record.isSelected.value = isSelected scope.launch { val (_, selectionTracker) = waitForCursorData() ?: return@launch - selectionTracker.setItemSelection(record.key, record, isSelected) - val targetIntent = targetIntentModifier(selectionTracker.getSelection()) - val newJob = scope.launch { notifySelectionChanged(targetIntent) } - notifySelectionJobRef.getAndSet(newJob)?.cancel() + if (selectionTracker.setItemSelection(record.key, record, isSelected)) { + val targetIntent = targetIntentModifier(selectionTracker.getSelection()) + val newJob = scope.launch { notifySelectionChanged(targetIntent) } + notifySelectionJobRef.getAndSet(newJob)?.cancel() + record.isSelected.value = selectionTracker.isItemSelected(record.key) + } } } diff --git a/java/src/com/android/intentresolver/contentpreview/SelectionTracker.kt b/java/src/com/android/intentresolver/contentpreview/SelectionTracker.kt index 4ce006ec..c9431731 100644 --- a/java/src/com/android/intentresolver/contentpreview/SelectionTracker.kt +++ b/java/src/com/android/intentresolver/contentpreview/SelectionTracker.kt @@ -131,7 +131,7 @@ class SelectionTracker( selections[key] = item return true } - if (!isSelected && idx >= 0) { + if (!isSelected && idx >= 0 && selections.size() > 1) { selections.removeAt(idx) return true } diff --git a/java/src/com/android/intentresolver/contentpreview/TargetIntentModifier.kt b/java/src/com/android/intentresolver/contentpreview/TargetIntentModifier.kt index d7e04920..58da5bc4 100644 --- a/java/src/com/android/intentresolver/contentpreview/TargetIntentModifier.kt +++ b/java/src/com/android/intentresolver/contentpreview/TargetIntentModifier.kt @@ -46,12 +46,14 @@ class TargetIntentModifier( } else { putParcelableArrayListExtra(EXTRA_STREAM, uris) } - clipData = - ClipData("", arrayOf(targetMimeType), ClipData.Item(uris[0])).also { - for (i in 1 until uris.size) { - it.addItem(ClipData.Item(uris[i])) + if (uris.isNotEmpty()) { + clipData = + ClipData("", arrayOf(targetMimeType), ClipData.Item(uris[0])).also { + for (i in 1 until uris.size) { + it.addItem(ClipData.Item(uris[i])) + } } - } + } } } -- cgit v1.2.3-59-g8ed1b