summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
author Andrey Epin <ayepin@google.com> 2024-02-17 13:41:31 -0800
committer Andrey Epin <ayepin@google.com> 2024-02-17 13:53:59 -0800
commitf23537f84b01547adeadf0069a1dc5491bba5bda (patch)
tree9f3ab39da13de820809e76c954748d5348bfa356 /java/src
parent87aeb10a63dea6f47aa66eff8ef2da8b5814223c (diff)
Shareousel: make the only selected item unselectable
Fix: 325496908 Test: atest IntentResolver-tests-unit Test: manual functionality testing Change-Id: Ie7d8a7691d697f3c0aa87ce0a4b144f48bfdbdd5
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt11
-rw-r--r--java/src/com/android/intentresolver/contentpreview/SelectionTracker.kt2
-rw-r--r--java/src/com/android/intentresolver/contentpreview/TargetIntentModifier.kt12
3 files changed, 14 insertions, 11 deletions
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<Item>(
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<Item>(
} 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]))
+ }
}
- }
+ }
}
}