From c1a683bbddfd4580f69fc5b0c14a900563535c39 Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sat, 18 Jan 2025 22:55:32 +0900 Subject: [PATCH 01/18] =?UTF-8?q?#41=20[chore]=20:=20=EC=B1=84=ED=8C=85?= =?UTF-8?q?=EB=B0=A9=20=EB=B7=B0=20=EC=B4=88=EA=B8=B0=20=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/chat/ChatRoomScreen.kt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt new file mode 100644 index 00000000..1daf8f9c --- /dev/null +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt @@ -0,0 +1,24 @@ +package com.sopt.withsuhyeon.feature.chat + +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.hilt.navigation.compose.hiltViewModel + +@Composable +fun ChatRoomRoute( + padding: PaddingValues +) { + ChatRoomScreen( + padding = padding + ) +} + +@Composable +private fun ChatRoomScreen( + padding: PaddingValues, + modifier: Modifier = Modifier, + viewModel: ChatViewModel = hiltViewModel() +) { + +} \ No newline at end of file From d8b11f4ed4ba3daf85c98aaf4e7a3de2ed4ab677 Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 04:07:31 +0900 Subject: [PATCH 02/18] =?UTF-8?q?#41=20[feat]=20:=20ChatRoom=20=EB=9D=BC?= =?UTF-8?q?=EC=9A=B0=ED=8A=B8,=20=EB=84=A4=EB=B9=84=EA=B2=8C=EC=9D=B4?= =?UTF-8?q?=EC=85=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../withsuhyeon/core/navigation/RouteModel.kt | 2 ++ .../sopt/withsuhyeon/feature/chat/ChatScreen.kt | 9 +++++++-- .../feature/chat/navigation/ChatNavigation.kt | 17 +++++++++++++++-- .../withsuhyeon/feature/main/MainNavigator.kt | 5 +++++ .../feature/main/component/MainNavHost.kt | 1 + 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/navigation/RouteModel.kt b/app/src/main/java/com/sopt/withsuhyeon/core/navigation/RouteModel.kt index bd31eebe..c1a6fb44 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/core/navigation/RouteModel.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/core/navigation/RouteModel.kt @@ -5,6 +5,8 @@ import kotlinx.serialization.Serializable sealed interface Route { @Serializable data object OnBoarding : Route + @Serializable + data object ChatRoom : Route } sealed interface MainTabRoute : Route { diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt index 4641a85d..002c7a04 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt @@ -14,15 +14,20 @@ import androidx.hilt.navigation.compose.hiltViewModel @Composable fun ChatRoute( padding: PaddingValues, + navigateToChatRoom: () -> Unit, viewModel: ChatViewModel = hiltViewModel() ) { ChatScreen( - padding = padding + padding = padding, + onChatRoomListItemClick = { + navigateToChatRoom() + } ) } @Composable private fun ChatScreen( - padding: PaddingValues + padding: PaddingValues, + onChatRoomListItemClick: () -> Unit ) { Column( modifier = Modifier.fillMaxSize() diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/navigation/ChatNavigation.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/navigation/ChatNavigation.kt index 1db9ba74..e0ad6e44 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/navigation/ChatNavigation.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/navigation/ChatNavigation.kt @@ -6,16 +6,29 @@ import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable import com.sopt.withsuhyeon.core.navigation.MainTabRoute +import com.sopt.withsuhyeon.core.navigation.Route +import com.sopt.withsuhyeon.feature.chat.ChatRoomRoute import com.sopt.withsuhyeon.feature.chat.ChatRoute fun NavController.navigateToChat(navOptions: NavOptions) { navigate(MainTabRoute.Chat, navOptions) } +fun NavController.navigateToChatRoom() { + navigate(Route.ChatRoom) +} + fun NavGraphBuilder.chatNavGraph( - padding: PaddingValues + padding: PaddingValues, + onNavigateToChatRoom: () -> Unit ) { composable { - ChatRoute(padding) + ChatRoute( + padding = padding, + navigateToChatRoom = onNavigateToChatRoom + ) + } + composable { + ChatRoomRoute(padding) } } \ No newline at end of file diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt index 5daca390..62b650ff 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt @@ -12,6 +12,7 @@ import androidx.navigation.compose.rememberNavController import androidx.navigation.navOptions import com.sopt.withsuhyeon.core.navigation.Route import com.sopt.withsuhyeon.feature.chat.navigation.navigateToChat +import com.sopt.withsuhyeon.feature.chat.navigation.navigateToChatRoom import com.sopt.withsuhyeon.feature.findsuhyeon.navigation.navigateToFindSuhyeon import com.sopt.withsuhyeon.feature.gallery.navigation.navigateToGallery import com.sopt.withsuhyeon.feature.home.navigation.navigateToHome @@ -65,6 +66,10 @@ class MainNavigator( ) } + fun navigateToChatRoom() { + navController.navigateToChatRoom() + } + private fun popBackStack() { navController.popBackStack() } diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/main/component/MainNavHost.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/main/component/MainNavHost.kt index 15753a82..e0541d3f 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/main/component/MainNavHost.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/main/component/MainNavHost.kt @@ -43,6 +43,7 @@ fun MainNavHost( ) chatNavGraph( padding = padding, + onNavigateToChatRoom = navigator::navigateToChatRoom ) myPageNavGraph( padding = padding, From d636a24ec0eef8acbe9c7180486816ac8be01426 Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 04:07:47 +0900 Subject: [PATCH 03/18] =?UTF-8?q?#41=20[feat]=20:=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EB=AC=BC=20=EB=B3=B4=EA=B8=B0=20=EB=B2=84=ED=8A=BC=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/button/NavigateToPostButton.kt | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 app/src/main/java/com/sopt/withsuhyeon/core/component/button/NavigateToPostButton.kt diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/component/button/NavigateToPostButton.kt b/app/src/main/java/com/sopt/withsuhyeon/core/component/button/NavigateToPostButton.kt new file mode 100644 index 00000000..d56c1d5f --- /dev/null +++ b/app/src/main/java/com/sopt/withsuhyeon/core/component/button/NavigateToPostButton.kt @@ -0,0 +1,42 @@ +package com.sopt.withsuhyeon.core.component.button + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import com.sopt.withsuhyeon.core.util.modifier.noRippleClickable +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.colors +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.typography + +@Composable +fun NavigateToPostButton( + modifier: Modifier = Modifier, + onClick: () -> Unit +) { + Box( + modifier = modifier + .width(76.dp) + .background( + color = colors.Purple50, + shape = RoundedCornerShape(size = 8.dp) + ) + .padding(vertical = 9.dp) + .noRippleClickable(onClick), + contentAlignment = Alignment.Center + ) + { + Text( + text = "게시물 보기", + color = colors.Purple500, + textAlign = TextAlign.Center, + style = typography.caption01_B + ) + } +} \ No newline at end of file From a5f80128579e9e4ecb71b47aac4d932093c2fbf2 Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 04:08:04 +0900 Subject: [PATCH 04/18] =?UTF-8?q?#41=20[feat]=20:=20=EC=B1=84=ED=8C=85?= =?UTF-8?q?=EB=B0=A9=20=EC=83=81=EB=8B=A8=20=EA=B2=8C=EC=8B=9C=EB=AC=BC=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/card/ChatRoomInfoCardItem.kt | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 app/src/main/java/com/sopt/withsuhyeon/core/component/card/ChatRoomInfoCardItem.kt diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/component/card/ChatRoomInfoCardItem.kt b/app/src/main/java/com/sopt/withsuhyeon/core/component/card/ChatRoomInfoCardItem.kt new file mode 100644 index 00000000..fd501752 --- /dev/null +++ b/app/src/main/java/com/sopt/withsuhyeon/core/component/card/ChatRoomInfoCardItem.kt @@ -0,0 +1,76 @@ +package com.sopt.withsuhyeon.core.component.card + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.sopt.withsuhyeon.core.component.button.NavigateToPostButton +import com.sopt.withsuhyeon.core.util.price.toDecimalFormat +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.colors +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.typography + +@Composable +fun ChatRoomInfoCardItem( + region: String, + postTitle: String, + price: Int, + modifier: Modifier = Modifier +) { + Column( + modifier = modifier + .fillMaxWidth() + .background(colors.White) + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Column( + verticalArrangement = Arrangement.spacedBy(4.dp), + modifier = Modifier.weight(1f) + ) { + Text( + text = region, + style = typography.caption01_B, + color = colors.Grey400 + ) + Text( + text = postTitle, + style = typography.body03_B, + color = colors.Grey950 + ) + Text( + text = "${price.toDecimalFormat()}원", + style = typography.body03_B, + color = colors.Grey950 + ) + } + NavigateToPostButton {} + } + HorizontalDivider( + thickness = 1.dp, + color = colors.Grey100 + ) + } +} + +@Preview +@Composable +private fun ChatRoomInfoCardItemPreview() { + WithSuhyeonTheme { + ChatRoomInfoCardItem("강남/역삼/삼성", "강남역에서 수현이 되어주실 분!", 20000) + } +} \ No newline at end of file From d4830d10d5fbdc1df15b21ee4f7660f6f6c75b7a Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 04:08:14 +0900 Subject: [PATCH 05/18] =?UTF-8?q?#41=20[add]=20:=20adjustResize=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f2721041..b85de696 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,6 +11,7 @@ android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" + android:windowSoftInputMode="adjustResize" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.WithSuhyeon" From 702a30e5c78139c4d7c8f75d02a98919a58e196a Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 04:08:50 +0900 Subject: [PATCH 06/18] =?UTF-8?q?#41=20[feat]=20:=20ChatRoomScreen=20?= =?UTF-8?q?=EC=83=81=EB=8B=A8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/chat/ChatRoomScreen.kt | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt index 1daf8f9c..73ab7bdd 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt @@ -1,9 +1,20 @@ package com.sopt.withsuhyeon.feature.chat +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview import androidx.hilt.navigation.compose.hiltViewModel +import com.sopt.withsuhyeon.R +import com.sopt.withsuhyeon.core.component.card.ChatRoomInfoCardItem +import com.sopt.withsuhyeon.core.component.topbar.SubTopNavBar +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.colors @Composable fun ChatRoomRoute( @@ -20,5 +31,33 @@ private fun ChatRoomScreen( modifier: Modifier = Modifier, viewModel: ChatViewModel = hiltViewModel() ) { + Column( + modifier = modifier + .fillMaxSize() + .padding(padding) + .background(colors.White) + ) { + SubTopNavBar( + text = "작심이", + btnIcon = painterResource(R.drawable.ic_close), + isTextVisible = true, + isBtnVisible = false, + onCloseBtnClicked = {} + ) + ChatRoomInfoCardItem( + region = "강남/역삼/삼성", + postTitle = "강남역에서 수현이 되어주실 분!", + price = 20000 + ) + } +} +@Preview +@Composable +private fun ChatRoomScreenPreview() { + WithSuhyeonTheme { + ChatRoomScreen( + padding = PaddingValues() + ) + } } \ No newline at end of file From 41bb086298e58aaab4aa4b19d84fb14dacbecfde Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 04:12:35 +0900 Subject: [PATCH 07/18] =?UTF-8?q?#41=20[fix]=20:=20ChatScreen=20=EC=B6=A9?= =?UTF-8?q?=EB=8F=8C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt index 33c6d26c..2f1acd66 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt @@ -37,8 +37,7 @@ fun ChatRoute( @Composable private fun ChatScreen( padding: PaddingValues, - onChatRoomListItemClick: () -> Unit - padding: PaddingValues, + onChatRoomListItemClick: () -> Unit, viewModel: ChatViewModel = hiltViewModel() ) { val sampleChatRooms by viewModel.chatRooms.collectAsState() From 220d055bcc724f46020b925332f4de53629fdc67 Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 07:49:53 +0900 Subject: [PATCH 08/18] =?UTF-8?q?#41=20[feat]=20:=20ChatBubble=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EB=B6=84=EA=B8=B0=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=ED=95=98=EC=97=AC=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/component/chat/ChatBubble.kt | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatBubble.kt diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatBubble.kt b/app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatBubble.kt new file mode 100644 index 00000000..3ac8e387 --- /dev/null +++ b/app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatBubble.kt @@ -0,0 +1,106 @@ +package com.sopt.withsuhyeon.core.component.chat + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.colors +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.typography + +@Composable +fun ChatBubble( + message: String, + time: String, + isSentByUser: Boolean, + modifier: Modifier = Modifier +) { + Row( + modifier = modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 8.dp), + verticalAlignment = Alignment.Bottom, + horizontalArrangement = if (isSentByUser) Arrangement.End else Arrangement.Start + ) { + if (!isSentByUser) { + Box( + modifier = Modifier + .size(36.dp) + .background(colors.Grey200, shape = CircleShape) + ) + Spacer(modifier = Modifier.width(8.dp)) + } + + if (!isSentByUser) { + Box( + modifier = Modifier + .background( + color = colors.Grey50, + shape = RoundedCornerShape(16.dp) + ) + .padding(horizontal = 12.dp, vertical = 8.dp) + .widthIn(max = 230.dp) + ) { + Text( + text = message, + style = typography.body03_R, + color = colors.Black, + modifier = modifier.align(Alignment.BottomStart) + ) + } + + Text( + text = time, + style = typography.caption02_R, + color = colors.Grey400, + modifier = Modifier.padding(start = 6.dp) + ) + } else { + Text( + text = time, + style = typography.caption02_R, + color = colors.Grey400, + modifier = Modifier.padding(end = 6.dp) + ) + + Box( + modifier = Modifier + .background( + color = colors.Purple400, + shape = RoundedCornerShape(16.dp) + ) + .padding(horizontal = 12.dp, vertical = 8.dp) + .widthIn(max = 260.dp) + ) { + Text( + text = message, + style = typography.body03_R, + color = colors.White + ) + } + } + } +} + +@Preview +@Composable +private fun ChatBubblePreview() { + WithSuhyeonTheme { + ChatBubble("안녕안녕", "오후 04:01", false) + ChatBubble("안녕안녕", "오후 04:01", true) + } +} \ No newline at end of file From 919f54658b09cd2016c3f6cbc4f6e60ba8d76818 Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 07:50:29 +0900 Subject: [PATCH 09/18] =?UTF-8?q?#41=20[feat]=20:=20=EC=A0=84=EC=B2=B4=20?= =?UTF-8?q?=EC=B1=84=ED=8C=85=EB=B0=A9=20->=20=EC=B1=84=ED=8C=85=EB=B0=A9?= =?UTF-8?q?=20=EB=84=A4=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=20=EC=97=B0?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/component/list/TotalChatRoomList.kt | 4 +++- .../core/component/listitem/ChatRoomListItem.kt | 13 +++---------- .../com/sopt/withsuhyeon/feature/chat/ChatScreen.kt | 5 ++++- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/component/list/TotalChatRoomList.kt b/app/src/main/java/com/sopt/withsuhyeon/core/component/list/TotalChatRoomList.kt index 9a2d5931..b752c223 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/core/component/list/TotalChatRoomList.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/core/component/list/TotalChatRoomList.kt @@ -11,6 +11,7 @@ import com.sopt.withsuhyeon.domain.entity.ChatRoomModel @Composable fun TotalChatRoomList( chatRooms: List, + onChatRoomListItemClick: () -> Unit, modifier: Modifier = Modifier ) { LazyColumn( @@ -22,7 +23,8 @@ fun TotalChatRoomList( partnerName = chatRoom.partnerName, recentChat = chatRoom.recentChat, recentChatDateTime = chatRoom.recentChatDateTime, - unreadChatCount = chatRoom.unreadChatCount + unreadChatCount = chatRoom.unreadChatCount, + onChatRoomListItemClick = onChatRoomListItemClick ) } } diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/component/listitem/ChatRoomListItem.kt b/app/src/main/java/com/sopt/withsuhyeon/core/component/listitem/ChatRoomListItem.kt index b8a3762a..8eada68c 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/core/component/listitem/ChatRoomListItem.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/core/component/listitem/ChatRoomListItem.kt @@ -19,13 +19,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import com.sopt.withsuhyeon.R import com.sopt.withsuhyeon.core.component.chip.SmallChip import com.sopt.withsuhyeon.core.type.SmallChipType -import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme +import com.sopt.withsuhyeon.core.util.modifier.noRippleClickable import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.colors import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.typography @@ -36,12 +35,14 @@ fun ChatRoomListItem( recentChat: String, recentChatDateTime: String, unreadChatCount: String, + onChatRoomListItemClick: () -> Unit, modifier: Modifier = Modifier ) { Column( modifier = Modifier .fillMaxWidth() .background(colors.White) + .noRippleClickable { onChatRoomListItemClick() } ) { Row( modifier = Modifier @@ -103,12 +104,4 @@ fun ChatRoomListItem( color = colors.Grey100 ) } -} - -@Preview (showBackground = true) -@Composable -private fun ChatRoomListItemPreview() { - WithSuhyeonTheme { - ChatRoomListItem("https://via.placeholder.com/150", "작심이", "나는야 작심이 작심이 작심이 작심이 작심이 작심이", "1월 1일", "+99") - } } \ No newline at end of file diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt index 2f1acd66..c72c392e 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatScreen.kt @@ -58,7 +58,10 @@ private fun ChatScreen( .fillMaxWidth() .fillMaxHeight() ) { - TotalChatRoomList(chatRooms = sampleChatRooms) + TotalChatRoomList( + chatRooms = sampleChatRooms, + onChatRoomListItemClick = onChatRoomListItemClick + ) } } } \ No newline at end of file From 13320bcb042f6282c6cc7786d51fdb1e1ee09c1b Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 07:50:48 +0900 Subject: [PATCH 10/18] =?UTF-8?q?#41=20[add]=20:=20=EC=B1=84=ED=8C=85=20?= =?UTF-8?q?=EC=A0=84=EC=86=A1=20drawable=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/drawable/ic_btn_send.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 app/src/main/res/drawable/ic_btn_send.xml diff --git a/app/src/main/res/drawable/ic_btn_send.xml b/app/src/main/res/drawable/ic_btn_send.xml new file mode 100644 index 00000000..6dee818c --- /dev/null +++ b/app/src/main/res/drawable/ic_btn_send.xml @@ -0,0 +1,12 @@ + + + + From dd7f261d5c6f2b73f8acd4f1261199a155719024 Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 07:51:11 +0900 Subject: [PATCH 11/18] =?UTF-8?q?#41=20[feat]=20:=20=EC=B1=84=ED=8C=85=20?= =?UTF-8?q?=EC=A0=84=EC=86=A1=EB=9E=80=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../textfield/ChatRoomTextFieldRow.kt | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt b/app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt new file mode 100644 index 00000000..76309010 --- /dev/null +++ b/app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt @@ -0,0 +1,90 @@ +package com.sopt.withsuhyeon.core.component.textfield + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.sopt.withsuhyeon.R +import com.sopt.withsuhyeon.core.util.modifier.noRippleClickable +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.colors +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.typography + +@Composable +fun ChatRoomTextFieldRow( + text: String, + onTextChange: (String) -> Unit, + onSendClick: () -> Unit, + modifier: Modifier = Modifier +) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 8.dp) + .background(colors.White), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + TextField( + value = text, + onValueChange = onTextChange, + placeholder = { + Text( + text = stringResource(R.string.chatroom_textfield_hint), + style = typography.body03_R, + color = colors.Grey400 + ) + }, + colors = TextFieldDefaults.colors( + focusedContainerColor = Color.Transparent, + unfocusedContainerColor = Color.Transparent, + focusedIndicatorColor = Color.Transparent, + unfocusedIndicatorColor = Color.Transparent, + focusedTextColor = colors.Grey900, + unfocusedTextColor = colors.Grey900 + ), + modifier = Modifier + .weight(1f) + .heightIn(min = 40.dp) + .background( + color = colors.Grey50, + shape = RoundedCornerShape(24.dp) + ), + maxLines = 5, + textStyle = typography.body03_SB + ) + + Box( + modifier = Modifier + .size(40.dp) + .background( + color = colors.Grey50, + shape = RoundedCornerShape(20.dp) + ) + .padding(4.dp) + .noRippleClickable(onClick = onSendClick), + contentAlignment = Alignment.Center + ) { + Icon( + painter = painterResource(R.drawable.ic_btn_send), + contentDescription = "Send", + tint = colors.Grey300 + ) + } + } +} \ No newline at end of file From 1145f849dbf63875234c4d35a627c73a51c83050 Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 07:53:17 +0900 Subject: [PATCH 12/18] =?UTF-8?q?#41=20[feat]=20:=20ChatRoomScreen=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84,=20ChatBubble=20=EC=8B=9C=EA=B0=84=20?= =?UTF-8?q?=ED=98=84=EC=9E=AC=EC=8B=9C=EA=B0=84=20=EB=B0=9B=EC=95=84?= =?UTF-8?q?=EC=98=A4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/chat/ChatRoomScreen.kt | 121 +++++++++++++++--- 1 file changed, 105 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt index 73ab7bdd..52243c62 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt @@ -1,20 +1,37 @@ package com.sopt.withsuhyeon.feature.chat import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues +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.imePadding import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateListOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment 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.hilt.navigation.compose.hiltViewModel import com.sopt.withsuhyeon.R import com.sopt.withsuhyeon.core.component.card.ChatRoomInfoCardItem +import com.sopt.withsuhyeon.core.component.chat.ChatBubble +import com.sopt.withsuhyeon.core.component.textfield.ChatRoomTextFieldRow import com.sopt.withsuhyeon.core.component.topbar.SubTopNavBar import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.colors +import java.time.LocalTime +import java.time.format.DateTimeFormatter +import java.util.Locale @Composable fun ChatRoomRoute( @@ -31,24 +48,78 @@ private fun ChatRoomScreen( modifier: Modifier = Modifier, viewModel: ChatViewModel = hiltViewModel() ) { - Column( + val messages = remember { mutableStateListOf>() } + val (inputText, setInputText) = remember { mutableStateOf("") } + + fun getCurrentTime(): String { + val now = LocalTime.now() + val formatter = DateTimeFormatter.ofPattern("a hh:mm", Locale("ko", "KR")) + return now.format(formatter).replace("AM", "오전").replace("PM", "오후") + } + + Box( modifier = modifier .fillMaxSize() .padding(padding) .background(colors.White) ) { - SubTopNavBar( - text = "작심이", - btnIcon = painterResource(R.drawable.ic_close), - isTextVisible = true, - isBtnVisible = false, - onCloseBtnClicked = {} - ) - ChatRoomInfoCardItem( - region = "강남/역삼/삼성", - postTitle = "강남역에서 수현이 되어주실 분!", - price = 20000 - ) + Column( + modifier = modifier + .fillMaxWidth() + .background(colors.White) + .align(Alignment.TopStart) + ) { + SubTopNavBar( + text = "작심이", + btnIcon = painterResource(R.drawable.ic_close), + isTextVisible = true, + isBtnVisible = false, + onCloseBtnClicked = {} + ) + ChatRoomInfoCardItem( + region = "강남/역삼/삼성", + postTitle = "강남역에서 수현이 되어주실 분!", + price = 20000 + ) + } + + Column( + modifier = Modifier + .fillMaxSize() + .padding(top = 142.dp, bottom = 58.dp) + .background(colors.White) + .verticalScroll(rememberScrollState()) + .align(Alignment.TopStart) + ) { + messages.forEach { (message, isSentByUser, time) -> + ChatBubble( + message = message, + time = time, + isSentByUser = isSentByUser + ) + } + } + + Spacer(modifier = Modifier.height(16.dp)) + + Box( + modifier = Modifier + .fillMaxWidth() + .align(Alignment.BottomCenter) + ) { + ChatRoomTextFieldRow( + text = inputText, + onTextChange = setInputText, + onSendClick = { + if (inputText.isNotBlank()) { + val currentTime = getCurrentTime() + messages.add(Triple(inputText, true, currentTime)) + setInputText("") + } + }, + modifier = Modifier.fillMaxWidth().imePadding() + ) + } } } @@ -56,8 +127,26 @@ private fun ChatRoomScreen( @Composable private fun ChatRoomScreenPreview() { WithSuhyeonTheme { - ChatRoomScreen( - padding = PaddingValues() - ) + Column( + modifier = Modifier + .fillMaxSize() + .background(colors.White) + ) { + ChatBubble( + message = "지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요", + time = "오후 04:01", + isSentByUser = false + ) + ChatBubble( + message = "시러요", + time = "오후 04:01", + isSentByUser = true + ) + ChatBubble( + message = "히히", + time = "오후 08:40", + isSentByUser = false + ) + } } } \ No newline at end of file From f6108a4e81a143b8f6ca4cbe9e7fb9f77aaec052 Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Sun, 19 Jan 2025 15:58:07 +0900 Subject: [PATCH 13/18] =?UTF-8?q?#41=20[chore]=20:=20=EB=AA=85=EC=84=B8?= =?UTF-8?q?=EC=84=9C=20=EB=94=B0=EB=9D=BC=20owner=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/withsuhyeon/core/component/chat/ChatBubble.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatBubble.kt b/app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatBubble.kt index 3ac8e387..22478201 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatBubble.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatBubble.kt @@ -26,7 +26,7 @@ import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.typography fun ChatBubble( message: String, time: String, - isSentByUser: Boolean, + isSentByOwner: Boolean, modifier: Modifier = Modifier ) { Row( @@ -34,9 +34,9 @@ fun ChatBubble( .fillMaxWidth() .padding(horizontal = 16.dp, vertical = 8.dp), verticalAlignment = Alignment.Bottom, - horizontalArrangement = if (isSentByUser) Arrangement.End else Arrangement.Start + horizontalArrangement = if (isSentByOwner) Arrangement.End else Arrangement.Start ) { - if (!isSentByUser) { + if (!isSentByOwner) { Box( modifier = Modifier .size(36.dp) @@ -45,7 +45,7 @@ fun ChatBubble( Spacer(modifier = Modifier.width(8.dp)) } - if (!isSentByUser) { + if (!isSentByOwner) { Box( modifier = Modifier .background( From 076d0ec374abdfece56cf43fc5582d2cd84d3caf Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Mon, 20 Jan 2025 00:33:54 +0900 Subject: [PATCH 14/18] =?UTF-8?q?#41=20[feat]=20:=20=EC=B1=84=ED=8C=85?= =?UTF-8?q?=EB=B0=A9=20=EB=B7=B0=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/button/NavigateToPostButton.kt | 4 +- .../component/chat/ChatRoomDateInfoItem.kt | 43 +++++++++++++++ .../textfield/ChatRoomTextFieldRow.kt | 17 +++--- .../feature/chat/ChatRoomScreen.kt | 52 +++++++++---------- .../withsuhyeon/feature/home/HomeScreen.kt | 3 ++ .../withsuhyeon/feature/main/MainScreen.kt | 7 ++- app/src/main/res/drawable/ic_send.xml | 9 ++++ app/src/main/res/values/strings.xml | 3 ++ 8 files changed, 100 insertions(+), 38 deletions(-) create mode 100644 app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatRoomDateInfoItem.kt create mode 100644 app/src/main/res/drawable/ic_send.xml diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/component/button/NavigateToPostButton.kt b/app/src/main/java/com/sopt/withsuhyeon/core/component/button/NavigateToPostButton.kt index d56c1d5f..2d06bcc4 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/core/component/button/NavigateToPostButton.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/core/component/button/NavigateToPostButton.kt @@ -9,8 +9,10 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import com.sopt.withsuhyeon.R import com.sopt.withsuhyeon.core.util.modifier.noRippleClickable import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.colors import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.typography @@ -33,7 +35,7 @@ fun NavigateToPostButton( ) { Text( - text = "게시물 보기", + text = stringResource(R.string.navigate_to_post_button_title), color = colors.Purple500, textAlign = TextAlign.Center, style = typography.caption01_B diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatRoomDateInfoItem.kt b/app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatRoomDateInfoItem.kt new file mode 100644 index 00000000..c1e39b79 --- /dev/null +++ b/app/src/main/java/com/sopt/withsuhyeon/core/component/chat/ChatRoomDateInfoItem.kt @@ -0,0 +1,43 @@ +package com.sopt.withsuhyeon.core.component.chat + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.colors +import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.typography + +@Composable +fun ChatRoomDateInfoItem( + date: String, + modifier: Modifier = Modifier +) { + Row( + modifier = modifier + .fillMaxWidth() + .background(colors.White) + .padding(vertical = 16.dp), + horizontalArrangement = Arrangement.Center + ) { + Text( + text = date, + style = typography.caption01_SB, + color = colors.Grey500 + ) + } +} + +@Preview +@Composable +private fun Preview() { + WithSuhyeonTheme { + ChatRoomDateInfoItem("2025년 1월 2일") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt b/app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt index 76309010..5d2fb7a8 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt @@ -32,11 +32,13 @@ fun ChatRoomTextFieldRow( onSendClick: () -> Unit, modifier: Modifier = Modifier ) { + val isMessageTextFieldNotEmpty = text.isNotBlank() + Row( - modifier = Modifier + modifier = modifier .fillMaxWidth() - .padding(horizontal = 16.dp, vertical = 8.dp) - .background(colors.White), + .background(colors.White) + .padding(horizontal = 16.dp, vertical = 8.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp) ) { @@ -73,17 +75,16 @@ fun ChatRoomTextFieldRow( modifier = Modifier .size(40.dp) .background( - color = colors.Grey50, + color = if (isMessageTextFieldNotEmpty) colors.Purple50 else colors.Grey50, shape = RoundedCornerShape(20.dp) ) - .padding(4.dp) .noRippleClickable(onClick = onSendClick), contentAlignment = Alignment.Center ) { Icon( - painter = painterResource(R.drawable.ic_btn_send), - contentDescription = "Send", - tint = colors.Grey300 + painter = painterResource(R.drawable.ic_send), + contentDescription = stringResource(R.string.message_textfield_send_button_description), + tint = if (isMessageTextFieldNotEmpty) colors.Purple500 else colors.Grey300 ) } } diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt index 52243c62..aa2a9305 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt @@ -16,7 +16,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview @@ -57,17 +56,16 @@ private fun ChatRoomScreen( return now.format(formatter).replace("AM", "오전").replace("PM", "오후") } - Box( + Column( modifier = modifier .fillMaxSize() - .padding(padding) .background(colors.White) + .padding(padding) ) { Column( - modifier = modifier - .fillMaxWidth() + modifier = Modifier .background(colors.White) - .align(Alignment.TopStart) + .weight(1f) ) { SubTopNavBar( text = "작심이", @@ -81,31 +79,29 @@ private fun ChatRoomScreen( postTitle = "강남역에서 수현이 되어주실 분!", price = 20000 ) - } - Column( - modifier = Modifier - .fillMaxSize() - .padding(top = 142.dp, bottom = 58.dp) - .background(colors.White) - .verticalScroll(rememberScrollState()) - .align(Alignment.TopStart) - ) { - messages.forEach { (message, isSentByUser, time) -> - ChatBubble( - message = message, - time = time, - isSentByUser = isSentByUser - ) + Column( + modifier = Modifier + .fillMaxWidth() + .weight(1f) + .verticalScroll(rememberScrollState()) + ) { + messages.forEach { (message, isSentByOwner, time) -> + ChatBubble( + message = message, + time = time, + isSentByOwner = isSentByOwner + ) + } + + Spacer(modifier = Modifier.height(16.dp)) } } - Spacer(modifier = Modifier.height(16.dp)) - Box( modifier = Modifier .fillMaxWidth() - .align(Alignment.BottomCenter) + .imePadding() ) { ChatRoomTextFieldRow( text = inputText, @@ -117,7 +113,7 @@ private fun ChatRoomScreen( setInputText("") } }, - modifier = Modifier.fillMaxWidth().imePadding() + modifier = Modifier.fillMaxWidth() ) } } @@ -135,17 +131,17 @@ private fun ChatRoomScreenPreview() { ChatBubble( message = "지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요", time = "오후 04:01", - isSentByUser = false + isSentByOwner = false ) ChatBubble( message = "시러요", time = "오후 04:01", - isSentByUser = true + isSentByOwner = true ) ChatBubble( message = "히히", time = "오후 08:40", - isSentByUser = false + isSentByOwner = false ) } } diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/home/HomeScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/home/HomeScreen.kt index d041a323..153f3caf 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/home/HomeScreen.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/home/HomeScreen.kt @@ -18,6 +18,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import com.sopt.withsuhyeon.core.component.bottomsheet.GalleryCategoryBottomSheet +import com.sopt.withsuhyeon.core.component.picker.DateTimePicker import com.sopt.withsuhyeon.core.util.modifier.noRippleClickable import com.sopt.withsuhyeon.ui.theme.Purple100 @@ -65,6 +66,8 @@ private fun HomeScreen( ) } + DateTimePicker() + if (isBottomSheetVisible) { GalleryCategoryBottomSheet( isVisible = isBottomSheetVisible, diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt index 4b458106..a704f8b6 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt @@ -4,6 +4,9 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.calculateEndPadding import androidx.compose.foundation.layout.calculateStartPadding import androidx.compose.foundation.background +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.isImeVisible import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost @@ -30,12 +33,14 @@ fun MainScreen( ) } +@OptIn(ExperimentalLayoutApi::class) @Composable private fun MainScreenContent( modifier: Modifier = Modifier, navigator: MainNavigator, snackBarHostState: SnackbarHostState, ) { + val imeIsShown = WindowInsets.isImeVisible Scaffold( modifier = modifier, content = { padding -> @@ -44,7 +49,7 @@ private fun MainScreenContent( padding = PaddingValues( start = padding.calculateStartPadding(layoutDirection = LayoutDirection.Ltr), end = padding.calculateEndPadding(layoutDirection = LayoutDirection.Ltr), - bottom = padding.calculateBottomPadding(), + bottom = if(imeIsShown) 0.dp else padding.calculateBottomPadding(), top = 16.dp ) ) diff --git a/app/src/main/res/drawable/ic_send.xml b/app/src/main/res/drawable/ic_send.xml new file mode 100644 index 00000000..3b60f1bb --- /dev/null +++ b/app/src/main/res/drawable/ic_send.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 01fe63d8..45333808 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -97,4 +97,7 @@ 채팅 + 메시지를 입력해주세요 + 게시물 보기 + Send Button \ No newline at end of file From 176fcee32ae5282c61b3da9de7d31acd8f235d60 Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Mon, 20 Jan 2025 18:37:52 +0900 Subject: [PATCH 15/18] =?UTF-8?q?#41=20[fix]=20:=20=EC=B1=84=ED=8C=85?= =?UTF-8?q?=EB=B0=A9=20=EB=B7=B0=20=ED=82=A4=EB=B3=B4=EB=93=9C=20=EC=98=81?= =?UTF-8?q?=EC=97=AD=20=EC=97=90=EB=9F=AC=20......=20=EB=93=9C=EB=94=94?= =?UTF-8?q?=EC=96=B4=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../textfield/ChatRoomTextFieldRow.kt | 5 + .../feature/chat/ChatRoomScreen.kt | 273 +++++++++--------- .../feature/chat/navigation/ChatNavigation.kt | 4 +- .../withsuhyeon/feature/main/MainActivity.kt | 1 + .../withsuhyeon/feature/main/MainNavigator.kt | 4 +- 5 files changed, 154 insertions(+), 133 deletions(-) diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt b/app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt index 5d2fb7a8..64b9acb4 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/core/component/textfield/ChatRoomTextFieldRow.kt @@ -14,8 +14,11 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.material3.TextFieldDefaults import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -33,11 +36,13 @@ fun ChatRoomTextFieldRow( modifier: Modifier = Modifier ) { val isMessageTextFieldNotEmpty = text.isNotBlank() + // val focusRequester = remember { FocusRequester()} Row( modifier = modifier .fillMaxWidth() .background(colors.White) + // .focusRequester(focusRequester) .padding(horizontal = 16.dp, vertical = 8.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp) diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt index aa2a9305..7782da66 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/ChatRoomScreen.kt @@ -1,148 +1,161 @@ -package com.sopt.withsuhyeon.feature.chat + package com.sopt.withsuhyeon.feature.chat -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues -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.imePadding -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll -import androidx.compose.runtime.Composable -import androidx.compose.runtime.mutableStateListOf -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -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.hilt.navigation.compose.hiltViewModel -import com.sopt.withsuhyeon.R -import com.sopt.withsuhyeon.core.component.card.ChatRoomInfoCardItem -import com.sopt.withsuhyeon.core.component.chat.ChatBubble -import com.sopt.withsuhyeon.core.component.textfield.ChatRoomTextFieldRow -import com.sopt.withsuhyeon.core.component.topbar.SubTopNavBar -import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme -import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.colors -import java.time.LocalTime -import java.time.format.DateTimeFormatter -import java.util.Locale + import androidx.compose.foundation.background + import androidx.compose.foundation.layout.Box + import androidx.compose.foundation.layout.Column + import androidx.compose.foundation.layout.PaddingValues + import androidx.compose.foundation.layout.fillMaxSize + import androidx.compose.foundation.layout.fillMaxWidth + import androidx.compose.foundation.layout.imePadding + import androidx.compose.foundation.layout.padding + import androidx.compose.foundation.lazy.LazyColumn + import androidx.compose.foundation.lazy.items + import androidx.compose.foundation.lazy.rememberLazyListState + import androidx.compose.runtime.Composable + import androidx.compose.runtime.LaunchedEffect + import androidx.compose.runtime.mutableStateListOf + import androidx.compose.runtime.mutableStateOf + import androidx.compose.runtime.remember + import androidx.compose.ui.Alignment + import androidx.compose.ui.Modifier + import androidx.compose.ui.res.painterResource + import androidx.compose.ui.tooling.preview.Preview + import androidx.compose.ui.unit.dp + import androidx.hilt.navigation.compose.hiltViewModel + import com.sopt.withsuhyeon.R + import com.sopt.withsuhyeon.core.component.card.ChatRoomInfoCardItem + import com.sopt.withsuhyeon.core.component.chat.ChatBubble + import com.sopt.withsuhyeon.core.component.textfield.ChatRoomTextFieldRow + import com.sopt.withsuhyeon.core.component.topbar.SubTopNavBar + import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme + import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme.colors + import java.time.LocalTime + import java.time.format.DateTimeFormatter + import java.util.Locale -@Composable -fun ChatRoomRoute( - padding: PaddingValues -) { - ChatRoomScreen( - padding = padding - ) -} - -@Composable -private fun ChatRoomScreen( - padding: PaddingValues, - modifier: Modifier = Modifier, - viewModel: ChatViewModel = hiltViewModel() -) { - val messages = remember { mutableStateListOf>() } - val (inputText, setInputText) = remember { mutableStateOf("") } - - fun getCurrentTime(): String { - val now = LocalTime.now() - val formatter = DateTimeFormatter.ofPattern("a hh:mm", Locale("ko", "KR")) - return now.format(formatter).replace("AM", "오전").replace("PM", "오후") + @Composable + fun ChatRoomRoute( + padding: PaddingValues + ) { + ChatRoomScreen( + padding = padding + ) } - Column( - modifier = modifier - .fillMaxSize() - .background(colors.White) - .padding(padding) + @Composable + private fun ChatRoomScreen( + padding: PaddingValues, + modifier: Modifier = Modifier, + viewModel: ChatViewModel = hiltViewModel() ) { - Column( - modifier = Modifier - .background(colors.White) - .weight(1f) - ) { - SubTopNavBar( - text = "작심이", - btnIcon = painterResource(R.drawable.ic_close), - isTextVisible = true, - isBtnVisible = false, - onCloseBtnClicked = {} - ) - ChatRoomInfoCardItem( - region = "강남/역삼/삼성", - postTitle = "강남역에서 수현이 되어주실 분!", - price = 20000 + val messages = remember { + mutableStateListOf( + Triple("안녕하세요", true, "오후 12:00"), + Triple("반갑습니다", false, "오후 12:01"), + Triple("안녕히계세요", true, "오후 12:02") ) + } + val (inputText, setInputText) = remember { mutableStateOf("") } - Column( - modifier = Modifier - .fillMaxWidth() - .weight(1f) - .verticalScroll(rememberScrollState()) - ) { - messages.forEach { (message, isSentByOwner, time) -> - ChatBubble( - message = message, - time = time, - isSentByOwner = isSentByOwner - ) - } + val lazyListState = rememberLazyListState() - Spacer(modifier = Modifier.height(16.dp)) + LaunchedEffect(messages.size) { + if (messages.isNotEmpty()) { + lazyListState.animateScrollToItem(messages.size - 1) } } + fun getCurrentTime(): String { + val now = LocalTime.now() + val formatter = DateTimeFormatter.ofPattern("a hh:mm", Locale("ko", "KR")) + return now.format(formatter).replace("AM", "오전").replace("PM", "오후") + } Box( - modifier = Modifier - .fillMaxWidth() - .imePadding() + modifier = modifier + .fillMaxSize() + .background(colors.White) + .padding(padding) ) { - ChatRoomTextFieldRow( - text = inputText, - onTextChange = setInputText, - onSendClick = { - if (inputText.isNotBlank()) { - val currentTime = getCurrentTime() - messages.add(Triple(inputText, true, currentTime)) - setInputText("") + Column( + modifier = Modifier + .fillMaxWidth() + .background(colors.White) + .align(Alignment.TopCenter) + ) { + SubTopNavBar( + text = "작심이", + btnIcon = painterResource(R.drawable.ic_close), + isTextVisible = true, + isBtnVisible = false, + onCloseBtnClicked = {} + ) + ChatRoomInfoCardItem( + region = "강남/역삼/삼성", + postTitle = "강남역에서 수현이 되어주실 분!", + price = 20000 + ) + } + + Column( + modifier = Modifier + .fillMaxSize() + .padding(top = 140.dp) + ) { + LazyColumn( + modifier = Modifier + .fillMaxWidth() + .weight(1f), + state = lazyListState, + contentPadding = PaddingValues(vertical = 8.dp) + ) { + items(messages) { (message, isSentByOwner, time) -> + ChatBubble( + message = message, + time = time, + isSentByOwner = isSentByOwner + ) } - }, - modifier = Modifier.fillMaxWidth() - ) + } + ChatRoomTextFieldRow( + text = inputText, + onTextChange = setInputText, + onSendClick = { + if (inputText.isNotBlank()) { + val currentTime = getCurrentTime() + messages.add(Triple(inputText, true, currentTime)) + setInputText("") + } + }, + modifier = Modifier.fillMaxWidth().imePadding() + ) + } } } -} -@Preview -@Composable -private fun ChatRoomScreenPreview() { - WithSuhyeonTheme { - Column( - modifier = Modifier - .fillMaxSize() - .background(colors.White) - ) { - ChatBubble( - message = "지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요", - time = "오후 04:01", - isSentByOwner = false - ) - ChatBubble( - message = "시러요", - time = "오후 04:01", - isSentByOwner = true - ) - ChatBubble( - message = "히히", - time = "오후 08:40", - isSentByOwner = false - ) + @Preview + @Composable + private fun ChatRoomScreenPreview() { + WithSuhyeonTheme { + Column( + modifier = Modifier + .fillMaxSize() + .background(colors.White) + ) { + ChatBubble( + message = "지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요 지금은 몇시일까요", + time = "오후 04:01", + isSentByOwner = false + ) + ChatBubble( + message = "시러요", + time = "오후 04:01", + isSentByOwner = true + ) + ChatBubble( + message = "히히", + time = "오후 08:40", + isSentByOwner = false + ) + } } - } -} \ No newline at end of file + } \ No newline at end of file diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/navigation/ChatNavigation.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/navigation/ChatNavigation.kt index e0ad6e44..2eb308c4 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/chat/navigation/ChatNavigation.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/chat/navigation/ChatNavigation.kt @@ -29,6 +29,8 @@ fun NavGraphBuilder.chatNavGraph( ) } composable { - ChatRoomRoute(padding) + ChatRoomRoute( + padding = padding + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainActivity.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainActivity.kt index 8b97a11c..2940e864 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainActivity.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge +import androidx.core.view.WindowCompat import com.sopt.withsuhyeon.ui.theme.WithSuhyeonTheme import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt index c82720c1..47a4c9c7 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt @@ -10,6 +10,7 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import androidx.navigation.navOptions +import com.sopt.withsuhyeon.core.navigation.MainTabRoute import com.sopt.withsuhyeon.core.navigation.Route import com.sopt.withsuhyeon.feature.chat.navigation.navigateToChat import com.sopt.withsuhyeon.feature.chat.navigation.navigateToChatRoom @@ -86,12 +87,11 @@ class MainNavigator( navController.navigateToGalleryPostDetail() } - fun popBackStack() { fun navigateToChatRoom() { navController.navigateToChatRoom() } - private fun popBackStack() { + fun popBackStack() { navController.popBackStack() } From b7bd38bbd8735e5d58b9751dcb7b23d7267dd32f Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Mon, 20 Jan 2025 18:38:12 +0900 Subject: [PATCH 16/18] =?UTF-8?q?#41=20[fix]=20:=20adjustResize=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20-=20activity=20=EC=98=81=EC=97=AD=EC=97=90?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 2 +- .../main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e24f87e9..15bbd5e9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,6 @@ android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" - android:windowSoftInputMode="adjustResize" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.WithSuhyeon" @@ -26,6 +25,7 @@ android:name=".feature.main.MainActivity" android:exported="true" android:label="@string/app_name" + android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.WithSuhyeon"> diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt index a704f8b6..4df71a53 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt @@ -54,6 +54,7 @@ private fun MainScreenContent( ) ) }, + contentWindowInsets = WindowInsets(0, 0, 0, 0), bottomBar = { MainBottomBar( modifier = Modifier.background(colors.White) From a71a1795ac37468944e3b18d3963eead511e9cf7 Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Tue, 21 Jan 2025 08:29:39 +0900 Subject: [PATCH 17/18] =?UTF-8?q?#41=20[fix]=20:=20route=20=EC=B6=A9?= =?UTF-8?q?=EB=8F=8C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sopt/withsuhyeon/core/navigation/RouteModel.kt | 2 ++ .../java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/sopt/withsuhyeon/core/navigation/RouteModel.kt b/app/src/main/java/com/sopt/withsuhyeon/core/navigation/RouteModel.kt index 351a2e73..155c9397 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/core/navigation/RouteModel.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/core/navigation/RouteModel.kt @@ -18,6 +18,8 @@ sealed interface Route { @Serializable data object SelectLocation : Route @Serializable + data object GalleryUpload : Route + @Serializable data object GalleryPostDetail : Route @Serializable data object ChatRoom : Route diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt index e9d8c04c..85bcedc6 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainNavigator.kt @@ -10,7 +10,6 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import androidx.navigation.navOptions -import com.sopt.withsuhyeon.core.navigation.MainTabRoute import com.sopt.withsuhyeon.core.navigation.Route import com.sopt.withsuhyeon.feature.chat.navigation.navigateToChat import com.sopt.withsuhyeon.feature.chat.navigation.navigateToChatRoom From 00d6d9692176d89e97c85aa3922f8c4de5aa9e2d Mon Sep 17 00:00:00 2001 From: yskim6772 Date: Tue, 21 Jan 2025 09:05:18 +0900 Subject: [PATCH 18/18] =?UTF-8?q?#41=20[fix]=20:=20contentWindowInsets=20(?= =?UTF-8?q?0,=200,=200,=200)=20=EC=A0=81=EC=9A=A9=ED=95=9C=20=EA=B2=83=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt index 83f522e9..2e9fa8e3 100644 --- a/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt +++ b/app/src/main/java/com/sopt/withsuhyeon/feature/main/MainScreen.kt @@ -56,7 +56,6 @@ private fun MainScreenContent( ) }, - contentWindowInsets = WindowInsets(0, 0, 0, 0), bottomBar = { MainBottomBar( modifier = Modifier.background(colors.White)