diff --git a/core-data/src/main/java/com/example/core/data/community/CommunityRepository.kt b/core-data/src/main/java/com/example/core/data/community/CommunityRepository.kt index de3665f..00fe8ae 100644 --- a/core-data/src/main/java/com/example/core/data/community/CommunityRepository.kt +++ b/core-data/src/main/java/com/example/core/data/community/CommunityRepository.kt @@ -19,7 +19,7 @@ interface CommunityRepository { suspend fun getCommunityPostDetail(request: DetailRequest): Result suspend fun submitComment(communityId: Long, content: String): Result // return CommentId - suspend fun updatePost(categoryId: Long, communityId: Long, request: UpdatePostRequest): Result + suspend fun updatePost(communityId: Long, request: UpdatePostRequest): Result suspend fun deletePost(categoryId: Long, communityId: Long): Result suspend fun deleteComment(communityId: Long, commentId: Long): Result suspend fun reportPost(communityId: Long): Result diff --git a/core-data/src/main/java/com/example/core/data/community/CommunityRepositoryImpl.kt b/core-data/src/main/java/com/example/core/data/community/CommunityRepositoryImpl.kt index 53eac80..980b071 100644 --- a/core-data/src/main/java/com/example/core/data/community/CommunityRepositoryImpl.kt +++ b/core-data/src/main/java/com/example/core/data/community/CommunityRepositoryImpl.kt @@ -36,8 +36,8 @@ class CommunityRepositoryImpl @Inject constructor( return communityDataSource.submitComment(communityId, content) } - override suspend fun updatePost(categoryId: Long, communityId: Long, request: UpdatePostRequest): Result { - return communityDataSource.updatePost(categoryId, communityId, request) + override suspend fun updatePost(communityId: Long, request: UpdatePostRequest): Result { + return communityDataSource.updatePost(communityId, request) } override suspend fun deletePost(categoryId: Long, communityId: Long): Result { diff --git a/core-ui/src/main/res/drawable/flag_jp.png b/core-ui/src/main/res/drawable/flag_jp.png index 7ccc98f..cc1a28b 100644 Binary files a/core-ui/src/main/res/drawable/flag_jp.png and b/core-ui/src/main/res/drawable/flag_jp.png differ diff --git a/core-ui/src/main/res/drawable/ic_my_counseling.xml b/core-ui/src/main/res/drawable/ic_my_counseling.xml new file mode 100644 index 0000000..3b57739 --- /dev/null +++ b/core-ui/src/main/res/drawable/ic_my_counseling.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + diff --git a/core-ui/src/main/res/drawable/ic_my_post.xml b/core-ui/src/main/res/drawable/ic_my_post.xml new file mode 100644 index 0000000..f1b624e --- /dev/null +++ b/core-ui/src/main/res/drawable/ic_my_post.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/core-ui/src/main/res/drawable/ic_my_profile.xml b/core-ui/src/main/res/drawable/ic_my_profile.xml new file mode 100644 index 0000000..5c65316 --- /dev/null +++ b/core-ui/src/main/res/drawable/ic_my_profile.xml @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/core-ui/src/main/res/drawable/ic_my_resume.xml b/core-ui/src/main/res/drawable/ic_my_resume.xml new file mode 100644 index 0000000..395831c --- /dev/null +++ b/core-ui/src/main/res/drawable/ic_my_resume.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/core-ui/src/main/res/values-ja/strings.xml b/core-ui/src/main/res/values-ja/strings.xml index 7d3d023..2960cc8 100644 --- a/core-ui/src/main/res/values-ja/strings.xml +++ b/core-ui/src/main/res/values-ja/strings.xml @@ -95,7 +95,7 @@ ログアウト 言語の変更 本当に退会しますか? - 退会された後も、作成された投稿とコメントはサービスに残る可能性があり、その後は修正・削除などの管理ができなくなります。 + 退会された後も、作成された投稿とコメントはサービスに残る可能性があり、\nその後は修正・削除などの管理ができなくなります。 退会を決意した理由を教えてください 理由を選択してください 必要な機能がありません @@ -106,7 +106,7 @@ 退会しますか? 投稿とコメントに対する権限がなくなります 退会が完了しました。 - 今までご一緒していただきありがとうございます。HelloWorldはいつもあなたのそばにいます。 + 今までご一緒していただきありがとうございます。\nHelloWorldはいつもあなたのそばにいます。 ログアウトしますか? また次回お会いしましょう! ニックネームの変更 @@ -119,4 +119,6 @@ 匿名%d 投稿の作成 投稿の修正 + この機能は現在準備中です。 + 履歴書 / 自己紹介書 \ No newline at end of file diff --git a/core-ui/src/main/res/values-ko/strings.xml b/core-ui/src/main/res/values-ko/strings.xml index 408588e..31476e3 100644 --- a/core-ui/src/main/res/values-ko/strings.xml +++ b/core-ui/src/main/res/values-ko/strings.xml @@ -85,6 +85,8 @@ 프로필 변경 내 상담 요약 이력서\n/ 자기소개서 + 해당 기능은 준비중입니다. + 이력서 / 자기소개서 게시글\n/ 댓글 Hello World 정보 오픈소스 라이선스 @@ -95,7 +97,7 @@ 게시글 언어 변경 정말 탈퇴하실 건가요? - 탈퇴하신 후에도 작성하신 글과 댓글은 서비스에 남을 수 있으며, 이후에는 수정·삭제 등 관리가 불가능합니다. + 탈퇴하신 후에도 작성하신 글과 댓글은 서비스에 남을 수 있으며,\n이후에는 수정·삭제 등 관리가 불가능합니다. 탈퇴를 결심하게 된 이유를 알려주세요 이유를 선택해주세요 필요한 기능이 없어요 @@ -106,7 +108,7 @@ 탈퇴 하시겠어요? 게시글과 댓글에 대한 권한이 없어집니다 탈퇴가 완료되었습니다. - 지금까지 함께해주셔서 감사합니다. HelloWorld는 늘 곁에 있을게요. + 지금까지 함께해주셔서 감사합니다.\nHelloWorld는 늘 곁에 있을게요. 다음에 다시 만나요! 닉네임 변경 로그아웃 하시겠어요? diff --git a/core-ui/src/main/res/values-vi/strings.xml b/core-ui/src/main/res/values-vi/strings.xml index cdea6bf..9f888ac 100644 --- a/core-ui/src/main/res/values-vi/strings.xml +++ b/core-ui/src/main/res/values-vi/strings.xml @@ -93,7 +93,7 @@ Đăng xuất Thay đổi ngôn ngữ Bạn có thực sự muốn rút khỏi không? - Ngay cả sau khi rút khỏi, các bài viết và bình luận bạn đã viết có thể vẫn còn trên dịch vụ, và sau đó không thể quản lý như chỉnh sửa hoặc xóa. + Ngay cả sau khi rút khỏi, các bài viết và bình luận bạn đã viết có thể vẫn còn trên dịch vụ,\nvà sau đó không thể quản lý như chỉnh sửa hoặc xóa. Vui lòng cho biết lý do bạn quyết định rút khỏi. Vui lòng chọn lý do Không có các tính năng cần thiết @@ -104,7 +104,7 @@ Bạn có muốn rút khỏi không? Bạn sẽ mất quyền đối với bài viết và bình luận. Rút khỏi đã hoàn tất. - Cảm ơn bạn đã đồng hành cùng chúng tôi cho đến nay. HelloWorld sẽ luôn ở bên bạn. + Cảm ơn bạn đã đồng hành cùng chúng tôi cho đến nay.\nHelloWorld sẽ luôn ở bên bạn. Bạn có muốn đăng xuất không? Hẹn gặp lại lần sau! Thay đổi biệt danh @@ -119,4 +119,6 @@ Ẩn danh%d Viết bài đăng Chỉnh sửa bài đăng + Tính năng này hiện đang được phát triển. + Sơ yếu lý lịch / Thư tự giới thiệu \ No newline at end of file diff --git a/core-ui/src/main/res/values-zh-rCN/strings.xml b/core-ui/src/main/res/values-zh-rCN/strings.xml index 5136e8a..74884df 100644 --- a/core-ui/src/main/res/values-zh-rCN/strings.xml +++ b/core-ui/src/main/res/values-zh-rCN/strings.xml @@ -93,7 +93,7 @@ 退出登录 更改语言 您确定要退出吗? - 即使在您退出后,您撰写的帖子和评论仍可能保留在服务中,之后将无法进行编辑、删除等管理。 + 即使在您退出后,您撰写的帖子和评论仍可能保留在服务中,\n之后将无法进行编辑、删除等管理。 请告诉我们您决定退出的原因 请选择原因 没有所需功能 @@ -104,7 +104,7 @@ 您确定要退出吗? 您将失去对帖子和评论的管理权限 退出已完成。 - 感谢您一路相伴。HelloWorld 将永远在您身边。 + 感谢您一路相伴。\nHelloWorld 将永远在您身边。 您确定要退出登录吗? 期待下次再见! 更改昵称 @@ -119,4 +119,6 @@ 匿名%d 发布帖子 修改帖子 + 该功能正在准备中。 + 简历 / 自我介绍信 \ No newline at end of file diff --git a/core-ui/src/main/res/values/strings.xml b/core-ui/src/main/res/values/strings.xml index 1ccb559..d8ec56d 100644 --- a/core-ui/src/main/res/values/strings.xml +++ b/core-ui/src/main/res/values/strings.xml @@ -124,7 +124,7 @@ Change Profile My Consultation Summary - Resume\n/ Self-Introduction Letter + Resume / Self-Introduction Letter Posts\n/ Comments About Hello World @@ -139,7 +139,8 @@ Change Language Are you sure you want to withdraw? - Even after withdrawing, the posts and comments you wrote may remain on the service, and management such as editing or deleting will not be possible afterwards. + Even after withdrawing, the posts and comments you wrote may remain on the service,\nand management such as editing or deleting will not be possible + afterwards. Please tell us the reason for your decision to withdraw. Please select a reason. I don\'t have the necessary features. @@ -152,7 +153,7 @@ You will lose the right to manage your posts and comments. Withdrawal is complete. - Thank you for being with us so far. HelloWorld will always be by your side. + Thank you for being with us so far.\nHelloWorld will always be by your side. Please enter the chat within 500 characters. Chat Summary , @@ -165,4 +166,7 @@ Write Post Edit Post + This feature is currently under development. + Resume / Self-Introduction Letter + \ No newline at end of file diff --git a/core/network/src/main/java/com/example/network/community/CommunityApi.kt b/core/network/src/main/java/com/example/network/community/CommunityApi.kt index fef5c1c..022823c 100644 --- a/core/network/src/main/java/com/example/network/community/CommunityApi.kt +++ b/core/network/src/main/java/com/example/network/community/CommunityApi.kt @@ -68,7 +68,6 @@ interface CommunityApi { @PATCH(ApiConstants.UPDATE_COMMUNITY_POST) suspend fun updateCommunityPost( - @Path("category_id") categoryId: Long, @Path("community_id") communityId: Long, @Body request: UpdatePostRequest ): Response> diff --git a/core/network/src/main/java/com/example/network/community/CommunityDataSource.kt b/core/network/src/main/java/com/example/network/community/CommunityDataSource.kt index 3e8f46a..a2b6156 100644 --- a/core/network/src/main/java/com/example/network/community/CommunityDataSource.kt +++ b/core/network/src/main/java/com/example/network/community/CommunityDataSource.kt @@ -19,7 +19,7 @@ interface CommunityDataSource { suspend fun getCommunityPostDetail(request: DetailRequest): Result suspend fun submitComment(communityId: Long, content: String): Result - suspend fun updatePost(categoryId: Long, communityId: Long, request: UpdatePostRequest): Result + suspend fun updatePost(communityId: Long, request: UpdatePostRequest): Result suspend fun deletePost(categoryId: Long, communityId: Long): Result suspend fun deleteComment(communityId: Long, commentId: Long): Result suspend fun reportPost(communityId: Long): Result diff --git a/core/network/src/main/java/com/example/network/community/RetrofitCommunityDataSource.kt b/core/network/src/main/java/com/example/network/community/RetrofitCommunityDataSource.kt index 02e7989..dbc8008 100644 --- a/core/network/src/main/java/com/example/network/community/RetrofitCommunityDataSource.kt +++ b/core/network/src/main/java/com/example/network/community/RetrofitCommunityDataSource.kt @@ -270,12 +270,11 @@ class RetrofitCommunityDataSource @Inject constructor( } } - override suspend fun updatePost(categoryId: Long, communityId: Long, request: UpdatePostRequest): Result { + override suspend fun updatePost(communityId: Long, request: UpdatePostRequest): Result { Log.d(TAG, "updatePost() called") return try { val response = communityApi.updateCommunityPost( - categoryId = categoryId, communityId = communityId, request = request ) diff --git a/feature/src/main/java/com/example/feature/MainScreen.kt b/feature/src/main/java/com/example/feature/MainScreen.kt index c3ae715..9d49a71 100644 --- a/feature/src/main/java/com/example/feature/MainScreen.kt +++ b/feature/src/main/java/com/example/feature/MainScreen.kt @@ -1,6 +1,12 @@ package com.example.feature +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Icon import androidx.compose.material3.NavigationBar @@ -10,9 +16,12 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +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.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController @@ -21,6 +30,8 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import androidx.navigation.navOptions +import com.example.core.ui.theme.AppTypography +import com.example.core.ui.theme.HelloWorldGrayScale300 import com.example.feature.ui.aichat.navigation.aiChatDetailScreen import com.example.feature.ui.aichat.navigation.aiChatScreen import com.example.feature.ui.aichat.navigation.navigateToAIChatDetail @@ -141,7 +152,26 @@ fun MyNavigationHost(navController: NavHostController) { onBackClick = navController::navigateUp ) - composable("이력서 작성") { Text("이력서 작성 화면", modifier = Modifier.padding(16.dp)) } + composable("이력서 작성") { + Column( + modifier = Modifier + .fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Image( + painter = painterResource(com.example.core.ui.R.drawable.ic_mascot_error), + contentDescription = null + ) + Spacer(modifier = Modifier.height(12.dp)) + Text( + text = stringResource(com.example.core.ui.R.string.msg_feature_preparing), + style = AppTypography.label02, + color = HelloWorldGrayScale300, + textAlign = TextAlign.Center + ) + } + } communityScreen( onNavigateToCommunityPostWrite = navController::navigateToCommunityPostWrite, onNavigateToCommunityPostDetail = navController::navigateToCommunityPostDetail, diff --git a/feature/src/main/java/com/example/feature/ui/community/PostWriteViewModel.kt b/feature/src/main/java/com/example/feature/ui/community/PostWriteViewModel.kt index d7ea7f6..065610c 100644 --- a/feature/src/main/java/com/example/feature/ui/community/PostWriteViewModel.kt +++ b/feature/src/main/java/com/example/feature/ui/community/PostWriteViewModel.kt @@ -136,7 +136,6 @@ class PostWriteViewModel @AssistedInject constructor( fun updateCommunityPost(onResult: (Boolean) -> Unit) { viewModelScope.launch { communityRepository.updatePost( - categoryId = _selectedTab.value.toLong(), communityId = request.communityId.toLong(), request = UpdatePostRequest( title = _title.value, diff --git a/feature/src/main/java/com/example/feature/ui/mypage/navigation/MyPageNavigation.kt b/feature/src/main/java/com/example/feature/ui/mypage/navigation/MyPageNavigation.kt index cbc5b8a..71e7a34 100644 --- a/feature/src/main/java/com/example/feature/ui/mypage/navigation/MyPageNavigation.kt +++ b/feature/src/main/java/com/example/feature/ui/mypage/navigation/MyPageNavigation.kt @@ -129,6 +129,7 @@ fun NavGraphBuilder.resumeScreen( ) { composable { Resume( + onNavigateBack = onNavigateBack ) } } diff --git a/feature/src/main/java/com/example/feature/ui/mypage/screen/MyPage.kt b/feature/src/main/java/com/example/feature/ui/mypage/screen/MyPage.kt index 92e28f8..690799d 100644 --- a/feature/src/main/java/com/example/feature/ui/mypage/screen/MyPage.kt +++ b/feature/src/main/java/com/example/feature/ui/mypage/screen/MyPage.kt @@ -225,19 +225,23 @@ private fun MyPage( horizontalArrangement = Arrangement.SpaceBetween, ) { MenuCard( + imageVector = ImageVector.vectorResource(R.drawable.ic_my_profile), title = stringResource(R.string.mypage_profile_edit), onClick = { onNavigateToProfileEdit(uiState.userInfo.name, uiState.userInfo.userImg, uiState.userInfo.language) }, // TODO language ) MenuCard( + imageVector = ImageVector.vectorResource(R.drawable.ic_my_counseling), title = stringResource(R.string.mypage_consultation_summary), onClick = { onNavigateToCounselingSummary() }, ) MenuCard( + imageVector = ImageVector.vectorResource(R.drawable.ic_my_resume), title = stringResource(R.string.mypage_resume), spacing = 6.dp, onClick = { onNavigateToResume() }, ) MenuCard( + imageVector = ImageVector.vectorResource(R.drawable.ic_my_post), title = stringResource(R.string.mypage_posts_comments), spacing = 6.dp, onClick = { onNavigateToPostAndComments() }, @@ -355,6 +359,7 @@ private fun MyPage( @Composable private fun MenuCard( + imageVector: ImageVector, title: String = "", spacing: Dp = 12.dp, onClick: () -> Unit = {}, @@ -364,11 +369,11 @@ private fun MenuCard( .clickable { onClick() }, horizontalAlignment = Alignment.CenterHorizontally, ) { - Box( + Image( + imageVector = imageVector, + contentDescription = null, modifier = Modifier .size(60.dp) - .clip(RoundedCornerShape(8.dp)) - .background(Color.LightGray) ) Spacer(modifier = Modifier.height(spacing)) Text( diff --git a/feature/src/main/java/com/example/feature/ui/mypage/screen/Resume.kt b/feature/src/main/java/com/example/feature/ui/mypage/screen/Resume.kt index 1900585..f98db29 100644 --- a/feature/src/main/java/com/example/feature/ui/mypage/screen/Resume.kt +++ b/feature/src/main/java/com/example/feature/ui/mypage/screen/Resume.kt @@ -1,26 +1,92 @@ package com.example.feature.ui.mypage.screen +import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +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.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Icon import androidx.compose.material3.Text 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.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.zIndex +import com.example.core.ui.R +import com.example.core.ui.component.HWDropdownMenuBox +import com.example.core.ui.component.IconPosition +import com.example.core.ui.theme.AppTypography +import com.example.core.ui.theme.HelloWorldGrayScale300 +import com.example.core.ui.theme.HelloWorldGrayScale800 +import com.example.core.ui.theme.HelloWorldMain500 +import com.example.feature.ui.mypage.viewmodel.MyPostAndCommentUiState @Composable -fun Resume() { +fun Resume( + onNavigateBack: () -> Unit, +) { Column( modifier = Modifier - .fillMaxSize() - .background(Color.Cyan), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center, + .fillMaxSize(), ) { - Text( - text = "Resume" - ) + Row( + modifier = Modifier + .fillMaxWidth() + .height(48.dp) + .padding(start = 8.dp, end = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + painter = painterResource(R.drawable.ic_keyboard_arrow_left), + contentDescription = null, + tint = HelloWorldMain500, + modifier = Modifier + .clip(CircleShape) + .clickable { onNavigateBack() } + .padding(8.dp) + .size(24.dp) + ) + Spacer(modifier = Modifier.width(4.dp)) + Text( + text = stringResource(R.string.header_resume), + style = AppTypography.heading04, + color = HelloWorldGrayScale800 + ) + } + Column( + modifier = Modifier + .fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Image( + painter = painterResource(R.drawable.ic_mascot_error), + contentDescription = null + ) + Spacer(modifier = Modifier.height(12.dp)) + Text( + text = stringResource(R.string.msg_feature_preparing), + style = AppTypography.label02, + color = HelloWorldGrayScale300, + textAlign = TextAlign.Center + ) + } } } \ No newline at end of file