1 /*
2 * Copyright (C) 2024 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 package com.android.intentresolver.contentpreview.payloadtoggle.domain.interactor
18
19 import com.android.intentresolver.backgroundDispatcher
20 import com.android.intentresolver.contentResolver
21 import com.android.intentresolver.contentpreview.HeadlineGenerator
22 import com.android.intentresolver.contentpreview.ImageLoader
23 import com.android.intentresolver.contentpreview.mimetypeClassifier
24 import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.activityResultRepository
25 import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.cursorPreviewsRepository
26 import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.pendingSelectionCallbackRepository
27 import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.previewSelectionsRepository
28 import com.android.intentresolver.contentpreview.payloadtoggle.domain.cursor.payloadToggleCursorResolver
29 import com.android.intentresolver.contentpreview.payloadtoggle.domain.intent.pendingIntentSender
30 import com.android.intentresolver.contentpreview.payloadtoggle.domain.intent.targetIntentModifier
31 import com.android.intentresolver.contentpreview.payloadtoggle.domain.update.selectionChangeCallback
32 import com.android.intentresolver.contentpreview.uriMetadataReader
33 import com.android.intentresolver.data.repository.chooserRequestRepository
34 import com.android.intentresolver.inject.contentUris
35 import com.android.intentresolver.logging.eventLog
36 import com.android.intentresolver.packageManager
37 import com.android.systemui.kosmos.Kosmos
38 import com.android.systemui.kosmos.Kosmos.Fixture
39
<lambda>null40 var Kosmos.focusedItemIndex: Int by Fixture { 0 }
<lambda>null41 var Kosmos.pageSize: Int by Fixture { 16 }
<lambda>null42 var Kosmos.maxLoadedPages: Int by Fixture { 3 }
43
44 val Kosmos.chooserRequestInteractor
45 get() = ChooserRequestInteractor(chooserRequestRepository)
46
47 val Kosmos.cursorPreviewsInteractor
48 get() =
49 CursorPreviewsInteractor(
50 interactor = setCursorPreviewsInteractor,
51 selectionInteractor = selectionInteractor,
52 focusedItemIdx = focusedItemIndex,
53 uriMetadataReader = uriMetadataReader,
54 pageSize = pageSize,
55 maxLoadedPages = maxLoadedPages,
56 )
57
58 val Kosmos.customActionsInteractor
59 get() =
60 CustomActionsInteractor(
61 activityResultRepo = activityResultRepository,
62 bgDispatcher = backgroundDispatcher,
63 contentResolver = contentResolver,
64 eventLog = eventLog,
65 packageManager = packageManager,
66 chooserRequestInteractor = chooserRequestInteractor,
67 )
68
69 val Kosmos.fetchPreviewsInteractor
70 get() =
71 FetchPreviewsInteractor(
72 setCursorPreviews = setCursorPreviewsInteractor,
73 selectionRepository = previewSelectionsRepository,
74 cursorInteractor = cursorPreviewsInteractor,
75 focusedItemIdx = focusedItemIndex,
76 selectedItems = contentUris,
77 uriMetadataReader = uriMetadataReader,
78 cursorResolver = payloadToggleCursorResolver,
79 )
80
81 val Kosmos.processTargetIntentUpdatesInteractor
82 get() =
83 ProcessTargetIntentUpdatesInteractor(
84 selectionCallback = selectionChangeCallback,
85 repository = pendingSelectionCallbackRepository,
86 chooserRequestInteractor = updateChooserRequestInteractor,
87 )
88
89 val Kosmos.selectablePreviewsInteractor
90 get() =
91 SelectablePreviewsInteractor(
92 previewsRepo = cursorPreviewsRepository,
93 selectionInteractor = selectionInteractor,
94 )
95
96 val Kosmos.selectionInteractor
97 get() =
98 SelectionInteractor(
99 selectionsRepo = previewSelectionsRepository,
100 targetIntentModifier = targetIntentModifier,
101 updateTargetIntentInteractor = updateTargetIntentInteractor,
102 mimeTypeClassifier = mimetypeClassifier,
103 )
104
105 val Kosmos.setCursorPreviewsInteractor
106 get() = SetCursorPreviewsInteractor(previewsRepo = cursorPreviewsRepository)
107
108 val Kosmos.updateChooserRequestInteractor
109 get() =
110 UpdateChooserRequestInteractor(
111 chooserRequestRepository,
112 pendingIntentSender,
113 )
114
115 val Kosmos.updateTargetIntentInteractor
116 get() =
117 UpdateTargetIntentInteractor(
118 repository = pendingSelectionCallbackRepository,
119 chooserRequestInteractor = updateChooserRequestInteractor,
120 )
121
122 var Kosmos.payloadToggleImageLoader: ImageLoader by Fixture()
123 var Kosmos.headlineGenerator: HeadlineGenerator by Fixture()
124