@@ -108,41 +108,44 @@ fun VideoPickerRoute(
108
108
viewModel.sideEffect.collectLatest { sideEffect ->
109
109
when (sideEffect) {
110
110
is UploadSideEffect .PopBackStack -> popBackStack()
111
+
112
+ is UploadSideEffect .ShowSnackBar -> {
113
+ onShowSnackBar(sideEffect.msg, sideEffect.type)
114
+ }
115
+
111
116
is UploadSideEffect .FocusLocation -> {
112
117
awaitFrame()
113
118
locationFocusRequester.requestFocus()
114
119
}
120
+
115
121
is UploadSideEffect .FocusContent -> {
116
122
awaitFrame()
117
123
contentFocusRequester.requestFocus()
118
124
}
119
- is UploadSideEffect .ShowSnackBar -> {
120
- onShowSnackBar(sideEffect.msg, sideEffect.type)
121
- }
122
125
}
123
126
}
124
127
}
125
128
126
129
VideoPickerScreen (
127
130
state = state,
131
+ onClickContentChip = viewModel::setSelectedList,
132
+ onClickVideo = viewModel::setVideo,
133
+ uploadVideoS3Bucket = {
134
+ viewModel.uploadVideoToS3Bucket(context, it)
135
+ },
136
+ locationFocusRequester = locationFocusRequester,
137
+ contentFocusRequester = locationFocusRequester,
138
+ updateLocationTextField = viewModel::updateLocationTextField,
128
139
showShouldShowRationaleDialog = viewModel::showShouldShowRationaleDialog,
140
+ updateContentTextField = viewModel::updateContentTextField,
129
141
hideShouldShowRationaleDialog = viewModel::hideShouldShowRationaleDialog,
130
142
hideExitUploadDialog = viewModel::hideExitUploadDialog,
131
143
showIsSelectedVideoSheetOpen = viewModel::showIsSelectedVideoSheetOpen,
132
144
hideIsSelectedVideoSheetOpen = viewModel::hideIsSelectedVideoSheetOpen,
133
145
showIsSelectedDefinedContentSheetOpen = viewModel::showIsSelectedDefinedContentSheetOpen,
134
146
hideIsSelectedDefinedContentSheetOpen = viewModel::hideIsSelectedDefinedContentSheetOpen,
135
- onClickContentChip = viewModel::setSelectedList,
136
- setVideo = viewModel::setVideo,
137
- uploadVideoS3Bucket = {
138
- viewModel.uploadVideoToS3Bucket(context, it)
139
- },
140
- onClickBackStack = viewModel::popBackStack,
141
- updateLocationTextField = viewModel::updateLocationTextField,
142
- updateContentTextField = viewModel::updateContentTextField,
143
- locationFocusRequester = locationFocusRequester,
144
- contentFocusRequester = locationFocusRequester,
145
147
showSnackBar = viewModel::makeSnackBar,
148
+ onClickBackStack = viewModel::popBackStack,
146
149
)
147
150
}
148
151
@@ -155,28 +158,38 @@ fun VideoPickerRoute(
155
158
fun VideoPickerScreen (
156
159
modifier : Modifier = Modifier ,
157
160
state : UploadState = UploadState (),
161
+ onClickContentChip : (List <String >) -> Unit ,
162
+ onClickVideo : (GalleryVideo ) -> Unit ,
163
+ uploadVideoS3Bucket : (File ) -> Unit ,
158
164
showShouldShowRationaleDialog : () -> Unit = {},
159
165
hideShouldShowRationaleDialog : () -> Unit = {},
160
- onClickBackStack : () -> Unit = {},
161
166
hideExitUploadDialog : () -> Unit = {},
162
167
showIsSelectedVideoSheetOpen : () -> Unit = {},
163
168
hideIsSelectedVideoSheetOpen : () -> Unit = {},
164
169
showIsSelectedDefinedContentSheetOpen : () -> Unit = {},
165
170
hideIsSelectedDefinedContentSheetOpen : () -> Unit = {},
166
- onClickContentChip : (List <String >) -> Unit ,
167
- setVideo : (GalleryVideo ) -> Unit ,
168
- uploadVideoS3Bucket : (File ) -> Unit ,
169
- updateContentTextField : (String ) -> Unit = {},
170
- updateLocationTextField : (String ) -> Unit = {},
171
171
locationFocusRequester : FocusRequester = remember { FocusRequester () },
172
172
contentFocusRequester : FocusRequester = remember { FocusRequester () },
173
+ updateContentTextField : (String ) -> Unit = {},
174
+ updateLocationTextField : (String ) -> Unit = {},
173
175
showSnackBar : () -> Unit = {},
176
+ onClickBackStack : () -> Unit = {},
174
177
) {
175
178
val context = LocalContext .current
179
+ val scope = rememberCoroutineScope()
176
180
val cameraPermissionState = rememberPermissionState(
177
181
if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) Manifest .permission.READ_MEDIA_VIDEO else Manifest .permission.READ_EXTERNAL_STORAGE ,
178
182
)
179
183
val exampleVideoList = getAllVideos(10 , null , context)
184
+
185
+ val permissionState = remember {
186
+ mutableStateOf(
187
+ ContextCompat .checkSelfPermission(
188
+ context,
189
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) Manifest .permission.READ_MEDIA_VIDEO else Manifest .permission.READ_EXTERNAL_STORAGE ,
190
+ ) == PackageManager .PERMISSION_GRANTED ,
191
+ )
192
+ }
180
193
val requestPermissionLauncher = rememberLauncherForActivityResult(
181
194
ActivityResultContracts .RequestPermission (),
182
195
) { isGranted ->
@@ -186,26 +199,20 @@ fun VideoPickerScreen(
186
199
Timber .d(" Handle permission denial" )
187
200
}
188
201
}
189
- val permissionState = remember {
190
- mutableStateOf(
191
- ContextCompat .checkSelfPermission(
192
- context,
193
- if ( Build . VERSION . SDK_INT >= Build . VERSION_CODES . TIRAMISU ) Manifest .permission. READ_MEDIA_VIDEO else Manifest .permission. READ_EXTERNAL_STORAGE ,
194
- ) == PackageManager . PERMISSION_GRANTED ,
195
- )
202
+ val imageLoader = remember {
203
+ ImageLoader . Builder (context)
204
+ .components {
205
+ add( VideoFrameDecoder . Factory ())
206
+ }
207
+ .crossfade( true )
208
+ .build( )
196
209
}
197
- val scope = rememberCoroutineScope()
198
- val imageLoader = ImageLoader .Builder (context)
199
- .components {
200
- add(VideoFrameDecoder .Factory ())
201
- }
202
- .crossfade(true )
203
- .build()
204
210
205
211
val painter = rememberAsyncImagePainter(
206
212
model = state.video?.filepath,
207
213
imageLoader = imageLoader,
208
214
)
215
+
209
216
Column (
210
217
modifier = modifier
211
218
.fillMaxSize()
@@ -221,7 +228,6 @@ fun VideoPickerScreen(
221
228
modifier = Modifier .fillMaxWidth(),
222
229
textAlign = TextAlign .Center ,
223
230
)
224
-
225
231
Column (
226
232
modifier = Modifier
227
233
.padding(horizontal = 16 .dp),
@@ -422,15 +428,14 @@ fun VideoPickerScreen(
422
428
isSheetOpen = state.isSelectedVideoSheetOpen,
423
429
onDismissRequest = hideIsSelectedVideoSheetOpen,
424
430
galleyVideos = exampleVideoList,
425
- isSelectedVideo = setVideo ,
431
+ isSelectedVideo = onClickVideo ,
426
432
showSnackBar = showSnackBar,
427
433
)
428
434
DefinedContentBottomSheet (
429
435
sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true ),
430
436
isSheetOpen = state.isSelectedDefinedContentSheetOpen,
431
437
onDismissRequest = hideIsSelectedDefinedContentSheetOpen,
432
438
contentList = state.contentList,
433
- selectedList = state.selectedList,
434
439
onClickDefinedContent = onClickContentChip,
435
440
)
436
441
}
@@ -442,7 +447,7 @@ fun VideoPickerScreenPreview() {
442
447
RecordyTheme {
443
448
VideoPickerScreen (
444
449
onClickContentChip = {},
445
- setVideo = {},
450
+ onClickVideo = {},
446
451
uploadVideoS3Bucket = {},
447
452
)
448
453
}
0 commit comments