From 7346140a085cfbaa23bb0abfbce4211a22b995dd Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Thu, 24 Jul 2025 20:49:56 +0900 Subject: [PATCH 01/19] =?UTF-8?q?[ui]:=20=EB=B0=94=ED=85=80=20=EB=84=A4?= =?UTF-8?q?=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=20=EB=B0=94=20ui=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thip/ui/navigator/BottomNavigationBar.kt | 55 +++++++++++++++++-- 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt b/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt index 515cef2b..72805864 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt @@ -17,7 +17,10 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.navigation.NavController @@ -27,7 +30,8 @@ import com.texthip.thip.ui.theme.ThipTheme.typography @Composable fun BottomNavigationBar(navController: NavController) { - val currentRoute = navController.currentBackStackEntryAsState().value?.destination?.route + val currentDestination = navController.currentBackStackEntryAsState().value?.destination + val greyColor = colors.Grey02 Box( modifier = Modifier @@ -41,9 +45,48 @@ fun BottomNavigationBar(navController: NavController) { bottomEnd = 0.dp ) ) - .background(colors.Black), + .background(colors.Black) + .drawBehind { + val cornerRadius = 12.dp.toPx() + val strokeWidth = 2.dp.toPx() + + val path = Path().apply { + // 좌상단 모서리부터 시작 + moveTo(0f, cornerRadius) + arcTo( + rect = androidx.compose.ui.geometry.Rect( + left = 0f, + top = 0f, + right = cornerRadius * 2, + bottom = cornerRadius * 2 + ), + startAngleDegrees = 180f, + sweepAngleDegrees = 90f, + forceMoveTo = false + ) + lineTo(size.width - cornerRadius, 0f) + arcTo( + rect = androidx.compose.ui.geometry.Rect( + left = size.width - cornerRadius * 2, + top = 0f, + right = size.width, + bottom = cornerRadius * 2 + ), + startAngleDegrees = 270f, + sweepAngleDegrees = 90f, + forceMoveTo = false + ) + } + + drawPath( + path = path, + color = greyColor, + style = Stroke(width = strokeWidth) + ) + }, contentAlignment = Alignment.Center ) { + Row( modifier = Modifier .fillMaxSize() @@ -52,11 +95,12 @@ fun BottomNavigationBar(navController: NavController) { verticalAlignment = Alignment.CenterVertically ) { NavBarItems.BarItems.forEach { item -> + val currentRoute = Routes.fromRoute(currentDestination?.route) val isSelected = currentRoute == item.route NavigationBarItem( icon = { Icon( - painter = painterResource(id = if (isSelected) item.SelectedIconRes else item.IconRes), + painter = painterResource(id = if (isSelected) item.selectedIconRes else item.iconRes), contentDescription = item.title, ) }, @@ -78,13 +122,12 @@ fun BottomNavigationBar(navController: NavController) { } } }, - colors = NavigationBarItemDefaults.colors( indicatorColor = Color.Transparent, selectedIconColor = colors.Purple, - unselectedIconColor = Color.Unspecified, + unselectedIconColor = colors.Grey02, selectedTextColor = colors.Purple, - unselectedTextColor = Color.Unspecified + unselectedTextColor = colors.Grey02 ) ) } From f0b61fe3250f278a4cf9c586fa0420efcf67f645 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Thu, 24 Jul 2025 20:50:35 +0900 Subject: [PATCH 02/19] =?UTF-8?q?[feat]:=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=EA=B8=B0=EC=A1=B4=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EB=B2=84=EC=A0=84=20=EC=88=98=EC=A0=95=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 2 ++ gradle/libs.versions.toml | 13 ++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a7b39ef7..6664e029 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,6 +4,7 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) + alias(libs.plugins.kotlin.serialization) } android { @@ -55,6 +56,7 @@ dependencies { implementation(libs.androidx.foundation) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.navigation.runtime.android) + implementation(libs.kotlinx.serialization.json) implementation(libs.accompanist.pager) implementation(libs.accompanist.pager.indicators) testImplementation(libs.junit) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f596e68f..e0142547 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] -agp = "8.9.1" -kotlin = "2.0.21" +agp = "8.9.3" +kotlin = "2.2.0" coreKtx = "1.16.0" junit = "4.13.2" junitVersion = "1.2.1" @@ -8,12 +8,13 @@ espressoCore = "3.6.1" lifecycleRuntimeKtx = "2.8.7" activityCompose = "1.10.1" composeBom = "2024.09.00" -navigationCompose = "2.9.0" +navigationCompose = "2.9.2" foundation = "1.9.0-beta01" -lifecycleViewmodelCompose = "2.9.1" -navigationRuntimeAndroid = "2.9.0" +lifecycleViewmodelCompose = "2.9.2" +navigationRuntimeAndroid = "2.9.2" accompanistPager = "0.36.0" accompanistPagerIndicators = "0.36.0" +kotlinxSerializationJson = "1.9.0" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -36,9 +37,11 @@ androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "l androidx-navigation-runtime-android = { group = "androidx.navigation", name = "navigation-runtime-android", version.ref = "navigationRuntimeAndroid" } accompanist-pager = { group = "com.google.accompanist", name = "accompanist-pager", version.ref = "accompanistPager" } accompanist-pager-indicators = { group = "com.google.accompanist", name = "accompanist-pager-indicators", version.ref = "accompanistPagerIndicators" } +kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } From d3519c6e3ab4741c50fc2022b845dd56a53c691f Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Thu, 24 Jul 2025 20:51:23 +0900 Subject: [PATCH 03/19] =?UTF-8?q?[feat]:=20=ED=83=80=EC=9E=85=20=EC=84=B8?= =?UTF-8?q?=EC=9D=B4=ED=94=84=20=EB=84=A4=EB=B9=84=EA=B2=8C=EC=9D=B4?= =?UTF-8?q?=EC=85=98=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/texthip/thip/MainScreen.kt | 11 ++++--- .../com/texthip/thip/ui/navigator/BarItem.kt | 6 ++-- .../texthip/thip/ui/navigator/MainNavHost.kt | 14 ++++----- .../texthip/thip/ui/navigator/NavBarItems.kt | 24 +++++++------- .../com/texthip/thip/ui/navigator/Routes.kt | 31 ++++++++++++++++--- 5 files changed, 55 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/MainScreen.kt b/app/src/main/java/com/texthip/thip/MainScreen.kt index f408ea0e..28c771bb 100644 --- a/app/src/main/java/com/texthip/thip/MainScreen.kt +++ b/app/src/main/java/com/texthip/thip/MainScreen.kt @@ -6,23 +6,26 @@ import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import com.texthip.thip.ui.navigator.BottomNavigationBar import com.texthip.thip.ui.navigator.MainNavHost -import com.texthip.thip.ui.navigator.NavBarItems +import com.texthip.thip.ui.navigator.Routes @Composable fun MainScreen() { val navController = rememberNavController() val navBackStackEntry by navController.currentBackStackEntryAsState() - val currentRoute = navBackStackEntry?.destination?.route - val showBottomBar = currentRoute in NavBarItems.BarItems.map { it.route } + val currentDestination = navBackStackEntry?.destination + val currentRoute = Routes.fromRoute(currentDestination?.route) + val showBottomBar = currentRoute != null Scaffold( bottomBar = { if (showBottomBar) BottomNavigationBar(navController) - } + }, + containerColor = Color.Transparent ) { innerPadding -> Box(modifier = Modifier.padding(innerPadding)) { MainNavHost (navController) diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/BarItem.kt b/app/src/main/java/com/texthip/thip/ui/navigator/BarItem.kt index 4a7f730b..52364e0e 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/BarItem.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/BarItem.kt @@ -4,7 +4,7 @@ import androidx.annotation.DrawableRes data class BarItem( val title: String, - val route: String, - @DrawableRes val IconRes: Int, - @DrawableRes val SelectedIconRes: Int + val route: Routes, + @DrawableRes val iconRes: Int, + @DrawableRes val selectedIconRes: Int ) diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt b/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt index c2eed097..9242f9e6 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt @@ -1,9 +1,9 @@ package com.texthip.thip.ui.navigator -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable import androidx.compose.runtime.Composable import androidx.navigation.NavHostController +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable import com.texthip.thip.ui.booksearch.screen.BookSearchScreen import com.texthip.thip.ui.feed.screen.FeedScreen import com.texthip.thip.ui.group.screen.GroupScreen @@ -11,11 +11,11 @@ import com.texthip.thip.ui.mypage.screen.MyPageScreen @Composable fun MainNavHost(navController: NavHostController) { - NavHost(navController = navController, startDestination = Routes.Feed.route) { - composable(Routes.Feed.route) { FeedScreen(navController) } - composable(Routes.Group.route) { GroupScreen(navController) } - composable(Routes.BookSearch.route) { BookSearchScreen(navController = navController) } - composable(Routes.MyPage.route) { + NavHost(navController = navController, startDestination = Routes.Feed) { + composable { FeedScreen(navController) } + composable { GroupScreen(navController) } + composable { BookSearchScreen(navController = navController) } + composable { MyPageScreen( navController, nickname = "ThipUser01", diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/NavBarItems.kt b/app/src/main/java/com/texthip/thip/ui/navigator/NavBarItems.kt index faf8ce59..61b9c969 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/NavBarItems.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/NavBarItems.kt @@ -6,27 +6,27 @@ object NavBarItems { val BarItems = listOf( BarItem( title = "피드", - route = Routes.Feed.route, - IconRes = R.drawable.ic_feed, - SelectedIconRes = R.drawable.ic_feed_selected + route = Routes.Feed, + iconRes = R.drawable.ic_feed, + selectedIconRes = R.drawable.ic_feed_selected ), BarItem( title = "모임", - route = Routes.Group.route, - IconRes = R.drawable.ic_group, - SelectedIconRes = R.drawable.ic_group_selected + route = Routes.Group, + iconRes = R.drawable.ic_group, + selectedIconRes = R.drawable.ic_group_selected ), BarItem( title = "검색", - route = Routes.BookSearch.route, - IconRes = R.drawable.ic_booksearch, - SelectedIconRes = R.drawable.ic_booksearch_selected + route = Routes.BookSearch, + iconRes = R.drawable.ic_booksearch, + selectedIconRes = R.drawable.ic_booksearch_selected ), BarItem( title = "내 정보", - route = Routes.MyPage.route, - IconRes = R.drawable.ic_mypage, - SelectedIconRes = R.drawable.ic_mypage_selected + route = Routes.MyPage, + iconRes = R.drawable.ic_mypage, + selectedIconRes = R.drawable.ic_mypage_selected ) ) } \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/Routes.kt b/app/src/main/java/com/texthip/thip/ui/navigator/Routes.kt index d27920da..b2508c9e 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/Routes.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/Routes.kt @@ -1,9 +1,30 @@ package com.texthip.thip.ui.navigator +import kotlinx.serialization.Serializable -sealed class Routes(val route: String) { - object Feed : Routes("Feed") - object Group : Routes("Group") - object BookSearch : Routes("BookSearch") - object MyPage : Routes("MyPage") +@Serializable +sealed class Routes { + @Serializable + data object Feed : Routes() + + @Serializable + data object Group : Routes() + + @Serializable + data object BookSearch : Routes() + + @Serializable + data object MyPage : Routes() + + companion object { + fun fromRoute(route: String?): Routes? { + return when { + route?.contains("Feed") == true -> Feed + route?.contains("Group") == true -> Group + route?.contains("BookSearch") == true -> BookSearch + route?.contains("MyPage") == true -> MyPage + else -> null + } + } + } } From 050f59f1d65d35e843a1fe5ae0470280e07669c7 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Thu, 24 Jul 2025 20:51:40 +0900 Subject: [PATCH 04/19] =?UTF-8?q?[ui]:=20=EC=95=84=EC=9D=B4=EC=BD=98=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/texthip/thip/ui/mypage/screen/MypageScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/texthip/thip/ui/mypage/screen/MypageScreen.kt b/app/src/main/java/com/texthip/thip/ui/mypage/screen/MypageScreen.kt index a90d54bb..f8467f32 100644 --- a/app/src/main/java/com/texthip/thip/ui/mypage/screen/MypageScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/mypage/screen/MypageScreen.kt @@ -109,7 +109,7 @@ fun MyPageScreen( ) MenuItemButton( text = stringResource(R.string.notification_settings), - icon = painterResource(R.drawable.ic_notification), + icon = painterResource(R.drawable.ic_notice), contentColor = colors.White, backgroundColor = colors.DarkGrey02, hasRightIcon = true, From 47a766088a42bce1dc77e0f7aea112a53bb6f1a0 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Thu, 24 Jul 2025 21:56:09 +0900 Subject: [PATCH 05/19] =?UTF-8?q?[feat]:=20GroupViewModel=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=EB=B3=80=EA=B2=BD=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/group/{myroom/mock => viewmodel}/GroupViewModel.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename app/src/main/java/com/texthip/thip/ui/group/{myroom/mock => viewmodel}/GroupViewModel.kt (94%) diff --git a/app/src/main/java/com/texthip/thip/ui/group/myroom/mock/GroupViewModel.kt b/app/src/main/java/com/texthip/thip/ui/group/viewmodel/GroupViewModel.kt similarity index 94% rename from app/src/main/java/com/texthip/thip/ui/group/myroom/mock/GroupViewModel.kt rename to app/src/main/java/com/texthip/thip/ui/group/viewmodel/GroupViewModel.kt index 79139a7b..ded195d8 100644 --- a/app/src/main/java/com/texthip/thip/ui/group/myroom/mock/GroupViewModel.kt +++ b/app/src/main/java/com/texthip/thip/ui/group/viewmodel/GroupViewModel.kt @@ -1,7 +1,10 @@ -package com.texthip.thip.ui.group.myroom.mock +package com.texthip.thip.ui.group.viewmodel import androidx.lifecycle.ViewModel import com.texthip.thip.R +import com.texthip.thip.ui.group.myroom.mock.GroupCardData +import com.texthip.thip.ui.group.myroom.mock.GroupCardItemRoomData +import com.texthip.thip.ui.group.myroom.mock.GroupRoomSectionData import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -84,7 +87,4 @@ class GroupViewModel : ViewModel() { // 방 카드 클릭 (상세 진입) } - fun onFabClick() { - // FAB 클릭(모임방 생성 등) - } } \ No newline at end of file From 843327c98cc9c3f05e95a876c33cada7ed6cfed8 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Thu, 24 Jul 2025 21:57:20 +0900 Subject: [PATCH 06/19] =?UTF-8?q?[feat]:=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EB=B0=8F=20=EA=B7=B8=EB=A3=B9=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=9E=84=EC=8B=9C=20=EC=BB=A4=EB=B0=8B=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../makeroom/screen/GroupMakeRoomScreen.kt | 44 +++++++------------ .../thip/ui/group/screen/GroupScreen.kt | 12 +++-- .../texthip/thip/ui/navigator/MainNavHost.kt | 20 +++------ 3 files changed, 26 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/group/makeroom/screen/GroupMakeRoomScreen.kt b/app/src/main/java/com/texthip/thip/ui/group/makeroom/screen/GroupMakeRoomScreen.kt index 8211d6c4..8f1f202b 100644 --- a/app/src/main/java/com/texthip/thip/ui/group/makeroom/screen/GroupMakeRoomScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/group/makeroom/screen/GroupMakeRoomScreen.kt @@ -1,10 +1,22 @@ package com.texthip.thip.ui.group.makeroom.screen -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.blur @@ -12,6 +24,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.lifecycle.viewmodel.compose.viewModel import com.texthip.thip.R import com.texthip.thip.ui.common.buttons.GenreChipRow import com.texthip.thip.ui.common.buttons.ToggleSwitchButton @@ -24,13 +37,9 @@ import com.texthip.thip.ui.group.makeroom.component.GroupSelectBook import com.texthip.thip.ui.group.makeroom.component.MemberLimitPicker import com.texthip.thip.ui.group.makeroom.component.SectionDivider import com.texthip.thip.ui.group.makeroom.mock.BookData -import com.texthip.thip.ui.group.makeroom.mock.GroupMakeRoomRequest import com.texthip.thip.ui.group.makeroom.mock.dummyGroupBooks import com.texthip.thip.ui.group.makeroom.mock.dummySavedBooks -import com.texthip.thip.ui.group.makeroom.viewmodel.ApiResult -import com.texthip.thip.ui.group.makeroom.viewmodel.GroupCreateResponse import com.texthip.thip.ui.group.makeroom.viewmodel.GroupMakeRoomViewModel -import com.texthip.thip.ui.group.makeroom.viewmodel.GroupRepository import com.texthip.thip.ui.theme.ThipTheme import com.texthip.thip.ui.theme.ThipTheme.colors import com.texthip.thip.ui.theme.ThipTheme.typography @@ -223,15 +232,7 @@ fun GroupMakeRoomScreen( @Preview @Composable private fun GroupMakeRoomScreenPreview() { - // Preview용 MockViewModel 생성 - val mockViewModel = object : GroupMakeRoomViewModel(MockGroupRepository()) { - // 필요한 경우 Preview용 초기 상태 설정 - init { - // 예시: 미리 선택된 책이 있는 상태로 Preview - // selectBook(BookData(id = "1", title = "예시 책", author = "작가")) - // selectGenre(0) - } - } + val mockViewModel: GroupMakeRoomViewModel = viewModel() ThipTheme { GroupMakeRoomScreen( @@ -241,16 +242,3 @@ private fun GroupMakeRoomScreenPreview() { ) } } - -// Preview용 Mock Repository -class MockGroupRepository : GroupRepository { - override suspend fun createGroup(request: GroupMakeRoomRequest): ApiResult { - return ApiResult( - isSuccess = true, - data = GroupCreateResponse( - groupId = "mock_group_id", - groupName = "Mock Group" - ) - ) - } -} diff --git a/app/src/main/java/com/texthip/thip/ui/group/screen/GroupScreen.kt b/app/src/main/java/com/texthip/thip/ui/group/screen/GroupScreen.kt index a7a97c9f..5f1f90f2 100644 --- a/app/src/main/java/com/texthip/thip/ui/group/screen/GroupScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/group/screen/GroupScreen.kt @@ -14,13 +14,11 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import androidx.navigation.NavHostController import com.texthip.thip.R import com.texthip.thip.ui.common.buttons.FloatingButton import com.texthip.thip.ui.common.topappbar.LogoTopAppBar @@ -28,19 +26,19 @@ import com.texthip.thip.ui.group.myroom.component.GroupMySectionHeader import com.texthip.thip.ui.group.myroom.component.GroupPager import com.texthip.thip.ui.group.myroom.component.GroupRoomDeadlineSection import com.texthip.thip.ui.group.myroom.component.GroupSearchTextField -import com.texthip.thip.ui.group.myroom.mock.GroupViewModel +import com.texthip.thip.ui.group.viewmodel.GroupViewModel import com.texthip.thip.ui.theme.ThipTheme import com.texthip.thip.ui.theme.ThipTheme.colors @Composable fun GroupScreen( - navController: NavHostController? = null, + onNavigateToMakeRoom: () -> Unit = {}, viewModel: GroupViewModel = viewModel() ) { val myGroups by viewModel.myGroups.collectAsState() val roomSections by viewModel.roomSections.collectAsState() val scrollState = rememberScrollState() - var searchText by remember { mutableStateOf("") } + val searchText by remember { mutableStateOf("") } Box( Modifier @@ -99,13 +97,13 @@ fun GroupScreen( // 오른쪽 하단 FAB FloatingButton( icon = painterResource(id = R.drawable.ic_makegroup), - onClick = { viewModel.onFabClick() } + onClick = onNavigateToMakeRoom ) } } -@Preview() +@Preview @Composable fun PreviewGroupScreen() { ThipTheme { diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt b/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt index 9242f9e6..23340176 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt @@ -3,24 +3,14 @@ package com.texthip.thip.ui.navigator import androidx.compose.runtime.Composable import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable -import com.texthip.thip.ui.booksearch.screen.BookSearchScreen -import com.texthip.thip.ui.feed.screen.FeedScreen -import com.texthip.thip.ui.group.screen.GroupScreen -import com.texthip.thip.ui.mypage.screen.MyPageScreen +// 메인 네비게이션 @Composable fun MainNavHost(navController: NavHostController) { NavHost(navController = navController, startDestination = Routes.Feed) { - composable { FeedScreen(navController) } - composable { GroupScreen(navController) } - composable { BookSearchScreen(navController = navController) } - composable { - MyPageScreen( - navController, - nickname = "ThipUser01", - badgeText = "문학가" - ) - } + feedNavigation(navController) + groupNavigation(navController) + bookSearchNavigation(navController) + myPageNavigation(navController) } } \ No newline at end of file From 1fae915f25657ea50c725a567afe557de4b632a5 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Thu, 24 Jul 2025 22:59:28 +0900 Subject: [PATCH 07/19] =?UTF-8?q?[feat]:=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20=ED=8C=8C=EC=9D=BC=20=EC=9D=B4=EB=8F=99=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../texthip/thip/ui/navigator/MainNavHost.kt | 7 ++++- .../com/texthip/thip/ui/navigator/Routes.kt | 30 ------------------- .../thip/ui/navigator/{ => data}/BarItem.kt | 2 +- .../ui/navigator/{ => data}/NavBarItems.kt | 4 +-- .../texthip/thip/ui/navigator/data/Routes.kt | 23 ++++++++++++++ 5 files changed, 32 insertions(+), 34 deletions(-) delete mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/Routes.kt rename app/src/main/java/com/texthip/thip/ui/navigator/{ => data}/BarItem.kt (81%) rename app/src/main/java/com/texthip/thip/ui/navigator/{ => data}/NavBarItems.kt (91%) create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/data/Routes.kt diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt b/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt index 23340176..f78f7c64 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt @@ -3,6 +3,11 @@ package com.texthip.thip.ui.navigator import androidx.compose.runtime.Composable import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost +import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.navigations.feedNavigation +import com.texthip.thip.ui.navigator.navigations.groupNavigation +import com.texthip.thip.ui.navigator.navigations.myPageNavigation +import com.texthip.thip.ui.navigator.navigations.searchNavigation // 메인 네비게이션 @Composable @@ -10,7 +15,7 @@ fun MainNavHost(navController: NavHostController) { NavHost(navController = navController, startDestination = Routes.Feed) { feedNavigation(navController) groupNavigation(navController) - bookSearchNavigation(navController) + searchNavigation(navController) myPageNavigation(navController) } } \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/Routes.kt b/app/src/main/java/com/texthip/thip/ui/navigator/Routes.kt deleted file mode 100644 index b2508c9e..00000000 --- a/app/src/main/java/com/texthip/thip/ui/navigator/Routes.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.texthip.thip.ui.navigator - -import kotlinx.serialization.Serializable - -@Serializable -sealed class Routes { - @Serializable - data object Feed : Routes() - - @Serializable - data object Group : Routes() - - @Serializable - data object BookSearch : Routes() - - @Serializable - data object MyPage : Routes() - - companion object { - fun fromRoute(route: String?): Routes? { - return when { - route?.contains("Feed") == true -> Feed - route?.contains("Group") == true -> Group - route?.contains("BookSearch") == true -> BookSearch - route?.contains("MyPage") == true -> MyPage - else -> null - } - } - } -} diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/BarItem.kt b/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt similarity index 81% rename from app/src/main/java/com/texthip/thip/ui/navigator/BarItem.kt rename to app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt index 52364e0e..be389224 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/BarItem.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt @@ -1,4 +1,4 @@ -package com.texthip.thip.ui.navigator +package com.texthip.thip.ui.navigator.data import androidx.annotation.DrawableRes diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/NavBarItems.kt b/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt similarity index 91% rename from app/src/main/java/com/texthip/thip/ui/navigator/NavBarItems.kt rename to app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt index 61b9c969..f7753a48 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/NavBarItems.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt @@ -1,4 +1,4 @@ -package com.texthip.thip.ui.navigator +package com.texthip.thip.ui.navigator.data import com.texthip.thip.R @@ -18,7 +18,7 @@ object NavBarItems { ), BarItem( title = "검색", - route = Routes.BookSearch, + route = Routes.Search, iconRes = R.drawable.ic_booksearch, selectedIconRes = R.drawable.ic_booksearch_selected ), diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/data/Routes.kt b/app/src/main/java/com/texthip/thip/ui/navigator/data/Routes.kt new file mode 100644 index 00000000..c55356bc --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/data/Routes.kt @@ -0,0 +1,23 @@ +package com.texthip.thip.ui.navigator.data + +import kotlinx.serialization.Serializable + +@Serializable +sealed class Routes { + @Serializable + data object Feed : Routes() + + @Serializable + data object Group : Routes() + + @Serializable + data object Search : Routes() + + @Serializable + data object MyPage : Routes() + + // Group 관련 하위 화면들 + @Serializable + data object GroupMakeRoom : Routes() + +} From ab8640f8ccacaba45b76c23c5b1ac90842a3cd85 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Thu, 24 Jul 2025 23:00:34 +0900 Subject: [PATCH 08/19] =?UTF-8?q?[feat]:=20=EB=A9=94=EC=9D=B8=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=EC=97=90=EC=84=9C=20=EB=B0=94=ED=85=80=20=EB=84=A4?= =?UTF-8?q?=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=20=ED=91=9C=EC=8B=9C=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/texthip/thip/MainScreen.kt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/MainScreen.kt b/app/src/main/java/com/texthip/thip/MainScreen.kt index 28c771bb..47bff3d2 100644 --- a/app/src/main/java/com/texthip/thip/MainScreen.kt +++ b/app/src/main/java/com/texthip/thip/MainScreen.kt @@ -11,15 +11,23 @@ import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import com.texthip.thip.ui.navigator.BottomNavigationBar import com.texthip.thip.ui.navigator.MainNavHost -import com.texthip.thip.ui.navigator.Routes +import com.texthip.thip.ui.navigator.data.Routes @Composable fun MainScreen() { val navController = rememberNavController() val navBackStackEntry by navController.currentBackStackEntryAsState() val currentDestination = navBackStackEntry?.destination - val currentRoute = Routes.fromRoute(currentDestination?.route) - val showBottomBar = currentRoute != null + + val mainTabRoutes = setOf( + Routes.Feed::class.qualifiedName, + Routes.Group::class.qualifiedName, + Routes.Search::class.qualifiedName, + Routes.MyPage::class.qualifiedName + ) + val showBottomBar = currentDestination?.route?.let { route -> + mainTabRoutes.contains(route) + } ?: true Scaffold( bottomBar = { @@ -28,7 +36,7 @@ fun MainScreen() { containerColor = Color.Transparent ) { innerPadding -> Box(modifier = Modifier.padding(innerPadding)) { - MainNavHost (navController) + MainNavHost(navController) } } } \ No newline at end of file From fb21d793f6d70cd75169c0a71d1f810968a44295 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Thu, 24 Jul 2025 23:00:50 +0900 Subject: [PATCH 09/19] =?UTF-8?q?[refactor]:=20=EA=B8=B0=EC=A1=B4=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../viewmodel/GroupMakeRoomViewModel.kt | 20 ++++++++++++++++--- .../thip/ui/navigator/BottomNavigationBar.kt | 2 ++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/group/makeroom/viewmodel/GroupMakeRoomViewModel.kt b/app/src/main/java/com/texthip/thip/ui/group/makeroom/viewmodel/GroupMakeRoomViewModel.kt index 20e28599..a857e861 100644 --- a/app/src/main/java/com/texthip/thip/ui/group/makeroom/viewmodel/GroupMakeRoomViewModel.kt +++ b/app/src/main/java/com/texthip/thip/ui/group/makeroom/viewmodel/GroupMakeRoomViewModel.kt @@ -12,8 +12,8 @@ import kotlinx.coroutines.launch import java.time.LocalDate // 나중에 서버와 연동할 때 사용할 뷰모델 예시 -open class GroupMakeRoomViewModel( - private val groupRepository: GroupRepository // 의존성 주입 +class GroupMakeRoomViewModel( + private val groupRepository: GroupRepository = MockGroupRepository() // 기본값으로 Mock Repository 사용 ) : ViewModel() { private val _uiState = MutableStateFlow(GroupMakeRoomUiState()) @@ -122,4 +122,18 @@ data class ApiResult( data class GroupCreateResponse( val groupId: String, val groupName: String -) \ No newline at end of file +) + +// Mock Repository 구현 +class MockGroupRepository : GroupRepository { + override suspend fun createGroup(request: GroupMakeRoomRequest): ApiResult { + // 임시로 성공 응답 반환 + return ApiResult( + isSuccess = true, + data = GroupCreateResponse( + groupId = "mock_group_${System.currentTimeMillis()}", + groupName = request.roomTitle + ) + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt b/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt index 5b3d735f..4725822a 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt @@ -25,6 +25,8 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import androidx.navigation.compose.currentBackStackEntryAsState +import com.texthip.thip.ui.navigator.data.NavBarItems +import com.texthip.thip.ui.navigator.extensions.navigateToTab import com.texthip.thip.ui.theme.ThipTheme.colors import com.texthip.thip.ui.theme.ThipTheme.typography From caa86c9de8e504096cf77624bec80c3519645f4e Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Thu, 24 Jul 2025 23:01:27 +0900 Subject: [PATCH 10/19] =?UTF-8?q?[feat]:=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=ED=8C=8C=EC=9D=BC=20=EB=B6=84=EB=A6=AC=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../navigator/navigations/FeedNavigation.kt | 14 +++++++ .../navigator/navigations/GroupNavigation.kt | 38 +++++++++++++++++++ .../navigator/navigations/MyPageNavigation.kt | 19 ++++++++++ .../navigator/navigations/SearchNavigation.kt | 13 +++++++ 4 files changed, 84 insertions(+) create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt new file mode 100644 index 00000000..15fec7f5 --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt @@ -0,0 +1,14 @@ +package com.texthip.thip.ui.navigator.navigations + +import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavHostController +import androidx.navigation.compose.composable +import com.texthip.thip.ui.feed.screen.FeedScreen +import com.texthip.thip.ui.navigator.data.Routes + +// Feed +fun NavGraphBuilder.feedNavigation(navController: NavHostController) { + composable { + FeedScreen(navController) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt new file mode 100644 index 00000000..cd3c9ba1 --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt @@ -0,0 +1,38 @@ +package com.texthip.thip.ui.navigator.navigations + +import androidx.lifecycle.viewmodel.compose.viewModel +import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavHostController +import androidx.navigation.compose.composable +import com.texthip.thip.ui.group.makeroom.screen.GroupMakeRoomScreen +import com.texthip.thip.ui.group.makeroom.viewmodel.GroupMakeRoomViewModel +import com.texthip.thip.ui.group.screen.GroupScreen +import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.extensions.navigateBack +import com.texthip.thip.ui.navigator.extensions.navigateToGroupMakeRoom + +// Group +fun NavGraphBuilder.groupNavigation(navController: NavHostController) { + // 메인 Group 화면 + composable { + GroupScreen( + onNavigateToMakeRoom = { + navController.navigateToGroupMakeRoom() + } + ) + } + + // Group MakeRoom 화면 + composable { + val viewModel: GroupMakeRoomViewModel = viewModel() + GroupMakeRoomScreen( + viewModel = viewModel, + onNavigateBack = { + navController.navigateBack() + }, + onGroupCreated = { + navController.navigateBack() + } + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt new file mode 100644 index 00000000..37eeb5f8 --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt @@ -0,0 +1,19 @@ +package com.texthip.thip.ui.navigator.navigations + +import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavHostController +import androidx.navigation.compose.composable +import com.texthip.thip.ui.mypage.screen.MyPageScreen +import com.texthip.thip.ui.navigator.data.Routes + +// MyPage +fun NavGraphBuilder.myPageNavigation(navController: NavHostController) { + composable { + MyPageScreen( + navController, + nickname = "ThipUser01", + badgeText = "문학가" + ) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt new file mode 100644 index 00000000..9ae55fa0 --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt @@ -0,0 +1,13 @@ +package com.texthip.thip.ui.navigator.navigations + +import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavHostController +import androidx.navigation.compose.composable +import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.search.screen.SearchBookScreen + +fun NavGraphBuilder.searchNavigation(navController: NavHostController) { + composable { + SearchBookScreen(navController = navController) + } +} \ No newline at end of file From 53b0e582f79878c676fc02d4d50922a7c97bff11 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Thu, 24 Jul 2025 23:02:42 +0900 Subject: [PATCH 11/19] =?UTF-8?q?[feat]:=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20extensions(=ED=95=A8=EC=88=98)=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extensions/CommonNavigationExtensions.kt | 23 +++++++++++++++++++ .../extensions/FeedNavigationExtensions.kt | 9 ++++++++ .../extensions/GroupNavigationExtensions.kt | 15 ++++++++++++ .../extensions/MyPageNavigationExtensions.kt | 11 +++++++++ .../extensions/SearchNavigationExtensions.kt | 10 ++++++++ 5 files changed, 68 insertions(+) create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt new file mode 100644 index 00000000..d829abdd --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt @@ -0,0 +1,23 @@ +package com.texthip.thip.ui.navigator.extensions + +import androidx.navigation.NavHostController +import com.texthip.thip.ui.navigator.data.Routes + + +// 공통 네비게이션 확장 함수들 + +// 뒤로가기 +fun NavHostController.navigateBack() { + popBackStack() +} + +// Bottom Navigation용 Tab 이동 +fun NavHostController.navigateToTab(route: Routes) { + navigate(route) { + popUpTo(graph.startDestinationId) { + saveState = true + } + launchSingleTop = true + restoreState = true + } +} \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt new file mode 100644 index 00000000..ce627605 --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt @@ -0,0 +1,9 @@ +package com.texthip.thip.ui.navigator.extensions + +import androidx.navigation.NavHostController +import com.texthip.thip.ui.navigator.data.Routes + +// Feed 확장 함수 +fun NavHostController.navigateToFeed() { + navigate(Routes.Feed) +} diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt new file mode 100644 index 00000000..586375b0 --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt @@ -0,0 +1,15 @@ +package com.texthip.thip.ui.navigator.extensions + +import androidx.navigation.NavHostController +import com.texthip.thip.ui.navigator.data.Routes + + +// Group 관련 네비게이션 확장 함수들 + +fun NavHostController.navigateToGroup() { + navigate(Routes.Group) +} + +fun NavHostController.navigateToGroupMakeRoom() { + navigate(Routes.GroupMakeRoom) +} \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt new file mode 100644 index 00000000..67244ebf --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt @@ -0,0 +1,11 @@ +package com.texthip.thip.ui.navigator.extensions + +import androidx.navigation.NavHostController +import com.texthip.thip.ui.navigator.data.Routes + + +// MyPage 관련 네비게이션 확장 함수들 + +fun NavHostController.navigateToMyPage() { + navigate(Routes.MyPage) +} diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt new file mode 100644 index 00000000..67bce081 --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt @@ -0,0 +1,10 @@ +package com.texthip.thip.ui.navigator.extensions + +import androidx.navigation.NavHostController +import com.texthip.thip.ui.navigator.data.Routes + + +// Search 관련 네비게이션 확장 함수들 +fun NavHostController.navigateToSearch() { + navigate(Routes.Search) +} \ No newline at end of file From cc9c701fd0008982c9fd4e8545b2616ad0ab3816 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Fri, 25 Jul 2025 01:03:27 +0900 Subject: [PATCH 12/19] =?UTF-8?q?[feat]:=20=EB=A3=A8=ED=8A=B8=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thip/ui/navigator/routes/FeedRoutes.kt | 10 ++++++++++ .../thip/ui/navigator/routes/GroupRoutes.kt | 15 +++++++++++++++ .../thip/ui/navigator/routes/MyPageRoutes.kt | 12 ++++++++++++ .../thip/ui/navigator/{data => routes}/Routes.kt | 8 ++------ .../thip/ui/navigator/routes/SearchRoutes.kt | 10 ++++++++++ 5 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/routes/FeedRoutes.kt create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/routes/GroupRoutes.kt create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/routes/MyPageRoutes.kt rename app/src/main/java/com/texthip/thip/ui/navigator/{data => routes}/Routes.kt (66%) create mode 100644 app/src/main/java/com/texthip/thip/ui/navigator/routes/SearchRoutes.kt diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/routes/FeedRoutes.kt b/app/src/main/java/com/texthip/thip/ui/navigator/routes/FeedRoutes.kt new file mode 100644 index 00000000..6cc7bc71 --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/routes/FeedRoutes.kt @@ -0,0 +1,10 @@ +package com.texthip.thip.ui.navigator.routes + +import kotlinx.serialization.Serializable + +@Serializable +sealed class FeedRoutes : Routes() { + // 향후 추가될 Feed 관련 화면들 + // @Serializable data object SubscriptionList : FeedRoutes + // @Serializable data object Detail : FeedRoutes +} \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/routes/GroupRoutes.kt b/app/src/main/java/com/texthip/thip/ui/navigator/routes/GroupRoutes.kt new file mode 100644 index 00000000..e68d8268 --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/routes/GroupRoutes.kt @@ -0,0 +1,15 @@ +package com.texthip.thip.ui.navigator.routes + +import kotlinx.serialization.Serializable + +@Serializable +sealed class GroupRoutes : Routes() { + @Serializable + data object MakeRoom : GroupRoutes() + + // 향후 추가될 Group 관련 화면들 + // @Serializable data object Room : GroupRoutes + // @Serializable data object RoomChat : GroupRoutes + // @Serializable data object Note : GroupRoutes + // @Serializable data object NoteCreate : GroupRoutes +} \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/routes/MyPageRoutes.kt b/app/src/main/java/com/texthip/thip/ui/navigator/routes/MyPageRoutes.kt new file mode 100644 index 00000000..85ab317f --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/routes/MyPageRoutes.kt @@ -0,0 +1,12 @@ +package com.texthip.thip.ui.navigator.routes + +import kotlinx.serialization.Serializable + +@Serializable +sealed class MyPageRoutes : Routes() { + // 향후 추가될 MyPage 관련 화면들 + // @Serializable data object Edit : MyPageRoutes + // @Serializable data object Save : MyPageRoutes + // @Serializable data object Reaction : MyPageRoutes + // @Serializable data object NotificationEdit : MyPageRoutes +} \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/data/Routes.kt b/app/src/main/java/com/texthip/thip/ui/navigator/routes/Routes.kt similarity index 66% rename from app/src/main/java/com/texthip/thip/ui/navigator/data/Routes.kt rename to app/src/main/java/com/texthip/thip/ui/navigator/routes/Routes.kt index c55356bc..262f60f9 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/data/Routes.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/routes/Routes.kt @@ -1,9 +1,10 @@ -package com.texthip.thip.ui.navigator.data +package com.texthip.thip.ui.navigator.routes import kotlinx.serialization.Serializable @Serializable sealed class Routes { + // 메인 탭 Routes @Serializable data object Feed : Routes() @@ -15,9 +16,4 @@ sealed class Routes { @Serializable data object MyPage : Routes() - - // Group 관련 하위 화면들 - @Serializable - data object GroupMakeRoom : Routes() - } diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/routes/SearchRoutes.kt b/app/src/main/java/com/texthip/thip/ui/navigator/routes/SearchRoutes.kt new file mode 100644 index 00000000..2b8e1078 --- /dev/null +++ b/app/src/main/java/com/texthip/thip/ui/navigator/routes/SearchRoutes.kt @@ -0,0 +1,10 @@ +package com.texthip.thip.ui.navigator.routes + +import kotlinx.serialization.Serializable + +@Serializable +sealed class SearchRoutes : Routes() { + // 향후 추가될 Search 관련 화면들 + // @Serializable data object BookDetail : SearchRoutes + // @Serializable data object BookGroup : SearchRoutes +} \ No newline at end of file From e35062d0e8700d10d49d82d372d77f4f6dcf5942 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Fri, 25 Jul 2025 01:03:45 +0900 Subject: [PATCH 13/19] =?UTF-8?q?[feat]:=20=EB=A3=A8=ED=8A=B8=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/navigator/extensions/CommonNavigationExtensions.kt | 2 +- .../ui/navigator/extensions/GroupNavigationExtensions.kt | 5 +++-- .../ui/navigator/extensions/MyPageNavigationExtensions.kt | 2 +- .../ui/navigator/extensions/SearchNavigationExtensions.kt | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt index d829abdd..d13b1fda 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt @@ -1,7 +1,7 @@ package com.texthip.thip.ui.navigator.extensions import androidx.navigation.NavHostController -import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.routes.Routes // 공통 네비게이션 확장 함수들 diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt index 586375b0..dc26e91a 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt @@ -1,7 +1,8 @@ package com.texthip.thip.ui.navigator.extensions import androidx.navigation.NavHostController -import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.GroupRoutes // Group 관련 네비게이션 확장 함수들 @@ -11,5 +12,5 @@ fun NavHostController.navigateToGroup() { } fun NavHostController.navigateToGroupMakeRoom() { - navigate(Routes.GroupMakeRoom) + navigate(GroupRoutes.MakeRoom) } \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt index 67244ebf..0498a6c2 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt @@ -1,7 +1,7 @@ package com.texthip.thip.ui.navigator.extensions import androidx.navigation.NavHostController -import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.routes.Routes // MyPage 관련 네비게이션 확장 함수들 diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt index 67bce081..297a18ef 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt @@ -1,7 +1,7 @@ package com.texthip.thip.ui.navigator.extensions import androidx.navigation.NavHostController -import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.routes.Routes // Search 관련 네비게이션 확장 함수들 From e4b4a2860cbf7ca6f3608a197839eebb38541e53 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Fri, 25 Jul 2025 01:04:23 +0900 Subject: [PATCH 14/19] =?UTF-8?q?[feat]:=20=EB=A3=A8=ED=8A=B8=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/texthip/thip/ui/navigator/MainNavHost.kt | 2 +- .../main/java/com/texthip/thip/ui/navigator/data/BarItem.kt | 1 + .../java/com/texthip/thip/ui/navigator/data/NavBarItems.kt | 1 + .../thip/ui/navigator/extensions/FeedNavigationExtensions.kt | 2 +- .../texthip/thip/ui/navigator/navigations/FeedNavigation.kt | 2 +- .../texthip/thip/ui/navigator/navigations/GroupNavigation.kt | 5 +++-- .../thip/ui/navigator/navigations/MyPageNavigation.kt | 2 +- .../thip/ui/navigator/navigations/SearchNavigation.kt | 2 +- 8 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt b/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt index f78f7c64..b0697d8b 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt @@ -3,7 +3,7 @@ package com.texthip.thip.ui.navigator import androidx.compose.runtime.Composable import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost -import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.routes.Routes import com.texthip.thip.ui.navigator.navigations.feedNavigation import com.texthip.thip.ui.navigator.navigations.groupNavigation import com.texthip.thip.ui.navigator.navigations.myPageNavigation diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt b/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt index be389224..0b59591b 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt @@ -1,6 +1,7 @@ package com.texthip.thip.ui.navigator.data import androidx.annotation.DrawableRes +import com.texthip.thip.ui.navigator.routes.Routes data class BarItem( val title: String, diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt b/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt index f7753a48..ea8a3062 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt @@ -1,6 +1,7 @@ package com.texthip.thip.ui.navigator.data import com.texthip.thip.R +import com.texthip.thip.ui.navigator.routes.Routes object NavBarItems { val BarItems = listOf( diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt index ce627605..330e5934 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt @@ -1,7 +1,7 @@ package com.texthip.thip.ui.navigator.extensions import androidx.navigation.NavHostController -import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.routes.Routes // Feed 확장 함수 fun NavHostController.navigateToFeed() { diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt index 15fec7f5..3bc1754c 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt @@ -4,7 +4,7 @@ import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.compose.composable import com.texthip.thip.ui.feed.screen.FeedScreen -import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.routes.Routes // Feed fun NavGraphBuilder.feedNavigation(navController: NavHostController) { diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt index cd3c9ba1..1181627f 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt @@ -7,7 +7,8 @@ import androidx.navigation.compose.composable import com.texthip.thip.ui.group.makeroom.screen.GroupMakeRoomScreen import com.texthip.thip.ui.group.makeroom.viewmodel.GroupMakeRoomViewModel import com.texthip.thip.ui.group.screen.GroupScreen -import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.GroupRoutes import com.texthip.thip.ui.navigator.extensions.navigateBack import com.texthip.thip.ui.navigator.extensions.navigateToGroupMakeRoom @@ -23,7 +24,7 @@ fun NavGraphBuilder.groupNavigation(navController: NavHostController) { } // Group MakeRoom 화면 - composable { + composable { val viewModel: GroupMakeRoomViewModel = viewModel() GroupMakeRoomScreen( viewModel = viewModel, diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt index 37eeb5f8..21c9ee85 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt @@ -4,7 +4,7 @@ import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.compose.composable import com.texthip.thip.ui.mypage.screen.MyPageScreen -import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.routes.Routes // MyPage fun NavGraphBuilder.myPageNavigation(navController: NavHostController) { diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt index 9ae55fa0..d134c4e6 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt @@ -3,7 +3,7 @@ package com.texthip.thip.ui.navigator.navigations import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.compose.composable -import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.routes.Routes import com.texthip.thip.ui.search.screen.SearchBookScreen fun NavGraphBuilder.searchNavigation(navController: NavHostController) { From d6ffedd49096c10c8edfddc1caf4f55223f7c441 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Fri, 25 Jul 2025 01:04:56 +0900 Subject: [PATCH 15/19] =?UTF-8?q?[feat]:=20=EC=BD=94=EB=93=9C=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94=20=EB=A3=A8?= =?UTF-8?q?=ED=8A=B8=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95(=EB=A6=AC?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EC=A7=80=EC=85=98=20=ED=95=B4=EB=8F=84=20?= =?UTF-8?q?=EB=8B=A4=EC=8B=9C=20=EC=83=9D=EC=84=B1=20=EC=95=88=EB=90=98?= =?UTF-8?q?=EA=B2=8C)=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/texthip/thip/MainScreen.kt | 17 +++++++++-------- .../thip/ui/navigator/BottomNavigationBar.kt | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/MainScreen.kt b/app/src/main/java/com/texthip/thip/MainScreen.kt index 47bff3d2..4ff9e101 100644 --- a/app/src/main/java/com/texthip/thip/MainScreen.kt +++ b/app/src/main/java/com/texthip/thip/MainScreen.kt @@ -11,7 +11,14 @@ import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import com.texthip.thip.ui.navigator.BottomNavigationBar import com.texthip.thip.ui.navigator.MainNavHost -import com.texthip.thip.ui.navigator.data.Routes +import com.texthip.thip.ui.navigator.routes.Routes + +private val MAIN_TAB_ROUTES = setOf( + Routes.Feed, + Routes.Group, + Routes.Search, + Routes.MyPage +) @Composable fun MainScreen() { @@ -19,14 +26,8 @@ fun MainScreen() { val navBackStackEntry by navController.currentBackStackEntryAsState() val currentDestination = navBackStackEntry?.destination - val mainTabRoutes = setOf( - Routes.Feed::class.qualifiedName, - Routes.Group::class.qualifiedName, - Routes.Search::class.qualifiedName, - Routes.MyPage::class.qualifiedName - ) val showBottomBar = currentDestination?.route?.let { route -> - mainTabRoutes.contains(route) + MAIN_TAB_ROUTES.any { it::class.qualifiedName == route } } ?: true Scaffold( diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt b/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt index 4725822a..f29e7f12 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt @@ -97,7 +97,7 @@ fun BottomNavigationBar(navController: NavHostController) { verticalAlignment = Alignment.CenterVertically ) { NavBarItems.BarItems.forEach { item -> - val isSelected = currentDestination?.route?.contains(item.route::class.simpleName ?: "") == true + val isSelected = currentDestination?.route == item.route::class.qualifiedName NavigationBarItem( icon = { Icon( From b16c04bc18cb27dd44960ba335fab011c72c6b0b Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Fri, 25 Jul 2025 01:14:21 +0900 Subject: [PATCH 16/19] =?UTF-8?q?[feat]:=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EC=8A=A4=ED=8A=B8=EB=A7=81=20=EC=B6=94?= =?UTF-8?q?=EC=B6=9C=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/texthip/thip/ui/navigator/BottomNavigationBar.kt | 5 +++-- .../java/com/texthip/thip/ui/navigator/data/BarItem.kt | 3 ++- .../com/texthip/thip/ui/navigator/data/NavBarItems.kt | 8 ++++---- app/src/main/res/values/strings.xml | 6 ++++++ 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt b/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt index f29e7f12..e31a8cc0 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt @@ -22,6 +22,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import androidx.navigation.compose.currentBackStackEntryAsState @@ -102,12 +103,12 @@ fun BottomNavigationBar(navController: NavHostController) { icon = { Icon( painter = painterResource(id = if (isSelected) item.selectedIconRes else item.iconRes), - contentDescription = item.title, + contentDescription = stringResource(item.titleRes), ) }, label = { Text( - text = item.title, + text = stringResource(item.titleRes), style = typography.navi_m500_s10 ) }, diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt b/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt index 0b59591b..5c5daa57 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt @@ -1,10 +1,11 @@ package com.texthip.thip.ui.navigator.data import androidx.annotation.DrawableRes +import androidx.annotation.StringRes import com.texthip.thip.ui.navigator.routes.Routes data class BarItem( - val title: String, + @StringRes val titleRes: Int, val route: Routes, @DrawableRes val iconRes: Int, @DrawableRes val selectedIconRes: Int diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt b/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt index ea8a3062..8a23c972 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt @@ -6,25 +6,25 @@ import com.texthip.thip.ui.navigator.routes.Routes object NavBarItems { val BarItems = listOf( BarItem( - title = "피드", + titleRes = R.string.nav_feed, route = Routes.Feed, iconRes = R.drawable.ic_feed, selectedIconRes = R.drawable.ic_feed_selected ), BarItem( - title = "모임", + titleRes = R.string.nav_group, route = Routes.Group, iconRes = R.drawable.ic_group, selectedIconRes = R.drawable.ic_group_selected ), BarItem( - title = "검색", + titleRes = R.string.nav_search, route = Routes.Search, iconRes = R.drawable.ic_booksearch, selectedIconRes = R.drawable.ic_booksearch_selected ), BarItem( - title = "내 정보", + titleRes = R.string.nav_mypage, route = Routes.MyPage, iconRes = R.drawable.ic_mypage, selectedIconRes = R.drawable.ic_mypage_selected diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8e2099e1..39ff9357 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,12 @@ Thip + + 피드 + 모임 + 검색 + 내 정보 + 🔥 %d명이 읽기에 참여중이에요! 🔥 From c4b2c8dc0bb1df97d7a5106741aca6d65fed3e13 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Fri, 25 Jul 2025 01:34:21 +0900 Subject: [PATCH 17/19] =?UTF-8?q?[feat]:=20=EB=A3=A8=ED=8A=B8=EB=A5=BC=20?= =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=ED=83=AD=20=EB=A3=A8=ED=8A=B8=EC=99=80=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/texthip/thip/MainScreen.kt | 10 +++++----- .../com/texthip/thip/ui/navigator/MainNavHost.kt | 4 ++-- .../com/texthip/thip/ui/navigator/data/BarItem.kt | 4 ++-- .../texthip/thip/ui/navigator/data/NavBarItems.kt | 10 +++++----- .../extensions/CommonNavigationExtensions.kt | 6 +++--- .../extensions/FeedNavigationExtensions.kt | 4 ++-- .../extensions/GroupNavigationExtensions.kt | 4 ++-- .../extensions/MyPageNavigationExtensions.kt | 4 ++-- .../extensions/SearchNavigationExtensions.kt | 4 ++-- .../ui/navigator/navigations/FeedNavigation.kt | 4 ++-- .../ui/navigator/navigations/GroupNavigation.kt | 4 ++-- .../ui/navigator/navigations/MyPageNavigation.kt | 4 ++-- .../ui/navigator/navigations/SearchNavigation.kt | 4 ++-- .../com/texthip/thip/ui/navigator/routes/Routes.kt | 14 ++++++++------ 14 files changed, 41 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/MainScreen.kt b/app/src/main/java/com/texthip/thip/MainScreen.kt index 4ff9e101..5c0f4c37 100644 --- a/app/src/main/java/com/texthip/thip/MainScreen.kt +++ b/app/src/main/java/com/texthip/thip/MainScreen.kt @@ -11,13 +11,13 @@ import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import com.texthip.thip.ui.navigator.BottomNavigationBar import com.texthip.thip.ui.navigator.MainNavHost -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes private val MAIN_TAB_ROUTES = setOf( - Routes.Feed, - Routes.Group, - Routes.Search, - Routes.MyPage + MainTabRoutes.Feed, + MainTabRoutes.Group, + MainTabRoutes.Search, + MainTabRoutes.MyPage ) @Composable diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt b/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt index b0697d8b..4fdeae34 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt @@ -3,7 +3,7 @@ package com.texthip.thip.ui.navigator import androidx.compose.runtime.Composable import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes import com.texthip.thip.ui.navigator.navigations.feedNavigation import com.texthip.thip.ui.navigator.navigations.groupNavigation import com.texthip.thip.ui.navigator.navigations.myPageNavigation @@ -12,7 +12,7 @@ import com.texthip.thip.ui.navigator.navigations.searchNavigation // 메인 네비게이션 @Composable fun MainNavHost(navController: NavHostController) { - NavHost(navController = navController, startDestination = Routes.Feed) { + NavHost(navController = navController, startDestination = MainTabRoutes.Feed) { feedNavigation(navController) groupNavigation(navController) searchNavigation(navController) diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt b/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt index 5c5daa57..64b38d78 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/data/BarItem.kt @@ -2,11 +2,11 @@ package com.texthip.thip.ui.navigator.data import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes data class BarItem( @StringRes val titleRes: Int, - val route: Routes, + val route: MainTabRoutes, @DrawableRes val iconRes: Int, @DrawableRes val selectedIconRes: Int ) diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt b/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt index 8a23c972..004421da 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/data/NavBarItems.kt @@ -1,31 +1,31 @@ package com.texthip.thip.ui.navigator.data import com.texthip.thip.R -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes object NavBarItems { val BarItems = listOf( BarItem( titleRes = R.string.nav_feed, - route = Routes.Feed, + route = MainTabRoutes.Feed, iconRes = R.drawable.ic_feed, selectedIconRes = R.drawable.ic_feed_selected ), BarItem( titleRes = R.string.nav_group, - route = Routes.Group, + route = MainTabRoutes.Group, iconRes = R.drawable.ic_group, selectedIconRes = R.drawable.ic_group_selected ), BarItem( titleRes = R.string.nav_search, - route = Routes.Search, + route = MainTabRoutes.Search, iconRes = R.drawable.ic_booksearch, selectedIconRes = R.drawable.ic_booksearch_selected ), BarItem( titleRes = R.string.nav_mypage, - route = Routes.MyPage, + route = MainTabRoutes.MyPage, iconRes = R.drawable.ic_mypage, selectedIconRes = R.drawable.ic_mypage_selected ) diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt index d13b1fda..03147069 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt @@ -1,7 +1,7 @@ package com.texthip.thip.ui.navigator.extensions import androidx.navigation.NavHostController -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes // 공통 네비게이션 확장 함수들 @@ -11,8 +11,8 @@ fun NavHostController.navigateBack() { popBackStack() } -// Bottom Navigation용 Tab 이동 -fun NavHostController.navigateToTab(route: Routes) { +// Bottom Navigation용 Tab 이동 (메인 탭에만 사용) +fun NavHostController.navigateToTab(route: MainTabRoutes) { navigate(route) { popUpTo(graph.startDestinationId) { saveState = true diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt index 330e5934..ebc035cc 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/FeedNavigationExtensions.kt @@ -1,9 +1,9 @@ package com.texthip.thip.ui.navigator.extensions import androidx.navigation.NavHostController -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes // Feed 확장 함수 fun NavHostController.navigateToFeed() { - navigate(Routes.Feed) + navigate(MainTabRoutes.Feed) } diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt index dc26e91a..0e1aaa75 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/GroupNavigationExtensions.kt @@ -1,14 +1,14 @@ package com.texthip.thip.ui.navigator.extensions import androidx.navigation.NavHostController -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes import com.texthip.thip.ui.navigator.routes.GroupRoutes // Group 관련 네비게이션 확장 함수들 fun NavHostController.navigateToGroup() { - navigate(Routes.Group) + navigate(MainTabRoutes.Group) } fun NavHostController.navigateToGroupMakeRoom() { diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt index 0498a6c2..4ca4453a 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/MyPageNavigationExtensions.kt @@ -1,11 +1,11 @@ package com.texthip.thip.ui.navigator.extensions import androidx.navigation.NavHostController -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes // MyPage 관련 네비게이션 확장 함수들 fun NavHostController.navigateToMyPage() { - navigate(Routes.MyPage) + navigate(MainTabRoutes.MyPage) } diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt index 297a18ef..aa993a8f 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/SearchNavigationExtensions.kt @@ -1,10 +1,10 @@ package com.texthip.thip.ui.navigator.extensions import androidx.navigation.NavHostController -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes // Search 관련 네비게이션 확장 함수들 fun NavHostController.navigateToSearch() { - navigate(Routes.Search) + navigate(MainTabRoutes.Search) } \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt index 3bc1754c..d6868bbd 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/FeedNavigation.kt @@ -4,11 +4,11 @@ import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.compose.composable import com.texthip.thip.ui.feed.screen.FeedScreen -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes // Feed fun NavGraphBuilder.feedNavigation(navController: NavHostController) { - composable { + composable { FeedScreen(navController) } } \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt index 1181627f..711840ff 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/GroupNavigation.kt @@ -7,7 +7,7 @@ import androidx.navigation.compose.composable import com.texthip.thip.ui.group.makeroom.screen.GroupMakeRoomScreen import com.texthip.thip.ui.group.makeroom.viewmodel.GroupMakeRoomViewModel import com.texthip.thip.ui.group.screen.GroupScreen -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes import com.texthip.thip.ui.navigator.routes.GroupRoutes import com.texthip.thip.ui.navigator.extensions.navigateBack import com.texthip.thip.ui.navigator.extensions.navigateToGroupMakeRoom @@ -15,7 +15,7 @@ import com.texthip.thip.ui.navigator.extensions.navigateToGroupMakeRoom // Group fun NavGraphBuilder.groupNavigation(navController: NavHostController) { // 메인 Group 화면 - composable { + composable { GroupScreen( onNavigateToMakeRoom = { navController.navigateToGroupMakeRoom() diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt index 21c9ee85..92883f8f 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt @@ -4,11 +4,11 @@ import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.compose.composable import com.texthip.thip.ui.mypage.screen.MyPageScreen -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes // MyPage fun NavGraphBuilder.myPageNavigation(navController: NavHostController) { - composable { + composable { MyPageScreen( navController, nickname = "ThipUser01", diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt index d134c4e6..26558e63 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/navigations/SearchNavigation.kt @@ -3,11 +3,11 @@ package com.texthip.thip.ui.navigator.navigations import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.compose.composable -import com.texthip.thip.ui.navigator.routes.Routes +import com.texthip.thip.ui.navigator.routes.MainTabRoutes import com.texthip.thip.ui.search.screen.SearchBookScreen fun NavGraphBuilder.searchNavigation(navController: NavHostController) { - composable { + composable { SearchBookScreen(navController = navController) } } \ No newline at end of file diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/routes/Routes.kt b/app/src/main/java/com/texthip/thip/ui/navigator/routes/Routes.kt index 262f60f9..8f503427 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/routes/Routes.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/routes/Routes.kt @@ -3,17 +3,19 @@ package com.texthip.thip.ui.navigator.routes import kotlinx.serialization.Serializable @Serializable -sealed class Routes { - // 메인 탭 Routes +sealed class Routes + +@Serializable +sealed class MainTabRoutes : Routes() { @Serializable - data object Feed : Routes() + data object Feed : MainTabRoutes() @Serializable - data object Group : Routes() + data object Group : MainTabRoutes() @Serializable - data object Search : Routes() + data object Search : MainTabRoutes() @Serializable - data object MyPage : Routes() + data object MyPage : MainTabRoutes() } From dd1581816a3288503d470728bb9d57fb28f87123 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Fri, 25 Jul 2025 01:36:40 +0900 Subject: [PATCH 18/19] =?UTF-8?q?[feat]:=20=EB=A9=94=EC=9D=B8=20=ED=83=AD?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=20=EB=A7=A4=EC=B9=AD=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/texthip/thip/MainScreen.kt | 13 ++----------- .../thip/ui/navigator/BottomNavigationBar.kt | 3 ++- .../extensions/CommonNavigationExtensions.kt | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/MainScreen.kt b/app/src/main/java/com/texthip/thip/MainScreen.kt index 5c0f4c37..d606b1f9 100644 --- a/app/src/main/java/com/texthip/thip/MainScreen.kt +++ b/app/src/main/java/com/texthip/thip/MainScreen.kt @@ -11,14 +11,7 @@ import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import com.texthip.thip.ui.navigator.BottomNavigationBar import com.texthip.thip.ui.navigator.MainNavHost -import com.texthip.thip.ui.navigator.routes.MainTabRoutes - -private val MAIN_TAB_ROUTES = setOf( - MainTabRoutes.Feed, - MainTabRoutes.Group, - MainTabRoutes.Search, - MainTabRoutes.MyPage -) +import com.texthip.thip.ui.navigator.extensions.isMainTabRoute @Composable fun MainScreen() { @@ -26,9 +19,7 @@ fun MainScreen() { val navBackStackEntry by navController.currentBackStackEntryAsState() val currentDestination = navBackStackEntry?.destination - val showBottomBar = currentDestination?.route?.let { route -> - MAIN_TAB_ROUTES.any { it::class.qualifiedName == route } - } ?: true + val showBottomBar = currentDestination?.isMainTabRoute() ?: true Scaffold( bottomBar = { diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt b/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt index e31a8cc0..3e25db24 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/BottomNavigationBar.kt @@ -28,6 +28,7 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.currentBackStackEntryAsState import com.texthip.thip.ui.navigator.data.NavBarItems import com.texthip.thip.ui.navigator.extensions.navigateToTab +import com.texthip.thip.ui.navigator.extensions.isRoute import com.texthip.thip.ui.theme.ThipTheme.colors import com.texthip.thip.ui.theme.ThipTheme.typography @@ -98,7 +99,7 @@ fun BottomNavigationBar(navController: NavHostController) { verticalAlignment = Alignment.CenterVertically ) { NavBarItems.BarItems.forEach { item -> - val isSelected = currentDestination?.route == item.route::class.qualifiedName + val isSelected = currentDestination?.isRoute(item.route) == true NavigationBarItem( icon = { Icon( diff --git a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt index 03147069..61ff596b 100644 --- a/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt +++ b/app/src/main/java/com/texthip/thip/ui/navigator/extensions/CommonNavigationExtensions.kt @@ -1,5 +1,6 @@ package com.texthip.thip.ui.navigator.extensions +import androidx.navigation.NavDestination import androidx.navigation.NavHostController import com.texthip.thip.ui.navigator.routes.MainTabRoutes @@ -20,4 +21,19 @@ fun NavHostController.navigateToTab(route: MainTabRoutes) { launchSingleTop = true restoreState = true } +} + +// 라우트 매칭 헬퍼 함수들 +fun NavDestination.isMainTabRoute(): Boolean { + return when (route) { + MainTabRoutes.Feed::class.qualifiedName, + MainTabRoutes.Group::class.qualifiedName, + MainTabRoutes.Search::class.qualifiedName, + MainTabRoutes.MyPage::class.qualifiedName -> true + else -> false + } +} + +fun NavDestination.isRoute(targetRoute: MainTabRoutes): Boolean { + return route == targetRoute::class.qualifiedName } \ No newline at end of file From 14d5b7ba88162a4bb95cb15de8307b718a03f5d0 Mon Sep 17 00:00:00 2001 From: rbqks529 Date: Fri, 25 Jul 2025 14:00:53 +0900 Subject: [PATCH 19/19] =?UTF-8?q?[ui]:=20=EC=95=8C=EB=A6=BC=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20QA=20=EC=A7=84=ED=96=89=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thip/ui/common/alarmpage/screen/AlarmScreen.kt | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/common/alarmpage/screen/AlarmScreen.kt b/app/src/main/java/com/texthip/thip/ui/common/alarmpage/screen/AlarmScreen.kt index cefec058..44f4e486 100644 --- a/app/src/main/java/com/texthip/thip/ui/common/alarmpage/screen/AlarmScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/common/alarmpage/screen/AlarmScreen.kt @@ -72,16 +72,10 @@ fun AlarmScreen( verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { - Icon( - painter = painterResource(R.drawable.ic_notification), - contentDescription = null, - tint = colors.Grey02, - ) - Spacer(modifier = Modifier.height(12.dp)) Text( text = stringResource(R.string.alarm_notification_comment), - style = typography.smalltitle_sb600_s16_h20, - color = colors.Grey01 + style = typography.smalltitle_sb600_s18_h24, + color = colors.White ) } } else {