summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
author Andrey Yepin <ayepin@google.com> 2024-03-21 20:06:02 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-03-21 20:06:02 +0000
commit8b7eb5361a3ebf5fcd451780bae83b1e9cf581a1 (patch)
tree6397dffaafe63aca640e0be66799a2d56a05db77 /java
parent4e493a027cf12979e344fb92feda575df74d1591 (diff)
parentaea8191d82a1c4743e53ec9767c046aa62f3a6b5 (diff)
Merge "Fix the target intent update overrides other chooser params" into main
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/intentresolver/v2/domain/interactor/ChooserRequestUpdateInteractor.kt96
1 files changed, 48 insertions, 48 deletions
diff --git a/java/src/com/android/intentresolver/v2/domain/interactor/ChooserRequestUpdateInteractor.kt b/java/src/com/android/intentresolver/v2/domain/interactor/ChooserRequestUpdateInteractor.kt
index 871701cf..4afe46b0 100644
--- a/java/src/com/android/intentresolver/v2/domain/interactor/ChooserRequestUpdateInteractor.kt
+++ b/java/src/com/android/intentresolver/v2/domain/interactor/ChooserRequestUpdateInteractor.kt
@@ -17,16 +17,13 @@
package com.android.intentresolver.v2.domain.interactor
import android.content.Intent
-import android.util.Log
+import android.content.IntentSender
+import android.service.chooser.ChooserAction
+import android.service.chooser.ChooserTarget
import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.ChooserParamsUpdateRepository
import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.TargetIntentRepository
import com.android.intentresolver.contentpreview.payloadtoggle.domain.model.ShareouselUpdate
-import com.android.intentresolver.inject.ChooserServiceFlags
-import com.android.intentresolver.v2.ui.model.ActivityModel
import com.android.intentresolver.v2.ui.model.ChooserRequest
-import com.android.intentresolver.v2.ui.viewmodel.readChooserRequest
-import com.android.intentresolver.v2.validation.Invalid
-import com.android.intentresolver.v2.validation.Valid
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
@@ -39,19 +36,15 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
-private const val TAG = "ChooserRequestUpdate"
-
/** Updates updates ChooserRequest with a new target intent */
// TODO: make fully injectable
class ChooserRequestUpdateInteractor
@AssistedInject
constructor(
- private val activityModel: ActivityModel,
private val targetIntentRepository: TargetIntentRepository,
private val paramsUpdateRepository: ChooserParamsUpdateRepository,
// TODO: replace with a proper repository, when available
@Assisted private val chooserRequestRepository: MutableStateFlow<ChooserRequest>,
- private val flags: ChooserServiceFlags,
) {
suspend fun launch() {
@@ -70,54 +63,61 @@ constructor(
}
private fun updateTargetIntent(targetIntent: Intent) {
- val updatedActivityModel = activityModel.updateWithTargetIntent(targetIntent)
- when (val updatedChooserRequest = readChooserRequest(updatedActivityModel, flags)) {
- is Valid -> chooserRequestRepository.value = updatedChooserRequest.value
- is Invalid -> Log.w(TAG, "Failed to apply payload selection changes")
+ chooserRequestRepository.update { current ->
+ current.updatedWith(targetIntent = targetIntent)
}
}
private fun updateChooserParameters(update: ShareouselUpdate) {
chooserRequestRepository.update { current ->
- ChooserRequest(
- current.targetIntent,
- current.targetAction,
- current.isSendActionTarget,
- current.targetType,
- current.launchedFromPackage,
- current.title,
- current.defaultTitleResource,
- current.referrer,
- current.filteredComponentNames,
- update.callerTargets ?: current.callerChooserTargets,
- // chooser actions are handled separately
- current.chooserActions,
- update.modifyShareAction ?: current.modifyShareAction,
- current.shouldRetainInOnStop,
- update.alternateIntents ?: current.additionalTargets,
- current.replacementExtras,
- current.initialIntents,
- update.resultIntentSender ?: current.chosenComponentSender,
- update.refinementIntentSender ?: current.refinementIntentSender,
- current.sharedText,
- current.shareTargetFilter,
- current.additionalContentUri,
- current.focusedItemPosition,
- current.contentTypeHint,
- update.metadataText ?: current.metadataText,
+ current.updatedWith(
+ callerChooserTargets = update.callerTargets,
+ modifyShareAction = update.modifyShareAction,
+ additionalTargets = update.alternateIntents,
+ chosenComponentSender = update.resultIntentSender,
+ refinementIntentSender = update.refinementIntentSender,
+ metadataText = update.metadataText,
)
}
}
-
- private fun ActivityModel.updateWithTargetIntent(targetIntent: Intent) =
- ActivityModel(
- Intent(intent).apply { putExtra(Intent.EXTRA_INTENT, targetIntent) },
- launchedFromUid,
- launchedFromPackage,
- referrer,
- )
}
+private fun ChooserRequest.updatedWith(
+ targetIntent: Intent? = null,
+ callerChooserTargets: List<ChooserTarget>? = null,
+ modifyShareAction: ChooserAction? = null,
+ additionalTargets: List<Intent>? = null,
+ chosenComponentSender: IntentSender? = null,
+ refinementIntentSender: IntentSender? = null,
+ metadataText: CharSequence? = null,
+) =
+ ChooserRequest(
+ targetIntent ?: this.targetIntent,
+ this.targetAction,
+ this.isSendActionTarget,
+ this.targetType,
+ this.launchedFromPackage,
+ this.title,
+ this.defaultTitleResource,
+ this.referrer,
+ this.filteredComponentNames,
+ callerChooserTargets ?: this.callerChooserTargets,
+ this.chooserActions,
+ modifyShareAction ?: this.modifyShareAction,
+ this.shouldRetainInOnStop,
+ additionalTargets ?: this.additionalTargets,
+ this.replacementExtras,
+ this.initialIntents,
+ chosenComponentSender ?: this.chosenComponentSender,
+ refinementIntentSender ?: this.refinementIntentSender,
+ this.sharedText,
+ this.shareTargetFilter,
+ this.additionalContentUri,
+ this.focusedItemPosition,
+ this.contentTypeHint,
+ metadataText ?: this.metadataText,
+ )
+
@AssistedFactory
@ViewModelScoped
interface ChooserRequestUpdateInteractorFactory {