diff --git a/core/designsystem/src/main/res/drawable/img_diary_empty_nova.png b/core/designsystem/src/main/res/drawable/img_empty_nova.png similarity index 100% rename from core/designsystem/src/main/res/drawable/img_diary_empty_nova.png rename to core/designsystem/src/main/res/drawable/img_empty_nova.png diff --git a/core/designsystem/src/main/res/drawable/img_diary_empty_ready.png b/core/designsystem/src/main/res/drawable/img_empty_ready.png similarity index 100% rename from core/designsystem/src/main/res/drawable/img_diary_empty_ready.png rename to core/designsystem/src/main/res/drawable/img_empty_ready.png diff --git a/core/designsystem/src/main/res/drawable/img_diary_empty_rumi.png b/core/designsystem/src/main/res/drawable/img_empty_rumi.png similarity index 100% rename from core/designsystem/src/main/res/drawable/img_diary_empty_rumi.png rename to core/designsystem/src/main/res/drawable/img_empty_rumi.png diff --git a/core/navigation/src/main/java/com/teamoffroad/core/navigation/RouteModel.kt b/core/navigation/src/main/java/com/teamoffroad/core/navigation/RouteModel.kt index 43ef0708..3485eeee 100644 --- a/core/navigation/src/main/java/com/teamoffroad/core/navigation/RouteModel.kt +++ b/core/navigation/src/main/java/com/teamoffroad/core/navigation/RouteModel.kt @@ -57,7 +57,9 @@ sealed interface ExploreRoute : Route { sealed interface MyPageRoute : Route { @Serializable - data object GainedCouponScreen : MyPageRoute + data class GainedCouponScreen( + val characterName: String, + ) : MyPageRoute @Serializable data class AvailableCouponScreen( diff --git a/feature/diary/src/main/java/com/teamoffroad/feature/diary/component/OrbDiaryEmpty.kt b/feature/diary/src/main/java/com/teamoffroad/feature/diary/component/OrbDiaryEmpty.kt index 4c137a17..3fadf9c6 100644 --- a/feature/diary/src/main/java/com/teamoffroad/feature/diary/component/OrbDiaryEmpty.kt +++ b/feature/diary/src/main/java/com/teamoffroad/feature/diary/component/OrbDiaryEmpty.kt @@ -30,9 +30,9 @@ fun OrbDiaryEmpty( modifier: Modifier = Modifier, ) { val emptyCharacterImage = when (characterName) { - "루미" -> R.drawable.img_diary_empty_rumi - "레디" -> R.drawable.img_diary_empty_ready - else -> R.drawable.img_diary_empty_nova + "루미" -> R.drawable.img_empty_rumi + "레디" -> R.drawable.img_empty_ready + else -> R.drawable.img_empty_nova } Column( diff --git a/feature/main/src/main/java/com/teamoffroad/feature/main/navigation/MainNavHost.kt b/feature/main/src/main/java/com/teamoffroad/feature/main/navigation/MainNavHost.kt index afbcbae6..8fb6ab85 100644 --- a/feature/main/src/main/java/com/teamoffroad/feature/main/navigation/MainNavHost.kt +++ b/feature/main/src/main/java/com/teamoffroad/feature/main/navigation/MainNavHost.kt @@ -69,9 +69,8 @@ internal fun MainNavHost( navigateToBack = navigator::popBackStackIfNotMainTabRoute, ) myPageNavGraph( - navigateToGainedCoupon = { - navigator.navigateToGainedCoupon() - }, + navigateToGainedCoupon = navigator::navigateToGainedCoupon + , navigateToAvailableCouponDetail = { id, name, couponImageUrl, description, placeId -> navigator.navigateToAvailableCouponDetail( id, diff --git a/feature/main/src/main/java/com/teamoffroad/feature/main/navigation/MainNavigator.kt b/feature/main/src/main/java/com/teamoffroad/feature/main/navigation/MainNavigator.kt index d194a41e..8baf411b 100644 --- a/feature/main/src/main/java/com/teamoffroad/feature/main/navigation/MainNavigator.kt +++ b/feature/main/src/main/java/com/teamoffroad/feature/main/navigation/MainNavigator.kt @@ -135,8 +135,10 @@ internal class MainNavigator( navController.navigateToMyPage(mainTabNavOptions) } - fun navigateToGainedCoupon() { - navController.navigateToGainedCoupon() + fun navigateToGainedCoupon( + characterName: String + ) { + navController.navigateToGainedCoupon(characterName = characterName) } fun navigateToAvailableCouponDetail( diff --git a/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/navigation/MyPageNavigation.kt b/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/navigation/MyPageNavigation.kt index e514adcd..df533fa6 100644 --- a/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/navigation/MyPageNavigation.kt +++ b/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/navigation/MyPageNavigation.kt @@ -12,13 +12,13 @@ import com.teamoffroad.feature.mypage.presentation.AnnouncementDetailScreen import com.teamoffroad.feature.mypage.presentation.AnnouncementScreen import com.teamoffroad.feature.mypage.presentation.AvailableCouponDetailScreen import com.teamoffroad.feature.mypage.presentation.CharacterDetailScreen -import com.teamoffroad.feature.mypage.presentation.diaryTime.DiaryTimeScreen import com.teamoffroad.feature.mypage.presentation.GainedCharacterScreen import com.teamoffroad.feature.mypage.presentation.GainedCouponScreen import com.teamoffroad.feature.mypage.presentation.GainedEmblemsScreen import com.teamoffroad.feature.mypage.presentation.MyPageScreen import com.teamoffroad.feature.mypage.presentation.SettingScreen import com.teamoffroad.feature.mypage.presentation.SupportScreen +import com.teamoffroad.feature.mypage.presentation.diaryTime.DiaryTimeScreen fun NavController.navigateToMyPage(navOptions: NavOptions) { navigate(MainTabRoute.MyPage, navOptions) @@ -28,8 +28,10 @@ fun NavController.navigateToGainedCharacter() { navigate(MyPageRoute.GainedCharacter) } -fun NavController.navigateToGainedCoupon() { - navigate(MyPageRoute.GainedCouponScreen) +fun NavController.navigateToGainedCoupon( + characterName: String +) { + navigate(MyPageRoute.GainedCouponScreen(characterName = characterName)) } fun NavController.navigateToAvailableCouponDetail( @@ -96,7 +98,7 @@ fun NavController.navigateToDiaryTime() { fun NavGraphBuilder.myPageNavGraph( navigateToGainedCharacter: () -> Unit, - navigateToGainedCoupon: () -> Unit, + navigateToGainedCoupon: (String) -> Unit, navigateToAvailableCouponDetail: (Int, String, String, String, Int) -> Unit, navigateToGainedEmblems: () -> Unit, navigateToSetting: () -> Unit, @@ -125,8 +127,13 @@ fun NavGraphBuilder.myPageNavGraph( GainedCharacterScreen(navigateToCharacterDetail, navigateToBack) } - composable { - GainedCouponScreen(navigateToAvailableCouponDetail, navigateToBack) + composable { backStackEntry -> + val characterName = backStackEntry.toRoute().characterName + GainedCouponScreen( + characterName = characterName, + navigateToAvailableCouponDetail = navigateToAvailableCouponDetail, + navigateToMyPage = navigateToBack + ) } composable { backStackEntry -> diff --git a/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/GainedCouponScreen.kt b/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/GainedCouponScreen.kt index e3fcdfee..16622689 100644 --- a/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/GainedCouponScreen.kt +++ b/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/GainedCouponScreen.kt @@ -32,6 +32,7 @@ import com.teamoffroad.offroad.feature.mypage.R @Composable internal fun GainedCouponScreen( + characterName: String, navigateToAvailableCouponDetail: (Int, String, String, String, Int) -> Unit, navigateToMyPage: () -> Unit, backgroundColor: Color = Main1, @@ -64,6 +65,7 @@ internal fun GainedCouponScreen( } Spacer(modifier = Modifier.padding(vertical = 10.dp)) GainedCouponViewPager( + characterName = characterName, availableCouponListState = viewModel.availableCouponListState.collectAsStateWithLifecycle(), usedCouponListState = viewModel.usedCouponListState.collectAsStateWithLifecycle(), availableCouponsCount = viewModel.availableCouponsCount.collectAsState().value, diff --git a/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/MyPageScreen.kt b/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/MyPageScreen.kt index 558787e5..c7aff36a 100644 --- a/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/MyPageScreen.kt +++ b/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/MyPageScreen.kt @@ -18,13 +18,11 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -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 com.teamoffroad.core.designsystem.component.actionBarPadding import com.teamoffroad.core.designsystem.theme.ListBg -import com.teamoffroad.core.designsystem.theme.OffroadTheme import com.teamoffroad.feature.mypage.presentation.component.AcquireCharacter import com.teamoffroad.feature.mypage.presentation.component.AcquireCoupon import com.teamoffroad.feature.mypage.presentation.component.AcquireEmblem @@ -36,7 +34,7 @@ import com.teamoffroad.feature.mypage.presentation.component.UserSettings @Composable internal fun MyPageScreen( navigateToGainedCharacter: () -> Unit, - navigateToGainedCoupon: () -> Unit, + navigateToGainedCoupon: (String) -> Unit, navigateToGainedEmblems: () -> Unit, navigateToSetting: () -> Unit, navigateToDiary: (Boolean, String) -> Unit, @@ -83,7 +81,12 @@ internal fun MyPageScreen( ) UserDiary( modifier = Modifier.padding(top = 8.dp), - navigateToUserDiary = { navigateToDiary(!newDiaryExist, myPageViewModel.characterName.value) } + navigateToUserDiary = { + navigateToDiary( + !newDiaryExist, + myPageViewModel.characterName.value + ) + } ) Row( modifier = Modifier @@ -106,7 +109,7 @@ internal fun MyPageScreen( .aspectRatio(150f / 124f) ) { AcquireCoupon( - navigateToGainedCoupon + navigateToAcquireCoupon = { navigateToGainedCoupon(myPageViewModel.characterName.value) } ) } } diff --git a/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/component/GainedCouponItems.kt b/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/component/GainedCouponItems.kt index ac843f4a..a76547a5 100644 --- a/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/component/GainedCouponItems.kt +++ b/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/component/GainedCouponItems.kt @@ -57,11 +57,13 @@ import com.teamoffroad.offroad.feature.mypage.R.drawable @Composable fun AvailableCouponItems( + emptyCharacterImage: Int, availableCouponsCount: Int, coupons: List, navigateToAvailableCouponDetail: (Int, String, String, String, Int) -> Unit, getUserCoupons: (Boolean, Int) -> Unit, ) { + if (availableCouponsCount == 0) { Column( modifier = Modifier @@ -69,7 +71,7 @@ fun AvailableCouponItems( horizontalAlignment = Alignment.CenterHorizontally ) { Image( - painter = painterResource(id = R.drawable.img_my_page_empty), + painter = painterResource(id = emptyCharacterImage), contentDescription = "empty available coupon", modifier = Modifier .padding(start = 110.dp, top = 132.dp, end = 110.dp) @@ -165,6 +167,7 @@ private fun AvailableCouponItem( @Composable fun UsedCouponItems( + emptyCharacterImage: Int, usedCouponsCount: Int, coupons: List, getUserCoupons: (Boolean, Int) -> Unit, @@ -176,7 +179,7 @@ fun UsedCouponItems( horizontalAlignment = Alignment.CenterHorizontally ) { Image( - painter = painterResource(id = R.drawable.img_my_page_empty), + painter = painterResource(id = emptyCharacterImage), contentDescription = "empty used coupon", modifier = Modifier .padding(start = 110.dp, top = 132.dp, end = 110.dp) diff --git a/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/component/GainedCouponViewPager.kt b/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/component/GainedCouponViewPager.kt index c327ea4f..4e9e9a31 100644 --- a/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/component/GainedCouponViewPager.kt +++ b/feature/mypage/src/main/java/com/teamoffroad/feature/mypage/presentation/component/GainedCouponViewPager.kt @@ -40,6 +40,7 @@ import kotlinx.coroutines.launch @Composable fun GainedCouponViewPager( + characterName: String, availableCouponListState: State, usedCouponListState: State, availableCouponsCount: Int, @@ -50,6 +51,12 @@ fun GainedCouponViewPager( getUserAvailableCoupons: (Boolean, Int) -> Unit, getUserUsedCoupons: (Boolean, Int) -> Unit, ) { + val emptyCharacterImage = when (characterName) { + "루미" -> com.teamoffroad.offroad.core.designsystem.R.drawable.img_empty_rumi + "레디" -> com.teamoffroad.offroad.core.designsystem.R.drawable.img_empty_ready + else -> com.teamoffroad.offroad.core.designsystem.R.drawable.img_empty_nova + } + val tabTitles = listOf( stringResource(id = R.string.my_page_gained_coupon_available), stringResource(id = R.string.my_page_gained_coupon_used) @@ -118,6 +125,7 @@ fun GainedCouponViewPager( ) { page -> when (page) { 0 -> AvailableCouponItems( + emptyCharacterImage = emptyCharacterImage, availableCouponsCount, coupons = availableCoupons, navigateToAvailableCouponDetail = navigateToAvailableCouponDetail, @@ -125,6 +133,7 @@ fun GainedCouponViewPager( ) 1 -> UsedCouponItems( + emptyCharacterImage = emptyCharacterImage, usedCouponsCount, coupons = usedCoupons, getUserUsedCoupons,