From 1fcd2b7a6688bfbdb672de11da8a7457cfe10cf1 Mon Sep 17 00:00:00 2001 From: nagaeng Date: Wed, 17 Jul 2024 07:07:15 +0900 Subject: [PATCH 1/4] [feat] #94 following/follower screen navi connect --- .../java/com/record/mypage/MypageScreen.kt | 10 ++++--- .../mypage/navigation/MypageNavigation.kt | 26 +++++++++++++++++++ .../com/record/navigator/MainNavigator.kt | 11 ++++++++ .../java/com/record/navigator/MainScreen.kt | 2 ++ 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt b/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt index 29b107d9..43f469da 100644 --- a/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt +++ b/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt @@ -62,6 +62,8 @@ fun MypageRoute( modifier: Modifier = Modifier, viewModel: MypageViewModel = hiltViewModel(), navigateToSetting: () -> Unit, + navigateToFollower: () -> Unit, + navigateToFollowing: () -> Unit, ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() Box( @@ -73,8 +75,8 @@ fun MypageRoute( MypageScreen( state = uiState, onTabSelected = { viewModel.selectTab(it) }, - onFollowingClick = {}, - onFollowerClick = {}, + onFollowingClick = navigateToFollowing, + onFollowerClick = navigateToFollower, navigateToSetting = navigateToSetting, ) } @@ -326,7 +328,7 @@ private fun buildFollowerFollowingRow( ) { Row( modifier = Modifier - .clickable(onClick = onFollowerClick), + .customClickable {onFollowerClick()}, ) { Text( text = formatNumber(followerNum), @@ -346,7 +348,7 @@ private fun buildFollowerFollowingRow( ) Row( modifier = Modifier - .clickable(onClick = onFollowingClick), + .customClickable {onFollowingClick()}, ) { Text( text = formatNumber(followingNum), diff --git a/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt b/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt index 1fe6c0fc..8ef9be4b 100644 --- a/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt +++ b/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt @@ -7,25 +7,51 @@ import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable import com.record.mypage.MypageRoute +import com.record.mypage.follow.FollowerRoute +import com.record.mypage.follow.FollowingRoute fun NavController.navigateMypage(navOptions: NavOptions) { navigate(MypageRoute.route, navOptions) } +fun NavController.navigateToFollowing(navOptions: NavOptions){ + navigate(MypageRoute.followingRoute, navOptions) +} + +fun NavController.navigateToFollower(navOptions: NavOptions){ + navigate(MypageRoute.followerRoute, navOptions) +} + fun NavGraphBuilder.mypageNavGraph( padding: PaddingValues, modifier: Modifier = Modifier, navigateToSetting: () -> Unit, + navigateToFollowing: () -> Unit, + navigateToFollower: () -> Unit, ) { composable(route = MypageRoute.route) { MypageRoute( padding = padding, modifier = modifier, navigateToSetting = navigateToSetting, + navigateToFollowing = navigateToFollowing, + navigateToFollower = navigateToFollower, ) } + composable(route = MypageRoute.followingRoute){ + FollowingRoute( + padding = padding, + modifier = modifier,) + } + composable(route = MypageRoute.followerRoute){ + FollowerRoute( + padding = padding, + modifier = modifier,) + } } object MypageRoute { const val route = "mypage" + const val followerRoute = "follower" + const val followingRoute = "following" } diff --git a/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt b/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt index 013bf877..95b4ad01 100644 --- a/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt +++ b/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt @@ -12,7 +12,10 @@ import com.record.home.navigation.HomeRoute import com.record.home.navigation.navigateHome import com.record.login.navigation.LoginRoute import com.record.login.navigation.SignupRoute +import com.record.mypage.navigation.MypageRoute import com.record.mypage.navigation.navigateMypage +import com.record.mypage.navigation.navigateToFollower +import com.record.mypage.navigation.navigateToFollowing import com.record.profile.navigation.navigateProfile import com.record.setting.navigate.navigateSetting import com.record.video.navigation.navigateVideo @@ -90,6 +93,14 @@ internal class MainNavigator( navController.navigateSetting(navOptions { }) } + fun navigateToFollowing() { + navController.navigateToFollowing(navOptions { }) + } + + fun navigateToFollower() { + navController.navigateToFollower(navOptions { }) + } + fun popBackStackIfNotHome() { if (!isSameCurrentDestination(HomeRoute.route)) { navController.popBackStack() diff --git a/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt b/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt index 0fcb4d21..6101d99d 100644 --- a/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt +++ b/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt @@ -96,6 +96,8 @@ internal fun MainScreen( mypageNavGraph( padding = innerPadding, navigateToSetting = { navigator.navigateSetting() }, + navigateToFollowing = { navigator.navigateToFollowing() }, + navigateToFollower = { navigator.navigateToFollower() }, ) settingNavGraph( From 1348195566d3a601da47fb532cc0ce0f7e03351a Mon Sep 17 00:00:00 2001 From: nagaeng Date: Wed, 17 Jul 2024 10:18:54 +0900 Subject: [PATCH 2/4] [feat] #94 record, bookmark screen video detail navi connect --- .../java/com/record/mypage/MypageScreen.kt | 47 +++++++------------ .../mypage/navigation/MypageNavigation.kt | 21 +++++---- .../record/mypage/screen/BookmarkScreen.kt | 44 +++++------------ .../com/record/mypage/screen/RecordScreen.kt | 41 +++++----------- .../com/record/navigator/MainNavigator.kt | 11 ++--- .../java/com/record/navigator/MainScreen.kt | 1 + .../video/navigation/VideoNavigation.kt | 5 +- 7 files changed, 66 insertions(+), 104 deletions(-) diff --git a/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt b/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt index 43f469da..b0ed4f57 100644 --- a/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt +++ b/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt @@ -41,16 +41,17 @@ import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.layout.positionInParent import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil.compose.AsyncImage import com.record.designsystem.component.navbar.TopNavigationBar import com.record.designsystem.theme.RecordyTheme +import com.record.model.SampleData +import com.record.model.VideoData +import com.record.model.VideoType import com.record.mypage.screen.BookmarkScreen import com.record.mypage.screen.RecordScreen -import com.record.mypage.screen.SampleData import com.record.mypage.screen.TasteScreen import com.record.ui.extension.customClickable import kotlinx.coroutines.CoroutineScope @@ -64,6 +65,7 @@ fun MypageRoute( navigateToSetting: () -> Unit, navigateToFollower: () -> Unit, navigateToFollowing: () -> Unit, + navigateToVideo: (VideoType, Long) -> Unit, ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() Box( @@ -78,6 +80,7 @@ fun MypageRoute( onFollowingClick = navigateToFollowing, onFollowerClick = navigateToFollower, navigateToSetting = navigateToSetting, + navigateToVideo = navigateToVideo, ) } } @@ -90,6 +93,7 @@ fun MypageScreen( navigateToSetting: () -> Unit, onFollowerClick: () -> Unit, onFollowingClick: () -> Unit, + navigateToVideo: (VideoType, Long) -> Unit, ) { val pagerState = rememberPagerState( initialPage = state.mypageTab.ordinal, @@ -185,13 +189,19 @@ fun MypageScreen( } MypageTab.RECORD.ordinal -> { - RecordScreen(videoItems = SampleData.sampleVideos, recordCount = SampleData.sampleVideos.size) - // RecordScreen(emptyList(), 0) + RecordScreen( + videoItems = SampleData.sampleVideos, + recordCount = SampleData.sampleVideos.size, + onItemClick = { videoData: VideoData -> navigateToVideo(VideoType.MY, videoData.id.toLong()) }, + ) } MypageTab.BOOKMARK.ordinal -> { - BookmarkScreen(videoItems = SampleData.sampleVideos, recordCount = SampleData.sampleVideos.size) - // BookmarkScreen(emptyList(), 0) + BookmarkScreen( + videoItems = SampleData.sampleVideos, + recordCount = SampleData.sampleVideos.size, + onItemClick = { videoData: VideoData -> navigateToVideo(VideoType.PROFILE, videoData.id.toLong()) }, + ) } } } @@ -199,27 +209,6 @@ fun MypageScreen( } } -@Preview(showBackground = true, backgroundColor = 0x0000) -@Composable -fun MypageScreenPreview() { - val exampleState = MypageState( - profileImg = "", - nickname = "공간수집가열글자아아", - followerNum = 1260, - followingNum = 96880, - mypageTab = MypageTab.TASTE, - ) - RecordyTheme { - MypageScreen( - state = exampleState, - onTabSelected = {}, - navigateToSetting = {}, - onFollowerClick = {}, - onFollowingClick = {}, - ) - } -} - @OptIn(ExperimentalFoundationApi::class) @Composable fun CustomTabRow( @@ -328,7 +317,7 @@ private fun buildFollowerFollowingRow( ) { Row( modifier = Modifier - .customClickable {onFollowerClick()}, + .customClickable { onFollowerClick() }, ) { Text( text = formatNumber(followerNum), @@ -348,7 +337,7 @@ private fun buildFollowerFollowingRow( ) Row( modifier = Modifier - .customClickable {onFollowingClick()}, + .customClickable { onFollowingClick() }, ) { Text( text = formatNumber(followingNum), diff --git a/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt b/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt index 8ef9be4b..e8a756b0 100644 --- a/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt +++ b/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt @@ -6,6 +6,7 @@ import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable +import com.record.model.VideoType import com.record.mypage.MypageRoute import com.record.mypage.follow.FollowerRoute import com.record.mypage.follow.FollowingRoute @@ -14,12 +15,12 @@ fun NavController.navigateMypage(navOptions: NavOptions) { navigate(MypageRoute.route, navOptions) } -fun NavController.navigateToFollowing(navOptions: NavOptions){ - navigate(MypageRoute.followingRoute, navOptions) +fun NavController.navigateToFollowing() { + navigate(MypageRoute.followingRoute) } -fun NavController.navigateToFollower(navOptions: NavOptions){ - navigate(MypageRoute.followerRoute, navOptions) +fun NavController.navigateToFollower() { + navigate(MypageRoute.followerRoute) } fun NavGraphBuilder.mypageNavGraph( @@ -28,6 +29,7 @@ fun NavGraphBuilder.mypageNavGraph( navigateToSetting: () -> Unit, navigateToFollowing: () -> Unit, navigateToFollower: () -> Unit, + navigateToVideo: (VideoType, Long) -> Unit, ) { composable(route = MypageRoute.route) { MypageRoute( @@ -36,17 +38,20 @@ fun NavGraphBuilder.mypageNavGraph( navigateToSetting = navigateToSetting, navigateToFollowing = navigateToFollowing, navigateToFollower = navigateToFollower, + navigateToVideo = navigateToVideo, ) } - composable(route = MypageRoute.followingRoute){ + composable(route = MypageRoute.followingRoute) { FollowingRoute( padding = padding, - modifier = modifier,) + modifier = modifier, + ) } - composable(route = MypageRoute.followerRoute){ + composable(route = MypageRoute.followerRoute) { FollowerRoute( padding = padding, - modifier = modifier,) + modifier = modifier, + ) } } diff --git a/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt b/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt index db6b02ae..40067fbe 100644 --- a/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt +++ b/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt @@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyVerticalGrid @@ -14,12 +13,10 @@ import androidx.compose.foundation.lazy.items import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.record.designsystem.component.RecordyVideoThumbnail import com.record.designsystem.theme.RecordyTheme @@ -27,10 +24,14 @@ import com.record.model.VideoData import com.record.mypage.R @Composable -fun BookmarkScreen(videoItems: List, recordCount: Int) { - val videos = remember { mutableStateListOf(*videoItems.filter { it.isBookmark }.toTypedArray()) } +fun BookmarkScreen( + videoItems: List, + recordCount: Int, + onItemClick: (VideoData) -> Unit, +) { + val videos = remember { mutableStateOf(videoItems) } - if (videos.isEmpty()) { + if (videos.value.isEmpty()) { EmptyDataScreen( imageRes = com.record.designsystem.R.drawable.img_bookmark, message = "자유롭게 취향을 북마크해 보세요", @@ -59,7 +60,7 @@ fun BookmarkScreen(videoItems: List, recordCount: Int) { ) } } - items(videos) { item -> + items(videos.value) { item -> val isBookmarked = remember { mutableStateOf(item.isBookmark) } RecordyVideoThumbnail( @@ -68,36 +69,17 @@ fun BookmarkScreen(videoItems: List, recordCount: Int) { isBookmark = isBookmarked.value, onBookmarkClick = { isBookmarked.value = !isBookmarked.value - val index = videos.indexOfFirst { it.id == item.id } + val index = videos.value.indexOfFirst { it.id == item.id } if (index != -1) { - videos[index] = videos[index].copy(isBookmark = isBookmarked.value) + videos.value = videos.value.toMutableList().apply { + set(index, get(index).copy(isBookmark = isBookmarked.value)) + } } }, location = item.location, + onClick = { onItemClick(item) }, ) } } } } - -@Preview -@Composable -fun PreviewBookmarkScreenWithSampleList() { - RecordyTheme { - BookmarkScreen( - SampleData.sampleVideos, - SampleData.sampleVideos.size, - ) - } -} - -@Preview -@Composable -fun PreviewBookmarkScreeEmptyList() { - RecordyTheme { - BookmarkScreen( - emptyList(), - 0, - ) - } -} diff --git a/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt b/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt index ccb63314..ea98a223 100644 --- a/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt +++ b/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt @@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyVerticalGrid @@ -13,7 +12,6 @@ import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.items import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment @@ -22,17 +20,20 @@ import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.withStyle -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.record.designsystem.component.RecordyVideoThumbnail import com.record.designsystem.theme.RecordyTheme import com.record.model.VideoData @Composable -fun RecordScreen(videoItems: List, recordCount: Int) { - val videos = remember { mutableStateListOf(*videoItems.filter { it.isBookmark }.toTypedArray()) } +fun RecordScreen( + videoItems: List, + recordCount: Int, + onItemClick: (VideoData) -> Unit, +) { + val videos = remember { mutableStateOf(videoItems) } - if (videos.isEmpty()) { + if (videos.value.isEmpty()) { EmptyDataScreen( imageRes = com.record.designsystem.R.drawable.img_camera, message = "내 첫 번째 공간 기록을\n작성해 보세요", @@ -64,7 +65,7 @@ fun RecordScreen(videoItems: List, recordCount: Int) { ) } } - items(videos) { item -> + items(videos.value) { item -> val isBookmarked = remember { mutableStateOf(item.isBookmark) } RecordyVideoThumbnail( @@ -73,12 +74,15 @@ fun RecordScreen(videoItems: List, recordCount: Int) { isBookmark = isBookmarked.value, onBookmarkClick = { isBookmarked.value = !isBookmarked.value - val index = videos.indexOfFirst { it.id == item.id } + val index = videos.value.indexOfFirst { it.id == item.id } if (index != -1) { - videos[index] = videos[index].copy(isBookmark = isBookmarked.value) + videos.value = videos.value.toMutableList().apply { + set(index, get(index).copy(isBookmark = isBookmarked.value)) + } } }, location = item.location, + onClick = { onItemClick(item) }, ) } } @@ -96,22 +100,3 @@ fun buildRecordCountText(recordCount: Int): AnnotatedString { } } } - -@Preview -@Composable -fun PreviewRecordEmptyScreen() { - RecordyTheme { - RecordScreen(emptyList(), recordCount = 0) - } -} - -@Preview -@Composable -fun PreviewRecordScreen() { - RecordyTheme { - RecordScreen( - SampleData.sampleVideos, - SampleData.sampleVideos.size, - ) - } -} diff --git a/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt b/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt index 95b4ad01..a8e56a3d 100644 --- a/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt +++ b/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt @@ -7,12 +7,11 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import androidx.navigation.navOptions -import com.record.designsystem.component.snackbar.SnackBarType import com.record.home.navigation.HomeRoute import com.record.home.navigation.navigateHome import com.record.login.navigation.LoginRoute import com.record.login.navigation.SignupRoute -import com.record.mypage.navigation.MypageRoute +import com.record.model.VideoType import com.record.mypage.navigation.navigateMypage import com.record.mypage.navigation.navigateToFollower import com.record.mypage.navigation.navigateToFollowing @@ -78,9 +77,9 @@ internal class MainNavigator( navController.navigateMypage(navOptions { }) } - fun navigateVideoDetail(snackBarType: SnackBarType, videoId: Int) { + fun navigateVideoDetail(videoType: VideoType, videoId: Long) { navController.navigateVideoDetail( - snackBarType = snackBarType, + videoType = videoType, id = videoId, ) } @@ -94,11 +93,11 @@ internal class MainNavigator( } fun navigateToFollowing() { - navController.navigateToFollowing(navOptions { }) + navController.navigateToFollowing() } fun navigateToFollower() { - navController.navigateToFollower(navOptions { }) + navController.navigateToFollower() } fun popBackStackIfNotHome() { diff --git a/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt b/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt index 6101d99d..8793338d 100644 --- a/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt +++ b/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt @@ -98,6 +98,7 @@ internal fun MainScreen( navigateToSetting = { navigator.navigateSetting() }, navigateToFollowing = { navigator.navigateToFollowing() }, navigateToFollower = { navigator.navigateToFollower() }, + navigateToVideo = { a, b -> navigator.navigateVideoDetail(a, b) }, ) settingNavGraph( diff --git a/feature/video/src/main/java/com/record/video/navigation/VideoNavigation.kt b/feature/video/src/main/java/com/record/video/navigation/VideoNavigation.kt index 14160101..a7aece21 100644 --- a/feature/video/src/main/java/com/record/video/navigation/VideoNavigation.kt +++ b/feature/video/src/main/java/com/record/video/navigation/VideoNavigation.kt @@ -7,6 +7,7 @@ import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable import com.record.designsystem.component.snackbar.SnackBarType +import com.record.model.VideoType import com.record.video.VideoRoute import com.record.video.videodetail.VideoDetailRoute @@ -14,8 +15,8 @@ fun NavController.navigateVideo(navOptions: NavOptions) { navigate(VideoRoute.route, navOptions) } -fun NavController.navigateVideoDetail(snackBarType: SnackBarType, id: Int) { - navigate(VideoRoute.detailRoute(snackBarType.toString(), id.toString())) +fun NavController.navigateVideoDetail(videoType: VideoType, id: Long) { + navigate(VideoRoute.detailRoute(videoType.toString(), id.toString())) } fun NavGraphBuilder.videoNavGraph( From bb09456bf7a1d370946262df149280f6ecd6a1dc Mon Sep 17 00:00:00 2001 From: nagaeng Date: Wed, 17 Jul 2024 21:23:55 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[refactor]=20#94=20navigateVideoDetail=20?= =?UTF-8?q?=EC=9D=B8=EC=9E=90=20=EC=88=98=EC=A0=95=EC=97=90=20=EB=94=B0?= =?UTF-8?q?=EB=A5=B8=20=EC=BD=94=EB=93=9C=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/record/mypage/MypageScreen.kt | 8 ++++---- .../com/record/mypage/navigation/MypageNavigation.kt | 2 +- .../java/com/record/mypage/screen/BookmarkScreen.kt | 8 +++++--- .../main/java/com/record/mypage/screen/RecordScreen.kt | 8 +++++--- .../main/java/com/record/navigator/MainNavigator.kt | 10 +++++++++- .../src/main/java/com/record/navigator/MainScreen.kt | 2 +- .../com/record/video/navigation/VideoNavigation.kt | 2 +- 7 files changed, 26 insertions(+), 14 deletions(-) diff --git a/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt b/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt index b0ed4f57..67a3c01f 100644 --- a/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt +++ b/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt @@ -65,7 +65,7 @@ fun MypageRoute( navigateToSetting: () -> Unit, navigateToFollower: () -> Unit, navigateToFollowing: () -> Unit, - navigateToVideo: (VideoType, Long) -> Unit, + navigateToVideo: (VideoType, Int) -> Unit, ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() Box( @@ -93,7 +93,7 @@ fun MypageScreen( navigateToSetting: () -> Unit, onFollowerClick: () -> Unit, onFollowingClick: () -> Unit, - navigateToVideo: (VideoType, Long) -> Unit, + navigateToVideo: (VideoType, Int) -> Unit, ) { val pagerState = rememberPagerState( initialPage = state.mypageTab.ordinal, @@ -192,7 +192,7 @@ fun MypageScreen( RecordScreen( videoItems = SampleData.sampleVideos, recordCount = SampleData.sampleVideos.size, - onItemClick = { videoData: VideoData -> navigateToVideo(VideoType.MY, videoData.id.toLong()) }, + onItemClick = navigateToVideo, ) } @@ -200,7 +200,7 @@ fun MypageScreen( BookmarkScreen( videoItems = SampleData.sampleVideos, recordCount = SampleData.sampleVideos.size, - onItemClick = { videoData: VideoData -> navigateToVideo(VideoType.PROFILE, videoData.id.toLong()) }, + onItemClick = navigateToVideo, ) } } diff --git a/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt b/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt index e8a756b0..79ca2ff0 100644 --- a/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt +++ b/feature/mypage/src/main/java/com/record/mypage/navigation/MypageNavigation.kt @@ -29,7 +29,7 @@ fun NavGraphBuilder.mypageNavGraph( navigateToSetting: () -> Unit, navigateToFollowing: () -> Unit, navigateToFollower: () -> Unit, - navigateToVideo: (VideoType, Long) -> Unit, + navigateToVideo: (VideoType, Int) -> Unit, ) { composable(route = MypageRoute.route) { MypageRoute( diff --git a/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt b/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt index 40067fbe..5340cd55 100644 --- a/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt +++ b/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items +import androidx.compose.foundation.lazy.grid.itemsIndexed import androidx.compose.foundation.lazy.items import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -21,13 +22,14 @@ import androidx.compose.ui.unit.dp import com.record.designsystem.component.RecordyVideoThumbnail import com.record.designsystem.theme.RecordyTheme import com.record.model.VideoData +import com.record.model.VideoType import com.record.mypage.R @Composable fun BookmarkScreen( videoItems: List, recordCount: Int, - onItemClick: (VideoData) -> Unit, + onItemClick: (VideoType, Int) -> Unit, ) { val videos = remember { mutableStateOf(videoItems) } @@ -60,7 +62,7 @@ fun BookmarkScreen( ) } } - items(videos.value) { item -> + itemsIndexed(videos.value) { index, item -> val isBookmarked = remember { mutableStateOf(item.isBookmark) } RecordyVideoThumbnail( @@ -77,7 +79,7 @@ fun BookmarkScreen( } }, location = item.location, - onClick = { onItemClick(item) }, + onClick = { onItemClick(VideoType.BOOKMARK, index) }, ) } } diff --git a/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt b/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt index ea98a223..592b3689 100644 --- a/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt +++ b/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items +import androidx.compose.foundation.lazy.grid.itemsIndexed import androidx.compose.foundation.lazy.items import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -24,12 +25,13 @@ import androidx.compose.ui.unit.dp import com.record.designsystem.component.RecordyVideoThumbnail import com.record.designsystem.theme.RecordyTheme import com.record.model.VideoData +import com.record.model.VideoType @Composable fun RecordScreen( videoItems: List, recordCount: Int, - onItemClick: (VideoData) -> Unit, + onItemClick: (VideoType, Int) -> Unit, ) { val videos = remember { mutableStateOf(videoItems) } @@ -65,7 +67,7 @@ fun RecordScreen( ) } } - items(videos.value) { item -> + itemsIndexed(videos.value) { index, item -> val isBookmarked = remember { mutableStateOf(item.isBookmark) } RecordyVideoThumbnail( @@ -82,7 +84,7 @@ fun RecordScreen( } }, location = item.location, - onClick = { onItemClick(item) }, + onClick = { onItemClick(VideoType.MY, index) }, ) } } diff --git a/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt b/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt index 8cee2695..0163d44a 100644 --- a/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt +++ b/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt @@ -78,7 +78,7 @@ internal class MainNavigator( navController.navigateMypage(navOptions { }) } - fun navigateVideoDetail(videoType: VideoType, index: Int, keyword: String? = "", userId: Long = 0) { + fun navigateVideoDetail(videoType: VideoType, index: Int, keyword: String? = "all", userId: Long = 0) { navController.navigateVideoDetail( videoType = videoType, index = index, @@ -87,6 +87,14 @@ internal class MainNavigator( ) } + fun navigateToFollowing() { + navController.navigateToFollowing() + } + + fun navigateToFollower() { + navController.navigateToFollower() + } + fun navigateProfile(id: Int) { navController.navigateProfile(navOptions { }) } diff --git a/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt b/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt index 1b69610c..9764ad44 100644 --- a/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt +++ b/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt @@ -100,7 +100,7 @@ internal fun MainScreen( navigateToSetting = { navigator.navigateSetting() }, navigateToFollowing = { navigator.navigateToFollowing() }, navigateToFollower = { navigator.navigateToFollower() }, - navigateToVideo = { a, b -> navigator.navigateVideoDetail(a, b) }, + navigateToVideo = navigator::navigateVideoDetail, ) settingNavGraph( diff --git a/feature/video/src/main/java/com/record/video/navigation/VideoNavigation.kt b/feature/video/src/main/java/com/record/video/navigation/VideoNavigation.kt index 3ddcd480..6619cc4d 100644 --- a/feature/video/src/main/java/com/record/video/navigation/VideoNavigation.kt +++ b/feature/video/src/main/java/com/record/video/navigation/VideoNavigation.kt @@ -15,7 +15,7 @@ fun NavController.navigateVideo(navOptions: NavOptions) { navigate(VideoRoute.route, navOptions) } -fun NavController.navigateVideoDetail(videoType: VideoType, index: Int, keyword: String? = "", userId: Long = 0) { +fun NavController.navigateVideoDetail(videoType: VideoType, index: Int, keyword: String? = "all", userId: Long = 0) { navigate(VideoRoute.detailRoute(videoType.toString(), index.toString(), keyword, userId.toString())) } From 677a1fb07979368125ad74c4b8cb3f6659a397c8 Mon Sep 17 00:00:00 2001 From: nagaeng Date: Wed, 17 Jul 2024 21:30:14 +0900 Subject: [PATCH 4/4] [chore] #94 ktlint --- feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt | 1 - .../src/main/java/com/record/mypage/screen/BookmarkScreen.kt | 2 -- .../src/main/java/com/record/mypage/screen/RecordScreen.kt | 2 -- .../src/main/java/com/record/navigator/MainNavigator.kt | 1 - 4 files changed, 6 deletions(-) diff --git a/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt b/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt index 67a3c01f..66859515 100644 --- a/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt +++ b/feature/mypage/src/main/java/com/record/mypage/MypageScreen.kt @@ -48,7 +48,6 @@ import coil.compose.AsyncImage import com.record.designsystem.component.navbar.TopNavigationBar import com.record.designsystem.theme.RecordyTheme import com.record.model.SampleData -import com.record.model.VideoData import com.record.model.VideoType import com.record.mypage.screen.BookmarkScreen import com.record.mypage.screen.RecordScreen diff --git a/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt b/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt index 5340cd55..54a886b2 100644 --- a/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt +++ b/feature/mypage/src/main/java/com/record/mypage/screen/BookmarkScreen.kt @@ -8,9 +8,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyVerticalGrid -import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.grid.itemsIndexed -import androidx.compose.foundation.lazy.items import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue diff --git a/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt b/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt index 592b3689..e797d61d 100644 --- a/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt +++ b/feature/mypage/src/main/java/com/record/mypage/screen/RecordScreen.kt @@ -8,9 +8,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyVerticalGrid -import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.grid.itemsIndexed -import androidx.compose.foundation.lazy.items import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf diff --git a/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt b/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt index 0163d44a..bfde953f 100644 --- a/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt +++ b/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt @@ -7,7 +7,6 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import androidx.navigation.navOptions -import com.record.designsystem.component.snackbar.SnackBarType import com.record.home.navigation.HomeRoute import com.record.home.navigation.navigateHome import com.record.login.navigation.LoginRoute