Skip to content

Commit cefb262

Browse files
lsakeeSangwook123
authored andcommitted
[refactor] #62 video thumbnail
1 parent af31cfd commit cefb262

File tree

5 files changed

+50
-11
lines changed

5 files changed

+50
-11
lines changed

feature/navigator/src/main/java/com/record/navigator/MainActivity.kt

+24
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
package com.record.navigator
22

33
import android.annotation.SuppressLint
4+
import android.content.BroadcastReceiver
5+
import android.content.Context
6+
import android.content.Intent
7+
import android.content.IntentFilter
48
import android.content.pm.ActivityInfo
59
import android.os.Bundle
10+
import android.widget.Toast
611
import androidx.activity.ComponentActivity
712
import androidx.activity.compose.setContent
813
import androidx.activity.enableEdgeToEdge
14+
import androidx.activity.viewModels
915
import androidx.compose.foundation.isSystemInDarkTheme
1016
import androidx.compose.foundation.layout.WindowInsets
1117
import androidx.compose.foundation.layout.WindowInsetsSides
@@ -18,16 +24,34 @@ import androidx.compose.ui.graphics.Color
1824
import androidx.compose.ui.graphics.toArgb
1925
import androidx.compose.ui.platform.LocalView
2026
import androidx.core.view.WindowCompat
27+
import com.record.designsystem.component.snackbar.SnackBarType
2128
import com.record.designsystem.theme.RecordyTheme
2229
import dagger.hilt.android.AndroidEntryPoint
2330

2431
@AndroidEntryPoint
2532
class MainActivity : ComponentActivity() {
33+
private lateinit var uploadResultReceiver: BroadcastReceiver
34+
35+
private val viewModel by viewModels<MainViewModel>()
2636

2737
@SuppressLint("SourceLockedOrientationActivity")
2838
override fun onCreate(savedInstanceState: Bundle?) {
2939
super.onCreate(savedInstanceState)
40+
3041
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
42+
uploadResultReceiver = object : BroadcastReceiver() {
43+
override fun onReceive(context: Context?, intent: Intent?) {
44+
intent?.let {
45+
val message = it.getStringExtra("message")
46+
message?.let { msg ->
47+
if (msg=="success") viewModel.onShowSnackbar("업로드가 완료되었습니다.",SnackBarType.CHECK)
48+
else viewModel.onShowSnackbar("업로드가 실패했습니다.",SnackBarType.WARNING)
49+
}
50+
}
51+
}
52+
}
53+
val filter = IntentFilter("com.example.UPLOAD_RESULT")
54+
registerReceiver(uploadResultReceiver, filter)
3155
enableEdgeToEdge()
3256
setContent {
3357
RecordyTheme {

feature/navigator/src/main/java/com/record/navigator/MainScreen.kt

+12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.record.navigator
22

3+
import android.app.Activity
34
import android.os.Build
5+
import android.util.Log
46
import androidx.annotation.DrawableRes
57
import androidx.annotation.RequiresApi
68
import androidx.compose.animation.AnimatedVisibility
@@ -23,9 +25,12 @@ import androidx.compose.material3.HorizontalDivider
2325
import androidx.compose.material3.Scaffold
2426
import androidx.compose.material3.Text
2527
import androidx.compose.runtime.Composable
28+
import androidx.compose.runtime.DisposableEffect
29+
import androidx.compose.runtime.LaunchedEffect
2630
import androidx.compose.runtime.derivedStateOf
2731
import androidx.compose.runtime.getValue
2832
import androidx.compose.runtime.remember
33+
import androidx.compose.runtime.rememberUpdatedState
2934
import androidx.compose.ui.Alignment
3035
import androidx.compose.ui.Modifier
3136
import androidx.compose.ui.platform.LocalContext
@@ -63,6 +68,13 @@ internal fun MainScreen(
6368
derivedStateOf { navBackStackEntry?.destination }
6469
}
6570

71+
LaunchedEffect(Unit) {
72+
val intent = (context as Activity).intent
73+
val test = intent.getStringExtra("message")
74+
Log.d("testExtra","$test")
75+
// viewModel.onShowSnackbar()
76+
}
77+
6678
Scaffold(
6779
modifier = modifier,
6880
content = { innerPadding ->

feature/upload/src/main/java/com/record/upload/UploadViewModel.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ class UploadViewModel @Inject constructor(
3131
}
3232
}
3333
fun setSelectedList(selectedContent: List<String>) = intent {
34-
Log.d("selectedContent", "$selectedContent")
3534
copy(selectedList = selectedContent)
3635
}
3736

@@ -82,8 +81,9 @@ class UploadViewModel @Inject constructor(
8281
Log.d("testUpload", "upload")
8382
}.onFailure {
8483
}
84+
popBackStack()
8585
}
86-
// popBackStack()
86+
8787
}
8888
fun updateLocationTextField(locationValue: String) = intent {
8989
copy(locationTextValue = locationValue)

feature/upload/src/main/java/com/record/upload/component/VideoThumbnail.kt

+11-8
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.compose.foundation.layout.padding
88
import androidx.compose.foundation.layout.width
99
import androidx.compose.material3.Text
1010
import androidx.compose.runtime.Composable
11+
import androidx.compose.runtime.remember
1112
import androidx.compose.ui.Alignment
1213
import androidx.compose.ui.Modifier
1314
import androidx.compose.ui.draw.clip
@@ -28,15 +29,17 @@ import com.record.upload.extension.formatDuration
2829
@Composable
2930
fun VideoThumbnail(
3031
video: GalleryVideo,
31-
setVideo: (GalleryVideo) -> Unit,
32+
onVideoSelected: (GalleryVideo) -> Unit,
3233
) {
3334
val context = LocalContext.current
34-
val imageLoader = ImageLoader.Builder(context)
35-
.components {
36-
add(VideoFrameDecoder.Factory())
37-
}
38-
.crossfade(true)
39-
.build()
35+
val imageLoader = remember {
36+
ImageLoader.Builder(context)
37+
.components {
38+
add(VideoFrameDecoder.Factory())
39+
}
40+
.crossfade(true)
41+
.build()
42+
}
4043

4144
val painter = rememberAsyncImagePainter(
4245
model = video.filepath,
@@ -54,7 +57,7 @@ fun VideoThumbnail(
5457
modifier = Modifier
5558
.fillMaxSize()
5659
.clip(RectangleShape)
57-
.customClickable { setVideo(video) },
60+
.customClickable { onVideoSelected(video) },
5861
)
5962
Text(
6063
text = formatDuration(video.duration),

feature/upload/src/main/java/com/record/upload/component/bottomsheet/SelectedVideoBottomSheet.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ fun SelectedVideoBottomSheet(
7777
items(galleyVideos) { video ->
7878
VideoThumbnail(
7979
video = video,
80-
setVideo = {
80+
onVideoSelected = {
8181
if (video.duration > 15000) {
8282
showSnackBar()
8383
} else {

0 commit comments

Comments
 (0)