From 94edb3fe7784d218ea64f7270c6ffa6af210e5c1 Mon Sep 17 00:00:00 2001 From: kimdowoo Date: Sat, 8 Apr 2023 19:48:54 +0900 Subject: [PATCH] =?UTF-8?q?[BUD-49]=20feat=20:=20=EC=BB=A4=EB=AE=A4?= =?UTF-8?q?=EB=8B=88=ED=8B=B0=20=EA=B8=80=20=EC=82=AD=EC=A0=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84(#32)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../community/data/CommunityService.kt | 7 ++++++ .../community/domain/CommunityUseCase.kt | 4 ++++ .../community/ui/CommunityViewModel.kt | 23 +++++++++++++++++++ .../community/ui/DetailPostFragment.kt | 23 +++++++++++++++++-- .../main/res/menu/detail_community_menu.xml | 16 +++++++++++++ 5 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 community/src/main/res/menu/detail_community_menu.xml diff --git a/community/src/main/java/com/nocapstone/community/data/CommunityService.kt b/community/src/main/java/com/nocapstone/community/data/CommunityService.kt index 4781f39..b7dc6b0 100644 --- a/community/src/main/java/com/nocapstone/community/data/CommunityService.kt +++ b/community/src/main/java/com/nocapstone/community/data/CommunityService.kt @@ -51,4 +51,11 @@ interface CommunityService { @Header("Authorization") token: String, @Path("postId") postId: Long ): CommonResponse + + @DELETE("community/{postId}") + suspend fun deletePost( + @Header("Authorization") token: String, + @Path("postId") postId: Long, + ): CommonResponse + } \ No newline at end of file diff --git a/community/src/main/java/com/nocapstone/community/domain/CommunityUseCase.kt b/community/src/main/java/com/nocapstone/community/domain/CommunityUseCase.kt index 2475513..e000591 100644 --- a/community/src/main/java/com/nocapstone/community/domain/CommunityUseCase.kt +++ b/community/src/main/java/com/nocapstone/community/domain/CommunityUseCase.kt @@ -47,4 +47,8 @@ class CommunityUseCase @Inject constructor( return communityService.deleteReply(token, postId) } + suspend fun deletePost(token:String, postId: Long) { + communityService.deletePost(token,postId) + } + } \ No newline at end of file diff --git a/community/src/main/java/com/nocapstone/community/ui/CommunityViewModel.kt b/community/src/main/java/com/nocapstone/community/ui/CommunityViewModel.kt index e6303d1..63eba93 100644 --- a/community/src/main/java/com/nocapstone/community/ui/CommunityViewModel.kt +++ b/community/src/main/java/com/nocapstone/community/ui/CommunityViewModel.kt @@ -7,6 +7,8 @@ import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.nocapstone.common.domain.usecase.DataStoreUseCase +import com.nocapstone.common.util.printLog +import com.nocapstone.common_ui.ToastSet import com.nocapstone.community.domain.CommunityUseCase import com.nocapstone.community.domain.CreatePostRequest import com.nocapstone.community.dto.Content @@ -41,6 +43,9 @@ class CommunityViewModel @Inject constructor( private val _postList = MutableStateFlow>(mutableListOf()) val postList: StateFlow> = _postList + private val _toastMessage = MutableStateFlow(null) + val toastMessage: StateFlow = _toastMessage + fun readPostList() { viewModelScope.launch(Dispatchers.IO) { try { @@ -139,9 +144,27 @@ class CommunityViewModel @Inject constructor( } } + fun deletePost(postId: Long) { + viewModelScope.launch(Dispatchers.IO) { + val token = dataStoreUseCase.bearerJsonWebToken.first() + if (token != null) { + try { + communityUseCase.deletePost(token, postId) + } catch (e: Exception) { + printLog("deletePost 오류", e) + } + } + } + } + + fun setImage(newUriList: List) { _imageUriList.value = newUriList.toMutableList() } + fun setToastMessage(toastSet: ToastSet?) { + _toastMessage.value = toastSet + } + } \ No newline at end of file diff --git a/community/src/main/java/com/nocapstone/community/ui/DetailPostFragment.kt b/community/src/main/java/com/nocapstone/community/ui/DetailPostFragment.kt index d0e40bc..3e5ebc4 100644 --- a/community/src/main/java/com/nocapstone/community/ui/DetailPostFragment.kt +++ b/community/src/main/java/com/nocapstone/community/ui/DetailPostFragment.kt @@ -10,8 +10,12 @@ import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.DividerItemDecoration +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nocapstone.common_ui.MainActivityUtil import com.nocapstone.common_ui.ImageDetailAdapter +import com.nocapstone.common_ui.ToastSet +import com.nocapstone.common_ui.ToastType +import com.nocapstone.community.R import com.nocapstone.community.ReplyAdapter import com.nocapstone.community.databinding.FragmentDetailPostBinding import com.nocapstone.community.dto.Content @@ -33,12 +37,10 @@ class DetailPostFragment : Fragment() { ): View? { // Inflate the layout for this fragment _binding = FragmentDetailPostBinding.inflate(inflater, container, false) - (activity as MainActivityUtil).run { setToolbarTitle("글 상세 조회") setVisibilityBottomAppbar(View.GONE) } - postId = args.postID return binding.root } @@ -71,6 +73,7 @@ class DetailPostFragment : Fragment() { menuHost.addMenuProvider(object : MenuProvider { override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { + menuInflater.inflate(R.menu.detail_community_menu, menu) } override fun onMenuItemSelected(menuItem: MenuItem): Boolean { @@ -78,6 +81,22 @@ class DetailPostFragment : Fragment() { android.R.id.home -> { findNavController().popBackStack() } + R.id.put_post -> { + + } + R.id.delete_post -> { + MaterialAlertDialogBuilder(requireContext()) + .setTitle("글 삭제") + .setMessage("정말 삭제하시겠습니까") + .setNegativeButton("취소") { + dialog, which -> dialog.dismiss() + }.setPositiveButton("삭제") { dialog, which -> + communityViewModel.deletePost(postId) + communityViewModel.setToastMessage(ToastSet("일기 삭제 완료", ToastType.SUCCESS)) + dialog.dismiss() + findNavController().popBackStack() + }.show() + } } return true } diff --git a/community/src/main/res/menu/detail_community_menu.xml b/community/src/main/res/menu/detail_community_menu.xml new file mode 100644 index 0000000..db4fffe --- /dev/null +++ b/community/src/main/res/menu/detail_community_menu.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file