summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/intentresolver/contentpreview/payloadtoggle/data/repository/PreviewSelectionsRepository.kt2
-rw-r--r--java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/CursorPreviewsInteractor.kt4
-rw-r--r--java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/FetchPreviewsInteractor.kt7
-rw-r--r--java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/SelectionInteractor.kt8
-rw-r--r--java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/SetCursorPreviewsInteractor.kt6
-rw-r--r--java/src/com/android/intentresolver/contentpreview/payloadtoggle/shared/model/PreviewsModel.kt2
-rw-r--r--java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt5
-rw-r--r--java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/viewmodel/ShareouselViewModel.kt14
8 files changed, 23 insertions, 25 deletions
diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/data/repository/PreviewSelectionsRepository.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/data/repository/PreviewSelectionsRepository.kt
index 9aecc981..48c06192 100644
--- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/data/repository/PreviewSelectionsRepository.kt
+++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/data/repository/PreviewSelectionsRepository.kt
@@ -24,5 +24,5 @@ import kotlinx.coroutines.flow.MutableStateFlow
/** Stores set of selected previews. */
@ViewModelScoped
class PreviewSelectionsRepository @Inject constructor() {
- val selections = MutableStateFlow(emptySet<PreviewModel>())
+ val selections = MutableStateFlow(emptyList<PreviewModel>())
}
diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/CursorPreviewsInteractor.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/CursorPreviewsInteractor.kt
index f02834e0..a0fc11c3 100644
--- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/CursorPreviewsInteractor.kt
+++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/CursorPreviewsInteractor.kt
@@ -94,7 +94,7 @@ constructor(
val startPageNum = state.firstLoadedPageNum
while ((state.hasMoreLeft || state.hasMoreRight) && state.numLoadedPages < maxLoadedPages) {
interactor.setPreviews(
- previewsByKey = state.merged.values.toSet(),
+ previews = state.merged.values.toList(),
startIndex = startPageNum,
hasMoreLeft = state.hasMoreLeft,
hasMoreRight = state.hasMoreRight,
@@ -126,7 +126,7 @@ constructor(
// those.
val loadingState: Flow<LoadDirection?> =
interactor.setPreviews(
- previewsByKey = state.merged.values.toSet(),
+ previews = state.merged.values.toList(),
startIndex = 0, // TODO: actually track this as the window changes?
hasMoreLeft = state.hasMoreLeft,
hasMoreRight = state.hasMoreRight,
diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/FetchPreviewsInteractor.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/FetchPreviewsInteractor.kt
index 80cd03d9..388cbc7e 100644
--- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/FetchPreviewsInteractor.kt
+++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/FetchPreviewsInteractor.kt
@@ -44,10 +44,10 @@ constructor(
) {
suspend fun activate() = coroutineScope {
val cursor = async { cursorResolver.getCursor() }
- val initialPreviewMap: Set<PreviewModel> = getInitialPreviews()
+ val initialPreviewMap = getInitialPreviews()
selectionRepository.selections.value = initialPreviewMap
setCursorPreviews.setPreviews(
- previewsByKey = initialPreviewMap,
+ previews = initialPreviewMap,
startIndex = focusedItemIdx,
hasMoreLeft = false,
hasMoreRight = false,
@@ -55,7 +55,7 @@ constructor(
cursorInteractor.launch(cursor.await() ?: return@coroutineScope, initialPreviewMap)
}
- private suspend fun getInitialPreviews(): Set<PreviewModel> =
+ private suspend fun getInitialPreviews(): List<PreviewModel> =
selectedItems
// Restrict parallelism so as to not overload the metadata reader; anecdotally, too
// many parallel queries causes failures.
@@ -72,5 +72,4 @@ constructor(
?: 1f,
)
}
- .toSet()
}
diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/SelectionInteractor.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/SelectionInteractor.kt
index e99aa50c..13af92cb 100644
--- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/SelectionInteractor.kt
+++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/SelectionInteractor.kt
@@ -35,8 +35,8 @@ constructor(
private val updateTargetIntentInteractor: UpdateTargetIntentInteractor,
private val mimeTypeClassifier: MimeTypeClassifier,
) {
- /** Set of selected previews. */
- val selections: StateFlow<Set<PreviewModel>>
+ /** List of selected previews. */
+ val selections: StateFlow<List<PreviewModel>>
get() = selectionsRepo.selections
/** Amount of selected previews. */
@@ -54,13 +54,13 @@ constructor(
}
}
- private fun updateChooserRequest(selections: Set<PreviewModel>) {
+ private fun updateChooserRequest(selections: List<PreviewModel>) {
val intent = targetIntentModifier.intentFromSelection(selections)
updateTargetIntentInteractor.updateTargetIntent(intent)
}
private fun aggregateContentType(
- items: Set<PreviewModel>,
+ items: List<PreviewModel>,
): ContentType {
if (items.isEmpty()) {
return ContentType.Other
diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/SetCursorPreviewsInteractor.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/SetCursorPreviewsInteractor.kt
index 21a599fa..437bc942 100644
--- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/SetCursorPreviewsInteractor.kt
+++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/SetCursorPreviewsInteractor.kt
@@ -29,9 +29,9 @@ import kotlinx.coroutines.flow.asStateFlow
class SetCursorPreviewsInteractor
@Inject
constructor(private val previewsRepo: CursorPreviewsRepository) {
- /** Stores new [previewsByKey], and returns a flow of load requests triggered by Shareousel. */
+ /** Stores new [previews], and returns a flow of load requests triggered by Shareousel. */
fun setPreviews(
- previewsByKey: Set<PreviewModel>,
+ previews: List<PreviewModel>,
startIndex: Int,
hasMoreLeft: Boolean,
hasMoreRight: Boolean,
@@ -39,7 +39,7 @@ constructor(private val previewsRepo: CursorPreviewsRepository) {
val loadingState = MutableStateFlow<LoadDirection?>(null)
previewsRepo.previewsModel.value =
PreviewsModel(
- previewModels = previewsByKey,
+ previewModels = previews,
startIdx = startIndex,
loadMoreLeft =
if (hasMoreLeft) {
diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/shared/model/PreviewsModel.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/shared/model/PreviewsModel.kt
index 0ac99bd3..1d3eb4b4 100644
--- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/shared/model/PreviewsModel.kt
+++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/shared/model/PreviewsModel.kt
@@ -19,7 +19,7 @@ package com.android.intentresolver.contentpreview.payloadtoggle.shared.model
/** A dataset of previews for Shareousel. */
data class PreviewsModel(
/** All available [PreviewModel]s. */
- val previewModels: Set<PreviewModel>,
+ val previewModels: List<PreviewModel>,
/** Index into [previewModels] that should be initially displayed to the user. */
val startIdx: Int,
/**
diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt
index c25b0154..02d997ae 100644
--- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt
+++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt
@@ -30,7 +30,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyRow
-import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.selection.toggleable
@@ -104,8 +103,8 @@ private fun PreviewCarousel(
.height(dimensionResource(R.dimen.chooser_preview_image_height_tall))
.systemGestureExclusion()
) {
- items(previews.previewModels.toList(), key = { it.uri }) { model ->
- ShareouselCard(viewModel.preview(model))
+ itemsIndexed(previews.previewModels, key = { _, model -> model.uri }) { index, model ->
+ ShareouselCard(viewModel.preview(index, model))
}
}
}
diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/viewmodel/ShareouselViewModel.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/viewmodel/ShareouselViewModel.kt
index 4eda3fa9..9d53b92a 100644
--- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/viewmodel/ShareouselViewModel.kt
+++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/viewmodel/ShareouselViewModel.kt
@@ -55,7 +55,7 @@ data class ShareouselViewModel(
/** List of action chips presented underneath Shareousel. */
val actions: Flow<List<ActionChipViewModel>>,
/** Creates a [ShareouselPreviewViewModel] for a [PreviewModel] present in [previews]. */
- val preview: (key: PreviewModel) -> ShareouselPreviewViewModel,
+ val preview: (index: Int, key: PreviewModel) -> ShareouselPreviewViewModel,
)
@Module
@@ -112,8 +112,8 @@ interface ShareouselViewModelModule {
}
}
},
- preview = { key ->
- keySet.value?.maybeLoad(key)
+ preview = { index, key ->
+ keySet.value?.maybeLoad(index)
val previewInteractor = interactor.preview(key)
val contentType =
when {
@@ -134,9 +134,9 @@ interface ShareouselViewModelModule {
}
}
-private fun PreviewsModel.maybeLoad(key: PreviewModel) {
- when (key) {
- previewModels.firstOrNull() -> loadMoreLeft?.invoke()
- previewModels.lastOrNull() -> loadMoreRight?.invoke()
+private fun PreviewsModel.maybeLoad(index: Int) {
+ when (index) {
+ previewModels.indices.firstOrNull() -> loadMoreLeft?.invoke()
+ previewModels.indices.lastOrNull() -> loadMoreRight?.invoke()
}
}