From cc00adb2cdcbdb741db40b14cf7538054a317f7d Mon Sep 17 00:00:00 2001 From: pump9918 Date: Mon, 15 Jan 2024 11:22:18 +0900 Subject: [PATCH 01/22] =?UTF-8?q?#54=20[ui]=20=ED=96=89=EB=B3=B5=EB=A3=A8?= =?UTF-8?q?=ED=8B=B4=20=EC=82=AD=EC=A0=9C=ED=95=98=EA=B8=B0=20xml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout/fragment_happy_delete.xml | 247 ++++++++++++++++++ app/src/main/res/values/strings.xml | 3 + 2 files changed, 250 insertions(+) create mode 100644 app/src/main/res/layout/fragment_happy_delete.xml diff --git a/app/src/main/res/layout/fragment_happy_delete.xml b/app/src/main/res/layout/fragment_happy_delete.xml new file mode 100644 index 00000000..b08b9a10 --- /dev/null +++ b/app/src/main/res/layout/fragment_happy_delete.xml @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cd843b4c..16b9b6e4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -42,6 +42,9 @@ 이 루틴을 추가할래 + + 달성 중... + 어떤 친구와 함께 할까요? 한 번 선택한 인형은 바꿀 수 없어요 From 0dd5cb9663a1190150022e854fe42437217af07b Mon Sep 17 00:00:00 2001 From: pump9918 Date: Mon, 15 Jan 2024 11:22:31 +0900 Subject: [PATCH 02/22] =?UTF-8?q?#54=20[ui]=20=ED=96=89=EB=B3=B5=EB=A3=A8?= =?UTF-8?q?=ED=8B=B4=20=EC=82=AD=EC=A0=9C=ED=95=98=EA=B8=B0=20=EB=B7=B0?= =?UTF-8?q?=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopetit/softie/domain/entity/HappyUser.kt | 14 ++++ .../delete/HappyDeleteFragment.kt | 75 +++++++++++++++++++ .../delete/HappyDeleteViewModel.kt | 19 +++++ 3 files changed, 108 insertions(+) create mode 100644 app/src/main/java/com/sopetit/softie/domain/entity/HappyUser.kt create mode 100644 app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt create mode 100644 app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteViewModel.kt diff --git a/app/src/main/java/com/sopetit/softie/domain/entity/HappyUser.kt b/app/src/main/java/com/sopetit/softie/domain/entity/HappyUser.kt new file mode 100644 index 00000000..ce7b7ecc --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/domain/entity/HappyUser.kt @@ -0,0 +1,14 @@ +package com.sopetit.softie.domain.entity + +import androidx.annotation.DrawableRes + +data class HappyUser( + val routineId: Int, + @DrawableRes val imageUrl: Int, + val title: String, + val content: String, + val detailTitle: String, + val detailContent: String, + val detailTime: String, + val detailPlace: String +) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt new file mode 100644 index 00000000..8cea6236 --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt @@ -0,0 +1,75 @@ +package com.sopetit.softie.ui.happyroutine.delete + +import android.os.Bundle +import android.view.View +import androidx.fragment.app.activityViewModels +import com.sopetit.softie.R +import com.sopetit.softie.databinding.FragmentHappyDeleteBinding +import com.sopetit.softie.domain.entity.HappyUser +import com.sopetit.softie.ui.main.home.HomeFragment +import com.sopetit.softie.util.binding.BindingFragment + +class HappyDeleteFragment : + BindingFragment(R.layout.fragment_happy_delete) { + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + val viewModel: HappyDeleteViewModel by activityViewModels() + val happyDelete = viewModel.mockHappyDelete + + setCardBinding(happyDelete) + setCardEnter() + setCancelEnter() + setClearEnter() + } + + private fun setCardBinding(happyDelete: HappyUser) { + with(binding) { + tvHappyDeleteSubtitle.text = happyDelete.title + ivHappyDeleteCardFront.setImageResource(happyDelete.imageUrl) + tvHappyDeleteCardFrontTitle.text = happyDelete.content + tvHappyDeleteCardBackTitle.text = happyDelete.detailTitle + tvHappyDeleteCardBackContent.text = happyDelete.detailContent + tvHappyDeleteCardBackTime.text = happyDelete.detailTime + tvHappyDeleteCardBackPlace.text = happyDelete.detailPlace + } + } + + private fun setCardEnter() { + with(binding) { + clHappyDeleteCardFront.setOnClickListener { + setCardFlip(clHappyDeleteCardFront, clHappyDeleteCardBack) + } + clHappyDeleteCardBack.setOnClickListener { + setCardFlip(clHappyDeleteCardBack, clHappyDeleteCardFront) + } + } + } + + private fun setCancelEnter() { + binding.tvHappyDeleteDestroy.setOnClickListener { + requireActivity().supportFragmentManager.popBackStack() + } + } + + private fun setCardFlip(viewFront: View, viewToBack: View) { + val isVisible = viewFront.visibility == View.VISIBLE + if (isVisible) { + viewFront.visibility = View.INVISIBLE + viewToBack.visibility = View.VISIBLE + } else { + viewFront.visibility = View.VISIBLE + viewToBack.visibility = View.INVISIBLE + } + } + + private fun setClearEnter() { + binding.btnHappyDeleteClear.setOnClickListener { + val homeFragment = HomeFragment() + requireActivity().supportFragmentManager.beginTransaction() + .replace(R.id.fcv_main, homeFragment) + .commit() + } + } +} diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteViewModel.kt new file mode 100644 index 00000000..339b1b22 --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteViewModel.kt @@ -0,0 +1,19 @@ +package com.sopetit.softie.ui.happyroutine.delete + +import androidx.lifecycle.ViewModel +import com.sopetit.softie.R +import com.sopetit.softie.domain.entity.HappyUser + +class HappyDeleteViewModel : ViewModel() { + + val mockHappyDelete: HappyUser = HappyUser( + routineId = 1, + imageUrl = R.drawable.ic_happycard_up_purple, + title = "성숙한 사람을 만나기 위한", + content = "이상형의 특성 10가지 적어보고,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기 앞면", + detailTitle = "이상형의 특성 10가지 적어보고,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기 뒷면", + detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어. 난 너를 믿", + detailTime = "5~10분", + detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" + ) +} From b6902022849346041d4fbe0980e1a515cef6d088 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Mon, 15 Jan 2024 16:45:30 +0900 Subject: [PATCH 03/22] =?UTF-8?q?#54=20[chore]=20=EB=B2=84=ED=8A=BC=20?= =?UTF-8?q?=ED=81=AC=EA=B8=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/drawable/shape_red_fill_12_rect.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/drawable/shape_red_fill_12_rect.xml b/app/src/main/res/drawable/shape_red_fill_12_rect.xml index d1ad4862..361e21e3 100644 --- a/app/src/main/res/drawable/shape_red_fill_12_rect.xml +++ b/app/src/main/res/drawable/shape_red_fill_12_rect.xml @@ -1,7 +1,10 @@ + + + - From 744abed89e749fce9689d246d5c9f708610e94e8 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Mon, 15 Jan 2024 16:46:06 +0900 Subject: [PATCH 04/22] =?UTF-8?q?#54=20[ui]=20=ED=8E=B8=EC=A7=91=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20Fragment=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../delete/HappyDeleteFragment.kt | 37 +++++++++++++++---- .../progress/HappyProgressFragment.kt | 12 +++--- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt index 8cea6236..134ae4a1 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt @@ -6,7 +6,9 @@ import androidx.fragment.app.activityViewModels import com.sopetit.softie.R import com.sopetit.softie.databinding.FragmentHappyDeleteBinding import com.sopetit.softie.domain.entity.HappyUser -import com.sopetit.softie.ui.main.home.HomeFragment +import com.sopetit.softie.ui.happyroutine.HappyRoutineFragment +import com.sopetit.softie.util.OriginalBottomSheet +import com.sopetit.softie.util.binding.BindingBottomSheet import com.sopetit.softie.util.binding.BindingFragment class HappyDeleteFragment : @@ -17,11 +19,12 @@ class HappyDeleteFragment : val viewModel: HappyDeleteViewModel by activityViewModels() val happyDelete = viewModel.mockHappyDelete + val routineId = 1 setCardBinding(happyDelete) setCardEnter() setCancelEnter() - setClearEnter() + setClearEnter(routineId) } private fun setCardBinding(happyDelete: HappyUser) { @@ -64,12 +67,32 @@ class HappyDeleteFragment : } } - private fun setClearEnter() { + private fun setClearEnter(routineId: Int) { binding.btnHappyDeleteClear.setOnClickListener { - val homeFragment = HomeFragment() - requireActivity().supportFragmentManager.beginTransaction() - .replace(R.id.fcv_main, homeFragment) - .commit() + initSetDailyRoutineAchieve(binding.btnHappyDeleteClear, routineId) + } + } + + private fun initSetDailyRoutineAchieve(btn: View, routineId: Int) { + btn.setOnClickListener { + BindingBottomSheet.Builder().build( + isDrawable = true, + imageDrawable = R.drawable.ic_bear_face_crying, + imageUri = "", + title = "정말 삭제할까요?", + content = "", + isContentVisible = true, + contentColor = R.color.gray400, + backBtnContent = "취소", + doBtnContent = "삭제할래", + doBtnColor = R.drawable.shape_red_fill_12_rect, + backBtnAction = {}, + doBtnAction = { + requireActivity().supportFragmentManager.beginTransaction() + .replace(R.id.fcv_main, HappyRoutineFragment()) + .commit() + } + ).show(parentFragmentManager, OriginalBottomSheet.BOTTOM_SHEET_TAG) } } } diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt index e2b2687d..fb6dc945 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt @@ -6,7 +6,7 @@ import androidx.fragment.app.activityViewModels import com.sopetit.softie.R import com.sopetit.softie.databinding.FragmentHappyProgressBinding import com.sopetit.softie.domain.entity.HappyProgress -import com.sopetit.softie.ui.main.home.HomeFragment +import com.sopetit.softie.ui.happyroutine.delete.HappyDeleteFragment import com.sopetit.softie.util.binding.BindingFragment class HappyProgressFragment : @@ -49,9 +49,10 @@ class HappyProgressFragment : private fun setEditEnter() { binding.tvHappyProgressEdit.setOnClickListener { - val homeFragment = HomeFragment() + val happyDeleteFragment = HappyDeleteFragment() requireActivity().supportFragmentManager.beginTransaction() - .replace(R.id.fcv_main, homeFragment) + .replace(R.id.fcv_main, happyDeleteFragment) + .addToBackStack(null) .commit() } } @@ -69,10 +70,7 @@ class HappyProgressFragment : private fun setClearEnter() { binding.btnHappyProgressClear.setOnClickListener { - val homeFragment = HomeFragment() - requireActivity().supportFragmentManager.beginTransaction() - .replace(R.id.fcv_main, homeFragment) - .commit() + } } } From 0d14afaaa5bc58960c573b8debe07dea63bf45c3 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Mon, 15 Jan 2024 16:52:15 +0900 Subject: [PATCH 05/22] =?UTF-8?q?#54=20[chore]=20xml=20=EA=B0=84=EA=B2=A9?= =?UTF-8?q?=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/fragment_happy_delete.xml | 7 +++---- app/src/main/res/layout/fragment_happy_progress.xml | 3 +-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/layout/fragment_happy_delete.xml b/app/src/main/res/layout/fragment_happy_delete.xml index b08b9a10..6b8ca410 100644 --- a/app/src/main/res/layout/fragment_happy_delete.xml +++ b/app/src/main/res/layout/fragment_happy_delete.xml @@ -30,7 +30,7 @@ android:layout_height="wrap_content" android:layout_marginTop="44dp" android:layout_marginEnd="19dp" - android:text="삭제" + android:text="취소" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -50,7 +50,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="4dp" - android:text="@string/happy_delete_mention" + android:text="@string/happy_progress_mention" app:layout_constraintBottom_toBottomOf="@id/iv_happy_delete_mention" app:layout_constraintEnd_toEndOf="@id/iv_happy_delete_mention" app:layout_constraintStart_toStartOf="@id/iv_happy_delete_mention" @@ -173,11 +173,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="20dp" - android:layout_marginTop="52dp" android:layout_marginBottom="7dp" android:src="@drawable/ic_time" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_happy_delete_card_back_content" + app:layout_constraintBottom_toTopOf="@id/iv_happy_delete_card_back_place" app:layout_constraintVertical_bias="1" /> Date: Mon, 15 Jan 2024 22:26:55 +0900 Subject: [PATCH 06/22] =?UTF-8?q?#54=20[ui]=20=EC=82=AD=EC=A0=9C=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=EB=B0=94=ED=85=80=EC=8B=9C=ED=8A=B8=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=EC=8A=A4=EB=82=B5=EB=B0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../delete/HappyDeleteFragment.kt | 19 +++++++++++++++---- .../progress/HappyProgressViewModel.kt | 14 ++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt index 134ae4a1..97ae5dea 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt @@ -3,31 +3,37 @@ package com.sopetit.softie.ui.happyroutine.delete import android.os.Bundle import android.view.View import androidx.fragment.app.activityViewModels +import androidx.fragment.app.viewModels import com.sopetit.softie.R import com.sopetit.softie.databinding.FragmentHappyDeleteBinding -import com.sopetit.softie.domain.entity.HappyUser +import com.sopetit.softie.domain.entity.HappyProgress import com.sopetit.softie.ui.happyroutine.HappyRoutineFragment +import com.sopetit.softie.ui.happyroutine.progress.HappyProgressViewModel import com.sopetit.softie.util.OriginalBottomSheet import com.sopetit.softie.util.binding.BindingBottomSheet import com.sopetit.softie.util.binding.BindingFragment +import com.sopetit.softie.util.snackBar class HappyDeleteFragment : BindingFragment(R.layout.fragment_happy_delete) { + private val viewModel by viewModels() + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val viewModel: HappyDeleteViewModel by activityViewModels() - val happyDelete = viewModel.mockHappyDelete + val viewModel: HappyProgressViewModel by activityViewModels() + val happyDelete = viewModel.mockHappyProgress val routineId = 1 setCardBinding(happyDelete) setCardEnter() setCancelEnter() + //initSetDeleteView() setClearEnter(routineId) } - private fun setCardBinding(happyDelete: HappyUser) { + private fun setCardBinding(happyDelete: HappyProgress) { with(binding) { tvHappyDeleteSubtitle.text = happyDelete.title ivHappyDeleteCardFront.setImageResource(happyDelete.imageUrl) @@ -88,6 +94,11 @@ class HappyDeleteFragment : doBtnColor = R.drawable.shape_red_fill_12_rect, backBtnAction = {}, doBtnAction = { + snackBar( + binding.root.rootView, + "행복루틴을 삭제했어요" + ) + viewModel.setDeleteView(false) requireActivity().supportFragmentManager.beginTransaction() .replace(R.id.fcv_main, HappyRoutineFragment()) .commit() diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressViewModel.kt index 63992208..d2b68d8e 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressViewModel.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressViewModel.kt @@ -1,5 +1,7 @@ package com.sopetit.softie.ui.happyroutine.progress +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.sopetit.softie.R import com.sopetit.softie.domain.entity.HappyProgress @@ -16,4 +18,16 @@ class HappyProgressViewModel : ViewModel() { detailTime = "5~10분", detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" ) + + private val _isDeleteView: MutableLiveData = MutableLiveData(false) + val isDeleteView: LiveData + get() = _isDeleteView + + fun setDeleteView(deleteEnabled: Boolean) { + _isDeleteView.value = deleteEnabled + } + + private val _isEditBtnEnabled: MutableLiveData = MutableLiveData() + val isEditBtnEnabled: LiveData + get() = _isEditBtnEnabled } From 61f624ab64504eae81da38883a4008111545b273 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Mon, 15 Jan 2024 23:16:59 +0900 Subject: [PATCH 07/22] =?UTF-8?q?#54=20[chore]=20=EC=84=B8=EB=B6=80=20?= =?UTF-8?q?=EC=82=AC=ED=95=AD=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../delete/HappyDeleteFragment.kt | 12 +----------- .../delete/HappyDeleteViewModel.kt | 19 ------------------- .../main/res/layout/fragment_happy_delete.xml | 10 ++++++---- app/src/main/res/values/strings.xml | 3 +++ 4 files changed, 10 insertions(+), 34 deletions(-) delete mode 100644 app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteViewModel.kt diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt index 97ae5dea..ef9a5eb4 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt @@ -3,7 +3,6 @@ package com.sopetit.softie.ui.happyroutine.delete import android.os.Bundle import android.view.View import androidx.fragment.app.activityViewModels -import androidx.fragment.app.viewModels import com.sopetit.softie.R import com.sopetit.softie.databinding.FragmentHappyDeleteBinding import com.sopetit.softie.domain.entity.HappyProgress @@ -17,8 +16,6 @@ import com.sopetit.softie.util.snackBar class HappyDeleteFragment : BindingFragment(R.layout.fragment_happy_delete) { - private val viewModel by viewModels() - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -29,8 +26,8 @@ class HappyDeleteFragment : setCardBinding(happyDelete) setCardEnter() setCancelEnter() - //initSetDeleteView() setClearEnter(routineId) + //initSetRoutineDelete() } private fun setCardBinding(happyDelete: HappyProgress) { @@ -75,12 +72,6 @@ class HappyDeleteFragment : private fun setClearEnter(routineId: Int) { binding.btnHappyDeleteClear.setOnClickListener { - initSetDailyRoutineAchieve(binding.btnHappyDeleteClear, routineId) - } - } - - private fun initSetDailyRoutineAchieve(btn: View, routineId: Int) { - btn.setOnClickListener { BindingBottomSheet.Builder().build( isDrawable = true, imageDrawable = R.drawable.ic_bear_face_crying, @@ -98,7 +89,6 @@ class HappyDeleteFragment : binding.root.rootView, "행복루틴을 삭제했어요" ) - viewModel.setDeleteView(false) requireActivity().supportFragmentManager.beginTransaction() .replace(R.id.fcv_main, HappyRoutineFragment()) .commit() diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteViewModel.kt deleted file mode 100644 index 339b1b22..00000000 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteViewModel.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.sopetit.softie.ui.happyroutine.delete - -import androidx.lifecycle.ViewModel -import com.sopetit.softie.R -import com.sopetit.softie.domain.entity.HappyUser - -class HappyDeleteViewModel : ViewModel() { - - val mockHappyDelete: HappyUser = HappyUser( - routineId = 1, - imageUrl = R.drawable.ic_happycard_up_purple, - title = "성숙한 사람을 만나기 위한", - content = "이상형의 특성 10가지 적어보고,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기 앞면", - detailTitle = "이상형의 특성 10가지 적어보고,\n절대 포기 못할 2가지와\n나와 비슷한 3가지 찾아보기 뒷면", - detailContent = "평소에 바빠서 연락하지 못한 사람이 있다면 안부인사 개인톡을 보내 봐. 꼭 만나서 밥을 먹거나 하지 않아도 연락 한 통이 나와 그 사람을 연결하는 방법이 될 수 있어. 난 너를 믿", - detailTime = "5~10분", - detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" - ) -} diff --git a/app/src/main/res/layout/fragment_happy_delete.xml b/app/src/main/res/layout/fragment_happy_delete.xml index 6b8ca410..7471c2b6 100644 --- a/app/src/main/res/layout/fragment_happy_delete.xml +++ b/app/src/main/res/layout/fragment_happy_delete.xml @@ -20,19 +20,21 @@ android:layout_marginStart="18dp" android:layout_marginTop="40dp" android:visibility="visible" - android:text="행복 루틴" + android:text="@string/happy_progress_title" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="@id/tv_happy_delete_title" /> 달성 중... 완료하기 + + 취소 + 어떤 친구와 함께 할까요? 한 번 선택한 인형은 바꿀 수 없어요 From fb3d90c35969732b8a032be746a550caf50091a4 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Mon, 15 Jan 2024 23:31:15 +0900 Subject: [PATCH 08/22] =?UTF-8?q?#54=20[chore]=20CI=20=EA=B3=B5=EB=B0=B1?= =?UTF-8?q?=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt | 1 - .../softie/ui/happyroutine/progress/HappyProgressFragment.kt | 1 - 2 files changed, 2 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt index ef9a5eb4..0df742a8 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt @@ -27,7 +27,6 @@ class HappyDeleteFragment : setCardEnter() setCancelEnter() setClearEnter(routineId) - //initSetRoutineDelete() } private fun setCardBinding(happyDelete: HappyProgress) { diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt index fb6dc945..c5bacb70 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt @@ -70,7 +70,6 @@ class HappyProgressFragment : private fun setClearEnter() { binding.btnHappyProgressClear.setOnClickListener { - } } } From 164053d00b2d63ffeb26d4b395abd63d06a8f3f7 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Mon, 15 Jan 2024 23:32:44 +0900 Subject: [PATCH 09/22] =?UTF-8?q?#54=20[chore]=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../progress/HappyProgressViewModel.kt | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressViewModel.kt index d2b68d8e..63992208 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressViewModel.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressViewModel.kt @@ -1,7 +1,5 @@ package com.sopetit.softie.ui.happyroutine.progress -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.sopetit.softie.R import com.sopetit.softie.domain.entity.HappyProgress @@ -18,16 +16,4 @@ class HappyProgressViewModel : ViewModel() { detailTime = "5~10분", detailPlace = "회사 옥상, 점심식사 후 돌아가는 길" ) - - private val _isDeleteView: MutableLiveData = MutableLiveData(false) - val isDeleteView: LiveData - get() = _isDeleteView - - fun setDeleteView(deleteEnabled: Boolean) { - _isDeleteView.value = deleteEnabled - } - - private val _isEditBtnEnabled: MutableLiveData = MutableLiveData() - val isEditBtnEnabled: LiveData - get() = _isEditBtnEnabled } From 147be9f9b4fbed96613d64c298993db1a17e7102 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Tue, 16 Jan 2024 03:20:07 +0900 Subject: [PATCH 10/22] =?UTF-8?q?#64=20[feat]=20=ED=96=89=EB=B3=B5?= =?UTF-8?q?=EB=A3=A8=ED=8B=B4=20=EB=AA=A9=EB=A1=9D=20=EC=B9=A9=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=ED=86=B5=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/entity/response/HappyChipResponse.kt | 25 +++++++++++++++++++ .../HappinessRoutineRepositoryImpl.kt | 15 +++++++++++ .../data/service/HappinessRoutineService.kt | 10 ++++++++ .../data/source/HappinessRoutineDataSource.kt | 13 ++++++++++ .../com/sopetit/softie/di/RepositoryModule.kt | 8 ++++++ .../softie/di/RetrofitServiceModule.kt | 5 ++++ .../repository/HappinessRoutineRepository.kt | 7 ++++++ .../domain/usecase/GetHappyChipUseCase.kt | 10 ++++++++ 8 files changed, 93 insertions(+) create mode 100644 app/src/main/java/com/sopetit/softie/data/entity/response/HappyChipResponse.kt create mode 100644 app/src/main/java/com/sopetit/softie/data/repositoryImpl/HappinessRoutineRepositoryImpl.kt create mode 100644 app/src/main/java/com/sopetit/softie/data/service/HappinessRoutineService.kt create mode 100644 app/src/main/java/com/sopetit/softie/data/source/HappinessRoutineDataSource.kt create mode 100644 app/src/main/java/com/sopetit/softie/domain/repository/HappinessRoutineRepository.kt create mode 100644 app/src/main/java/com/sopetit/softie/domain/usecase/GetHappyChipUseCase.kt diff --git a/app/src/main/java/com/sopetit/softie/data/entity/response/HappyChipResponse.kt b/app/src/main/java/com/sopetit/softie/data/entity/response/HappyChipResponse.kt new file mode 100644 index 00000000..b7535dd9 --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/data/entity/response/HappyChipResponse.kt @@ -0,0 +1,25 @@ +package com.sopetit.softie.data.entity.response + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class HappyChipResponse( + @SerialName("themes") + val themes: List +) { + @Serializable + data class HappyChip( + @SerialName("themeId") + val themeId: Int, + @SerialName("name") + val name: String, + ) + + fun toHappyChip() = themes.map { happychip -> + com.sopetit.softie.domain.entity.HappyChip( + themeId = happychip.themeId, + name = happychip.name, + ) + } +} diff --git a/app/src/main/java/com/sopetit/softie/data/repositoryImpl/HappinessRoutineRepositoryImpl.kt b/app/src/main/java/com/sopetit/softie/data/repositoryImpl/HappinessRoutineRepositoryImpl.kt new file mode 100644 index 00000000..28843082 --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/data/repositoryImpl/HappinessRoutineRepositoryImpl.kt @@ -0,0 +1,15 @@ +package com.sopetit.softie.data.repositoryImpl + +import com.sopetit.softie.data.source.HappinessRoutineDataSource +import com.sopetit.softie.domain.entity.HappyChip +import com.sopetit.softie.domain.repository.HappinessRoutineRepository +import javax.inject.Inject + +class HappinessRoutineRepositoryImpl @Inject constructor( + private val happinessRoutineDataSource: HappinessRoutineDataSource +) : HappinessRoutineRepository { + override suspend fun getHappyChip(): Result> = + runCatching { happinessRoutineDataSource.getHappyChip() }.map { response -> + requireNotNull(response.data).toHappyChip() + } +} diff --git a/app/src/main/java/com/sopetit/softie/data/service/HappinessRoutineService.kt b/app/src/main/java/com/sopetit/softie/data/service/HappinessRoutineService.kt new file mode 100644 index 00000000..14d005a9 --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/data/service/HappinessRoutineService.kt @@ -0,0 +1,10 @@ +package com.sopetit.softie.data.service + +import com.sopetit.softie.data.entity.BaseResponse +import com.sopetit.softie.data.entity.response.HappyChipResponse +import retrofit2.http.GET + +interface HappinessRoutineService { + @GET("api/v1/routines/happiness/themes") + suspend fun getHappyChip(): BaseResponse +} diff --git a/app/src/main/java/com/sopetit/softie/data/source/HappinessRoutineDataSource.kt b/app/src/main/java/com/sopetit/softie/data/source/HappinessRoutineDataSource.kt new file mode 100644 index 00000000..95e209c7 --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/data/source/HappinessRoutineDataSource.kt @@ -0,0 +1,13 @@ +package com.sopetit.softie.data.source + +import com.sopetit.softie.data.entity.BaseResponse +import com.sopetit.softie.data.entity.response.HappyChipResponse +import com.sopetit.softie.data.service.HappinessRoutineService +import javax.inject.Inject + +class HappinessRoutineDataSource @Inject constructor( + private val happinessRoutineService: HappinessRoutineService +) { + suspend fun getHappyChip(): BaseResponse = + happinessRoutineService.getHappyChip() +} diff --git a/app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt b/app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt index 46455174..47a0d8f9 100644 --- a/app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt +++ b/app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt @@ -1,6 +1,8 @@ package com.sopetit.softie.di +import com.sopetit.softie.data.repositoryImpl.HappinessRoutineRepositoryImpl import com.sopetit.softie.data.repositoryImpl.MemberRepositoryImpl +import com.sopetit.softie.domain.repository.HappinessRoutineRepository import com.sopetit.softie.domain.repository.MemberRepository import dagger.Binds import dagger.Module @@ -16,4 +18,10 @@ abstract class RepositoryModule { abstract fun bindToMemberRepository( memberRepositoryImpl: MemberRepositoryImpl ): MemberRepository + + @Binds + @Singleton + abstract fun bindToHappinessRoutineRepository( + happinessRoutineRepositoryImpl: HappinessRoutineRepositoryImpl + ): HappinessRoutineRepository } diff --git a/app/src/main/java/com/sopetit/softie/di/RetrofitServiceModule.kt b/app/src/main/java/com/sopetit/softie/di/RetrofitServiceModule.kt index 637d99c3..2c8d4089 100644 --- a/app/src/main/java/com/sopetit/softie/di/RetrofitServiceModule.kt +++ b/app/src/main/java/com/sopetit/softie/di/RetrofitServiceModule.kt @@ -1,5 +1,6 @@ package com.sopetit.softie.di +import com.sopetit.softie.data.service.HappinessRoutineService import com.sopetit.softie.data.service.MemberService import dagger.Module import dagger.Provides @@ -13,4 +14,8 @@ object RetrofitServiceModule { @Provides fun providesMemberService(@RetrofitModule.SoftieType retrofit: Retrofit): MemberService = retrofit.create(MemberService::class.java) + + @Provides + fun providesHappinessRoutineService(@RetrofitModule.SoftieType retrofit: Retrofit): HappinessRoutineService = + retrofit.create(HappinessRoutineService::class.java) } diff --git a/app/src/main/java/com/sopetit/softie/domain/repository/HappinessRoutineRepository.kt b/app/src/main/java/com/sopetit/softie/domain/repository/HappinessRoutineRepository.kt new file mode 100644 index 00000000..41fa997f --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/domain/repository/HappinessRoutineRepository.kt @@ -0,0 +1,7 @@ +package com.sopetit.softie.domain.repository + +import com.sopetit.softie.domain.entity.HappyChip + +interface HappinessRoutineRepository { + suspend fun getHappyChip(): Result> +} diff --git a/app/src/main/java/com/sopetit/softie/domain/usecase/GetHappyChipUseCase.kt b/app/src/main/java/com/sopetit/softie/domain/usecase/GetHappyChipUseCase.kt new file mode 100644 index 00000000..6680e326 --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/domain/usecase/GetHappyChipUseCase.kt @@ -0,0 +1,10 @@ +package com.sopetit.softie.domain.usecase + +import com.sopetit.softie.domain.repository.HappinessRoutineRepository +import javax.inject.Inject + +class GetHappyChipUseCase @Inject constructor( + private val happinessRoutineRepository: HappinessRoutineRepository +) { + suspend operator fun invoke() = happinessRoutineRepository.getHappyChip() +} From acc3d3b6eedde122607244787dae4636bbbfb277 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Tue, 16 Jan 2024 03:23:28 +0900 Subject: [PATCH 11/22] =?UTF-8?q?#64=20[feat]=20=EC=B9=A9=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=ED=86=B5=EC=8B=A0=20=EB=A6=AC=EC=8A=A4=ED=8F=B0?= =?UTF-8?q?=EC=8A=A4=20=EB=B7=B0=EB=AA=A8=EB=8D=B8=EC=97=90=20=EA=B0=80?= =?UTF-8?q?=EC=A0=B8=EC=98=A4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../addlist/HappyAddListViewModel.kt | 91 +++++++++---------- 1 file changed, 43 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt index d8541b65..ea86b18b 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt @@ -3,34 +3,43 @@ package com.sopetit.softie.ui.happyroutine.addlist import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope import com.sopetit.softie.R import com.sopetit.softie.domain.entity.HappyChip import com.sopetit.softie.domain.entity.HappyContent +import com.sopetit.softie.domain.usecase.GetHappyChipUseCase +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch +import timber.log.Timber +import javax.inject.Inject -class HappyAddListViewModel : ViewModel() { - private val _mockHappyChipList = MutableLiveData>() - val mockHappyChipList: LiveData> = _mockHappyChipList +@HiltViewModel +class HappyAddListViewModel @Inject constructor( + private val getHappyChipUseCase: GetHappyChipUseCase +) : ViewModel() { + private val _happyChipResponse = MutableLiveData>() + val happyChipResponse: LiveData> get() = _happyChipResponse - private val _mockHappyContentList = MutableLiveData>() - val mockHappyContentList: LiveData> = _mockHappyContentList + private val _HappyContentList = MutableLiveData>() + val HappyContentList: LiveData> = _HappyContentList - private val _mockHappyContentListOne = MutableLiveData>() - val mockHappyContentListOne: LiveData> = _mockHappyContentListOne + private val _HappyContentListOne = MutableLiveData>() + val HappyContentListOne: LiveData> = _HappyContentListOne - private val _mockHappyContentListTwo = MutableLiveData>() - val mockHappyContentListTwo: LiveData> = _mockHappyContentListTwo + private val _HappyContentListTwo = MutableLiveData>() + val HappyContentListTwo: LiveData> = _HappyContentListTwo - private val _mockHappyContentListThree = MutableLiveData>() - val mockHappyContentListThree: LiveData> = _mockHappyContentListThree + private val _HappyContentListThree = MutableLiveData>() + val HappyContentListThree: LiveData> = _HappyContentListThree - private val _mockHappyContentListFour = MutableLiveData>() - val mockHappyContentListFour: LiveData> = _mockHappyContentListFour + private val _HappyContentListFour = MutableLiveData>() + val HappyContentListFour: LiveData> = _HappyContentListFour - private val _mockHappyContentListFive = MutableLiveData>() - val mockHappyContentListFive: LiveData> = _mockHappyContentListFive + private val _HappyContentListFive = MutableLiveData>() + val HappyContentListFive: LiveData> = _HappyContentListFive init { - _mockHappyContentList.value = listOf( + _HappyContentList.value = listOf( HappyContent( routineId = 1, title = "관계쌓기", @@ -75,34 +84,7 @@ class HappyAddListViewModel : ViewModel() { ) ) - _mockHappyChipList.value = listOf( - HappyChip( - themeId = 1, - name = "전체" - ), - HappyChip( - themeId = 2, - name = "관계쌓기" - ), - HappyChip( - themeId = 3, - name = "한 걸음 성장" - ), - HappyChip( - themeId = 4, - name = "잘 쉬어가기" - ), - HappyChip( - themeId = 5, - name = "새로운 나" - ), - HappyChip( - themeId = 6, - name = "마음 챙김" - ) - ) - - _mockHappyContentListOne.value = listOf( + _HappyContentListOne.value = listOf( HappyContent( routineId = 1, title = "관계쌓기", @@ -117,7 +99,7 @@ class HappyAddListViewModel : ViewModel() { ) ) - _mockHappyContentListTwo.value = listOf( + _HappyContentListTwo.value = listOf( HappyContent( routineId = 3, title = "한 걸음 성장", @@ -132,7 +114,7 @@ class HappyAddListViewModel : ViewModel() { ) ) - _mockHappyContentListThree.value = listOf( + _HappyContentListThree.value = listOf( HappyContent( routineId = 5, title = "잘 쉬어가기", @@ -141,7 +123,7 @@ class HappyAddListViewModel : ViewModel() { ) ) - _mockHappyContentListFour.value = listOf( + _HappyContentListFour.value = listOf( HappyContent( routineId = 6, title = "새로운 나", @@ -150,7 +132,7 @@ class HappyAddListViewModel : ViewModel() { ) ) - _mockHappyContentListFive.value = listOf( + _HappyContentListFive.value = listOf( HappyContent( routineId = 7, title = "마음 챙김", @@ -159,4 +141,17 @@ class HappyAddListViewModel : ViewModel() { ) ) } + + fun getHappyChip() { + viewModelScope.launch { + getHappyChipUseCase() + .onSuccess { response -> + _happyChipResponse.value = response + } + .onFailure { throwable -> + Timber.e("$throwable") + } + } + } + } From 872b2907cad43034ebc4fa0dc372e1f3c81668ef Mon Sep 17 00:00:00 2001 From: pump9918 Date: Tue, 16 Jan 2024 03:24:11 +0900 Subject: [PATCH 12/22] =?UTF-8?q?#64=20[feat]=20null=20->=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=ED=86=B5=EC=8B=A0=20=EB=B7=B0=EB=AA=A8=EB=8D=B8=20?= =?UTF-8?q?=EC=98=B5=EC=A0=80=EB=B2=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../addlist/HappyAddListActivity.kt | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt index 934cd48a..8e836ea6 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt @@ -33,13 +33,17 @@ class HappyAddListActivity : setContentView(binding.root) setStatusBarColorFromResource(R.color.background) + binding.viewModel = viewModel + viewModel.getHappyChip() + setChipAdapters() setBackEnter() setItemDeco() - setupAdapter(themeId) + setupAdapter() } private fun setChipAdapters() { + viewModel.getHappyChip() happyAddListChipContentAdapter = HappyAddListChipContentAdapter() happyAddListContentAdapter = HappyAddListContentAdapter(::moveToDetail) } @@ -57,26 +61,30 @@ class HappyAddListActivity : binding.rvHappyAddListChip.addItemDecoration(chipDeco) } - private fun setupAdapter(themeId: Int) { + private fun setupAdapter() { + with(binding) { rvHappyAddListChip.adapter = happyAddListChipContentAdapter rvHappyAddList.adapter = happyAddListContentAdapter } - happyAddListChipContentAdapter?.submitList(viewModel.mockHappyChipList.value) - happyAddListContentAdapter?.submitList(viewModel.mockHappyContentList.value) + viewModel.happyChipResponse.observe(this) { + happyAddListChipContentAdapter?.submitList(viewModel.happyChipResponse.value) + } +// happyAddListChipContentAdapter?.submitList(viewModel.happyChipResponse.value) + happyAddListContentAdapter?.submitList(viewModel.HappyContentList.value) happyAddListChipContentAdapter?.setOnChipClickListener { handleChipClick(it.themeId) } } private fun handleChipClick(themeId: Int) { val listToSubmit = when (themeId) { - 1 -> viewModel.mockHappyContentList.value - 2 -> viewModel.mockHappyContentListOne.value - 3 -> viewModel.mockHappyContentListTwo.value - 4 -> viewModel.mockHappyContentListThree.value - 5 -> viewModel.mockHappyContentListFour.value - 6 -> viewModel.mockHappyContentListFive.value - else -> viewModel.mockHappyContentList.value + 1 -> viewModel.HappyContentList.value + 2 -> viewModel.HappyContentListOne.value + 3 -> viewModel.HappyContentListTwo.value + 4 -> viewModel.HappyContentListThree.value + 5 -> viewModel.HappyContentListFour.value + 6 -> viewModel.HappyContentListFive.value + else -> viewModel.HappyContentList.value } listToSubmit?.let { makeSubmitList(it) } From 8887a98d1b5dbe61e9e97d14ee0982aa82ff5603 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Tue, 16 Jan 2024 03:25:28 +0900 Subject: [PATCH 13/22] =?UTF-8?q?#64=20[chore]=20xml=20=EB=B7=B0=EB=AA=A8?= =?UTF-8?q?=EB=8D=B8=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../softie/ui/happyroutine/addlist/HappyAddListActivity.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt index 8e836ea6..62583d18 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt @@ -33,7 +33,6 @@ class HappyAddListActivity : setContentView(binding.root) setStatusBarColorFromResource(R.color.background) - binding.viewModel = viewModel viewModel.getHappyChip() setChipAdapters() From 7d569041fbeadc7149274e48a9010e424b7a7d70 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Tue, 16 Jan 2024 12:11:46 +0900 Subject: [PATCH 14/22] =?UTF-8?q?#64=20[ui]=20API=EB=AA=85=EC=84=B8?= =?UTF-8?q?=EC=84=9C=20=EC=88=98=EC=A0=95=EC=97=90=20=EB=94=B0=EB=A5=B8=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../softie/domain/entity/HappyContent.kt | 7 +- .../addlist/HappyAddListContentAdapter.kt | 9 +- .../addlist/HappyAddListViewModel.kt | 99 +++++++++++-------- 3 files changed, 65 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/domain/entity/HappyContent.kt b/app/src/main/java/com/sopetit/softie/domain/entity/HappyContent.kt index f5b2e63f..0ab2f4b6 100644 --- a/app/src/main/java/com/sopetit/softie/domain/entity/HappyContent.kt +++ b/app/src/main/java/com/sopetit/softie/domain/entity/HappyContent.kt @@ -1,10 +1,9 @@ package com.sopetit.softie.domain.entity -import androidx.annotation.DrawableRes - data class HappyContent( val routineId: Int, + val name: String, + val nameColor: String, val title: String, - val content: String, - @DrawableRes val imageUrl: Int, + val iconImageUrl: String, ) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListContentAdapter.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListContentAdapter.kt index 4b1323f9..a4cbd24a 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListContentAdapter.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListContentAdapter.kt @@ -1,9 +1,11 @@ package com.sopetit.softie.ui.happyroutine.addlist +import android.graphics.Color import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView +import coil.load import com.sopetit.softie.databinding.ItemHappyAddListBinding import com.sopetit.softie.domain.entity.HappyContent import com.sopetit.softie.util.ItemDiffCallback @@ -22,9 +24,10 @@ class HappyAddListContentAdapter(private val moveToDetail: (Int) -> Unit) : ) : RecyclerView.ViewHolder(binding.root) { fun onBind(data: HappyContent) { - binding.tvHappyListItemTitle.text = data.title - binding.tvHappyListItemContent.text = data.content - binding.ivHappyListItemIcon.setImageResource(data.imageUrl) + binding.tvHappyListItemTitle.text = data.name + binding.tvHappyListItemTitle.setTextColor(Color.parseColor(data.nameColor)) + binding.tvHappyListItemContent.text = data.title + binding.ivHappyListItemIcon.load(data.iconImageUrl) binding.root.setOnClickListener { moveToDetail(data.routineId) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt index ea86b18b..f22f8298 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt @@ -4,7 +4,6 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.sopetit.softie.R import com.sopetit.softie.domain.entity.HappyChip import com.sopetit.softie.domain.entity.HappyContent import com.sopetit.softie.domain.usecase.GetHappyChipUseCase @@ -42,102 +41,116 @@ class HappyAddListViewModel @Inject constructor( _HappyContentList.value = listOf( HappyContent( routineId = 1, - title = "관계쌓기", - content = "성숙한 사랑을 만나기 위한", - imageUrl = R.drawable.ic_happy_red + name = "관계쌓기", + nameColor = "#FFFF5D76", + title = "성숙한 사랑을 만나기 위한", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/relationship/icon.svg" ), HappyContent( routineId = 2, - title = "관계쌓기", - content = "진정성 있는 관계를 만드는", - imageUrl = R.drawable.ic_happy_red + name = "관계쌓기", + nameColor = "#FFFF5D76", + title = "진정성 있는 관계를 만드는", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/relationship/icon.svg" ), HappyContent( routineId = 3, - title = "한 걸음 성장", - content = "나를 알고 진짜 목표를 세우는", - imageUrl = R.drawable.ic_happy_orange + name = "한 걸음 성장", + nameColor = "#FFF27400", + title = "나를 알고 진짜 목표를 세우는", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/one_more_growth/icon.svg" ), HappyContent( routineId = 4, - title = "한 걸음 성장", - content = "좋아하는, 잘하는 일을 찾아 가는", - imageUrl = R.drawable.ic_happy_orange + name = "한 걸음 성장", + nameColor = "#FFF27400", + title = "좋아하는, 잘하는 일을 찾아 가는", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/one_more_growth/icon.svg" ), HappyContent( routineId = 5, - title = "잘 쉬어가기", - content = "데이터가 아직 없습니다", - imageUrl = R.drawable.ic_happy_green + name = "잘 쉬어가기", + nameColor = "#FF3DB96F", + title = "데이터가 아직 없습니다", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/good_rest/icon.svg" ), HappyContent( routineId = 6, - title = "새로운 나", - content = "나를 알고 진짜 목표를 세우는", - imageUrl = R.drawable.ic_happy_blue + name = "새로운 나", + nameColor = "#FF7B89D1", + title = "나를 알고 진짜 목표를 세우는", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/new_myself/icon.svg" ), HappyContent( routineId = 7, - title = "마음 챙김", - content = "데이터가 아직 없습니다", - imageUrl = R.drawable.ic_happy_purple + name = "마음 챙김", + nameColor = "#FFBC73E6", + title = "데이터가 아직 없습니다", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/mindfulness/icon.svg" ) ) _HappyContentListOne.value = listOf( HappyContent( routineId = 1, - title = "관계쌓기", - content = "성숙한 사랑을 만나기 위한", - imageUrl = R.drawable.ic_happy_red + name = "관계쌓기", + nameColor = "#FFFF5D76", + title = "성숙한 사랑을 만나기 위한", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/relationship/icon.svg" ), HappyContent( routineId = 2, - title = "관계쌓기", - content = "진정성 있는 관계를 만드는", - imageUrl = R.drawable.ic_happy_red + name = "관계쌓기", + nameColor = "#FFFF5D76", + title = "진정성 있는 관계를 만드는", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/relationship/icon.svg" ) ) _HappyContentListTwo.value = listOf( HappyContent( routineId = 3, - title = "한 걸음 성장", - content = "나를 알고 진짜 목표를 세우는", - imageUrl = R.drawable.ic_happy_orange + name = "한 걸음 성장", + nameColor = "#FFF27400", + title = "나를 알고 진짜 목표를 세우는", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/one_more_growth/icon.svg" ), HappyContent( routineId = 4, - title = "한 걸음 성장", - content = "좋아하는, 잘하는 일을 찾아 가는", - imageUrl = R.drawable.ic_happy_orange + name = "한 걸음 성장", + nameColor = "#FFF27400", + title = "좋아하는, 잘하는 일을 찾아 가는", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/one_more_growth/icon.svg" ) ) _HappyContentListThree.value = listOf( HappyContent( routineId = 5, - title = "잘 쉬어가기", - content = "데이터가 아직 없습니다", - imageUrl = R.drawable.ic_happy_green + name = "잘 쉬어가기", + nameColor = "#FF3DB96F", + title = "데이터가 아직 없습니다", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/good_rest/icon.svg" ) ) _HappyContentListFour.value = listOf( HappyContent( routineId = 6, - title = "새로운 나", - content = "나를 알고 진짜 목표를 세우는", - imageUrl = R.drawable.ic_happy_blue + name = "새로운 나", + nameColor = "#FF7B89D1", + title = "나를 알고 진짜 목표를 세우는", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/new_myself/icon.svg" ) ) _HappyContentListFive.value = listOf( HappyContent( routineId = 7, - title = "마음 챙김", - content = "데이터가 아직 없습니다", - imageUrl = R.drawable.ic_happy_purple + name = "마음 챙김", + nameColor = "#FFBC73E6", + title = "데이터가 아직 없습니다", + iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/mindfulness/icon.svg" ) ) } From 5b43ef948b8dbf4e232b1dd21d34a73a2a08c8fc Mon Sep 17 00:00:00 2001 From: pump9918 Date: Tue, 16 Jan 2024 14:05:21 +0900 Subject: [PATCH 15/22] =?UTF-8?q?#64=20[feat]=20=ED=85=8C=EB=A7=88?= =?UTF-8?q?=EB=B3=84=20=ED=96=89=EB=B3=B5=EB=A3=A8=ED=8B=B4=20=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/response/HappyContentResponse.kt | 34 +++++++++++++++++++ .../HappinessRoutineRepositoryImpl.kt | 6 ++++ .../data/service/HappinessRoutineService.kt | 7 ++++ .../data/source/HappinessRoutineDataSource.kt | 4 +++ .../repository/HappinessRoutineRepository.kt | 2 ++ .../domain/usecase/GetHappyContentUseCase.kt | 11 ++++++ 6 files changed, 64 insertions(+) create mode 100644 app/src/main/java/com/sopetit/softie/data/entity/response/HappyContentResponse.kt create mode 100644 app/src/main/java/com/sopetit/softie/domain/usecase/GetHappyContentUseCase.kt diff --git a/app/src/main/java/com/sopetit/softie/data/entity/response/HappyContentResponse.kt b/app/src/main/java/com/sopetit/softie/data/entity/response/HappyContentResponse.kt new file mode 100644 index 00000000..cc305a4c --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/data/entity/response/HappyContentResponse.kt @@ -0,0 +1,34 @@ +package com.sopetit.softie.data.entity.response + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class HappyContentResponse( + @SerialName("routines") + val routines: List +) { + @Serializable + data class HappyContent( + @SerialName("routineId") + val routineId: Int, + @SerialName("name") + val name: String, + @SerialName("nameColor") + val nameColor: String, + @SerialName("title") + val title: String, + @SerialName("iconImageUrl") + val iconImageUrl: String + ) + + fun toHappyContent() = routines.map { happycontent -> + com.sopetit.softie.domain.entity.HappyContent( + routineId = happycontent.routineId, + name = happycontent.name, + nameColor = happycontent.nameColor, + title = happycontent.title, + iconImageUrl = happycontent.iconImageUrl + ) + } +} diff --git a/app/src/main/java/com/sopetit/softie/data/repositoryImpl/HappinessRoutineRepositoryImpl.kt b/app/src/main/java/com/sopetit/softie/data/repositoryImpl/HappinessRoutineRepositoryImpl.kt index 28843082..b2eddc9f 100644 --- a/app/src/main/java/com/sopetit/softie/data/repositoryImpl/HappinessRoutineRepositoryImpl.kt +++ b/app/src/main/java/com/sopetit/softie/data/repositoryImpl/HappinessRoutineRepositoryImpl.kt @@ -2,6 +2,7 @@ package com.sopetit.softie.data.repositoryImpl import com.sopetit.softie.data.source.HappinessRoutineDataSource import com.sopetit.softie.domain.entity.HappyChip +import com.sopetit.softie.domain.entity.HappyContent import com.sopetit.softie.domain.repository.HappinessRoutineRepository import javax.inject.Inject @@ -12,4 +13,9 @@ class HappinessRoutineRepositoryImpl @Inject constructor( runCatching { happinessRoutineDataSource.getHappyChip() }.map { response -> requireNotNull(response.data).toHappyChip() } + + override suspend fun getHappyContent(themeId: Int): Result> = + runCatching { happinessRoutineDataSource.getHappyContent(themeId) }.map { response -> + requireNotNull(response.data).toHappyContent() + } } diff --git a/app/src/main/java/com/sopetit/softie/data/service/HappinessRoutineService.kt b/app/src/main/java/com/sopetit/softie/data/service/HappinessRoutineService.kt index 14d005a9..24a86689 100644 --- a/app/src/main/java/com/sopetit/softie/data/service/HappinessRoutineService.kt +++ b/app/src/main/java/com/sopetit/softie/data/service/HappinessRoutineService.kt @@ -2,9 +2,16 @@ package com.sopetit.softie.data.service import com.sopetit.softie.data.entity.BaseResponse import com.sopetit.softie.data.entity.response.HappyChipResponse +import com.sopetit.softie.data.entity.response.HappyContentResponse import retrofit2.http.GET +import retrofit2.http.Query interface HappinessRoutineService { @GET("api/v1/routines/happiness/themes") suspend fun getHappyChip(): BaseResponse + + @GET("api/v1/routines/happiness") + suspend fun getHappyContent( + @Query("themeId") themeId: Int + ): BaseResponse } diff --git a/app/src/main/java/com/sopetit/softie/data/source/HappinessRoutineDataSource.kt b/app/src/main/java/com/sopetit/softie/data/source/HappinessRoutineDataSource.kt index 95e209c7..b527cec9 100644 --- a/app/src/main/java/com/sopetit/softie/data/source/HappinessRoutineDataSource.kt +++ b/app/src/main/java/com/sopetit/softie/data/source/HappinessRoutineDataSource.kt @@ -2,6 +2,7 @@ package com.sopetit.softie.data.source import com.sopetit.softie.data.entity.BaseResponse import com.sopetit.softie.data.entity.response.HappyChipResponse +import com.sopetit.softie.data.entity.response.HappyContentResponse import com.sopetit.softie.data.service.HappinessRoutineService import javax.inject.Inject @@ -10,4 +11,7 @@ class HappinessRoutineDataSource @Inject constructor( ) { suspend fun getHappyChip(): BaseResponse = happinessRoutineService.getHappyChip() + + suspend fun getHappyContent(themeId: Int): BaseResponse = + happinessRoutineService.getHappyContent(themeId) } diff --git a/app/src/main/java/com/sopetit/softie/domain/repository/HappinessRoutineRepository.kt b/app/src/main/java/com/sopetit/softie/domain/repository/HappinessRoutineRepository.kt index 41fa997f..bf963fa7 100644 --- a/app/src/main/java/com/sopetit/softie/domain/repository/HappinessRoutineRepository.kt +++ b/app/src/main/java/com/sopetit/softie/domain/repository/HappinessRoutineRepository.kt @@ -1,7 +1,9 @@ package com.sopetit.softie.domain.repository import com.sopetit.softie.domain.entity.HappyChip +import com.sopetit.softie.domain.entity.HappyContent interface HappinessRoutineRepository { suspend fun getHappyChip(): Result> + suspend fun getHappyContent(themeId: Int): Result> } diff --git a/app/src/main/java/com/sopetit/softie/domain/usecase/GetHappyContentUseCase.kt b/app/src/main/java/com/sopetit/softie/domain/usecase/GetHappyContentUseCase.kt new file mode 100644 index 00000000..fc7b5693 --- /dev/null +++ b/app/src/main/java/com/sopetit/softie/domain/usecase/GetHappyContentUseCase.kt @@ -0,0 +1,11 @@ +package com.sopetit.softie.domain.usecase + +import com.sopetit.softie.domain.repository.HappinessRoutineRepository +import javax.inject.Inject + +class GetHappyContentUseCase @Inject constructor( + private val happinessRoutineRepository: HappinessRoutineRepository +) { + suspend operator fun invoke(themeId: Int) = + happinessRoutineRepository.getHappyContent(themeId) +} From 67e6f024d45c815c4a2163df3fbc8f1624236259 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Tue, 16 Jan 2024 14:13:59 +0900 Subject: [PATCH 16/22] =?UTF-8?q?#64=20[feat]=20=EB=B7=B0=EB=AA=A8?= =?UTF-8?q?=EB=8D=B8=20=EB=B0=8F=20=EC=95=A1=ED=8B=B0=EB=B9=84=ED=8B=B0=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=20=EA=B7=9C=EA=B2=A9=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../addlist/HappyAddListActivity.kt | 31 +--- .../addlist/HappyAddListViewModel.kt | 152 ++---------------- 2 files changed, 21 insertions(+), 162 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt index 62583d18..1d5a3d47 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListActivity.kt @@ -6,7 +6,6 @@ import androidx.activity.viewModels import androidx.recyclerview.widget.RecyclerView import com.sopetit.softie.R import com.sopetit.softie.databinding.ActivityHappyAddListBinding -import com.sopetit.softie.domain.entity.HappyContent import com.sopetit.softie.ui.happyroutine.adddetail.HappyDetailActivity import com.sopetit.softie.util.HorizontalChipItemDecoration import com.sopetit.softie.util.VerticalItemDecoration @@ -25,8 +24,6 @@ class HappyAddListActivity : private var happyAddListChipContentAdapter: HappyAddListChipContentAdapter? = null private var happyAddListContentAdapter: HappyAddListContentAdapter? = null - private val themeId = 0 - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityHappyAddListBinding.inflate(layoutInflater) @@ -42,7 +39,6 @@ class HappyAddListActivity : } private fun setChipAdapters() { - viewModel.getHappyChip() happyAddListChipContentAdapter = HappyAddListChipContentAdapter() happyAddListContentAdapter = HappyAddListContentAdapter(::moveToDetail) } @@ -61,7 +57,6 @@ class HappyAddListActivity : } private fun setupAdapter() { - with(binding) { rvHappyAddListChip.adapter = happyAddListChipContentAdapter rvHappyAddList.adapter = happyAddListContentAdapter @@ -69,28 +64,12 @@ class HappyAddListActivity : viewModel.happyChipResponse.observe(this) { happyAddListChipContentAdapter?.submitList(viewModel.happyChipResponse.value) } -// happyAddListChipContentAdapter?.submitList(viewModel.happyChipResponse.value) - happyAddListContentAdapter?.submitList(viewModel.HappyContentList.value) - - happyAddListChipContentAdapter?.setOnChipClickListener { handleChipClick(it.themeId) } - } - - private fun handleChipClick(themeId: Int) { - val listToSubmit = when (themeId) { - 1 -> viewModel.HappyContentList.value - 2 -> viewModel.HappyContentListOne.value - 3 -> viewModel.HappyContentListTwo.value - 4 -> viewModel.HappyContentListThree.value - 5 -> viewModel.HappyContentListFour.value - 6 -> viewModel.HappyContentListFive.value - else -> viewModel.HappyContentList.value + viewModel.happyContentResponse.observe(this) { + happyAddListContentAdapter?.submitList(viewModel.happyContentResponse.value) + } + happyAddListChipContentAdapter?.setOnChipClickListener { + viewModel.getHappyContent(it.themeId) } - - listToSubmit?.let { makeSubmitList(it) } - } - - private fun makeSubmitList(list: List) { - happyAddListContentAdapter?.submitList(list) } private fun moveToDetail(id: Int) { diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt index f22f8298..f59255b3 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/addlist/HappyAddListViewModel.kt @@ -7,6 +7,7 @@ import androidx.lifecycle.viewModelScope import com.sopetit.softie.domain.entity.HappyChip import com.sopetit.softie.domain.entity.HappyContent import com.sopetit.softie.domain.usecase.GetHappyChipUseCase +import com.sopetit.softie.domain.usecase.GetHappyContentUseCase import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import timber.log.Timber @@ -14,146 +15,14 @@ import javax.inject.Inject @HiltViewModel class HappyAddListViewModel @Inject constructor( - private val getHappyChipUseCase: GetHappyChipUseCase + private val getHappyChipUseCase: GetHappyChipUseCase, + private val getHappyContentUseCase: GetHappyContentUseCase ) : ViewModel() { private val _happyChipResponse = MutableLiveData>() val happyChipResponse: LiveData> get() = _happyChipResponse - private val _HappyContentList = MutableLiveData>() - val HappyContentList: LiveData> = _HappyContentList - - private val _HappyContentListOne = MutableLiveData>() - val HappyContentListOne: LiveData> = _HappyContentListOne - - private val _HappyContentListTwo = MutableLiveData>() - val HappyContentListTwo: LiveData> = _HappyContentListTwo - - private val _HappyContentListThree = MutableLiveData>() - val HappyContentListThree: LiveData> = _HappyContentListThree - - private val _HappyContentListFour = MutableLiveData>() - val HappyContentListFour: LiveData> = _HappyContentListFour - - private val _HappyContentListFive = MutableLiveData>() - val HappyContentListFive: LiveData> = _HappyContentListFive - - init { - _HappyContentList.value = listOf( - HappyContent( - routineId = 1, - name = "관계쌓기", - nameColor = "#FFFF5D76", - title = "성숙한 사랑을 만나기 위한", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/relationship/icon.svg" - ), - HappyContent( - routineId = 2, - name = "관계쌓기", - nameColor = "#FFFF5D76", - title = "진정성 있는 관계를 만드는", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/relationship/icon.svg" - ), - HappyContent( - routineId = 3, - name = "한 걸음 성장", - nameColor = "#FFF27400", - title = "나를 알고 진짜 목표를 세우는", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/one_more_growth/icon.svg" - ), - HappyContent( - routineId = 4, - name = "한 걸음 성장", - nameColor = "#FFF27400", - title = "좋아하는, 잘하는 일을 찾아 가는", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/one_more_growth/icon.svg" - ), - HappyContent( - routineId = 5, - name = "잘 쉬어가기", - nameColor = "#FF3DB96F", - title = "데이터가 아직 없습니다", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/good_rest/icon.svg" - ), - HappyContent( - routineId = 6, - name = "새로운 나", - nameColor = "#FF7B89D1", - title = "나를 알고 진짜 목표를 세우는", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/new_myself/icon.svg" - ), - HappyContent( - routineId = 7, - name = "마음 챙김", - nameColor = "#FFBC73E6", - title = "데이터가 아직 없습니다", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/mindfulness/icon.svg" - ) - ) - - _HappyContentListOne.value = listOf( - HappyContent( - routineId = 1, - name = "관계쌓기", - nameColor = "#FFFF5D76", - title = "성숙한 사랑을 만나기 위한", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/relationship/icon.svg" - ), - HappyContent( - routineId = 2, - name = "관계쌓기", - nameColor = "#FFFF5D76", - title = "진정성 있는 관계를 만드는", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/relationship/icon.svg" - ) - ) - - _HappyContentListTwo.value = listOf( - HappyContent( - routineId = 3, - name = "한 걸음 성장", - nameColor = "#FFF27400", - title = "나를 알고 진짜 목표를 세우는", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/one_more_growth/icon.svg" - ), - HappyContent( - routineId = 4, - name = "한 걸음 성장", - nameColor = "#FFF27400", - title = "좋아하는, 잘하는 일을 찾아 가는", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/one_more_growth/icon.svg" - ) - ) - - _HappyContentListThree.value = listOf( - HappyContent( - routineId = 5, - name = "잘 쉬어가기", - nameColor = "#FF3DB96F", - title = "데이터가 아직 없습니다", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/good_rest/icon.svg" - ) - ) - - _HappyContentListFour.value = listOf( - HappyContent( - routineId = 6, - name = "새로운 나", - nameColor = "#FF7B89D1", - title = "나를 알고 진짜 목표를 세우는", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/new_myself/icon.svg" - ) - ) - - _HappyContentListFive.value = listOf( - HappyContent( - routineId = 7, - name = "마음 챙김", - nameColor = "#FFBC73E6", - title = "데이터가 아직 없습니다", - iconImageUrl = "https://raw.githubusercontent.com/Team-Sopetit/sopetit-image/c13153794106845de32863a6ecd38dd05b9480fb/routine/happiness/icon/mindfulness/icon.svg" - ) - ) - } + private val _happyContentResponse = MutableLiveData>() + val happyContentResponse: LiveData> get() = _happyContentResponse fun getHappyChip() { viewModelScope.launch { @@ -167,4 +36,15 @@ class HappyAddListViewModel @Inject constructor( } } + fun getHappyContent(themeId: Int) { + viewModelScope.launch { + getHappyContentUseCase(themeId) + .onSuccess { response -> + _happyContentResponse.value = response + } + .onFailure { throwable -> + Timber.e("$throwable") + } + } + } } From 6b8f18d4dbfb10850336ef125df5ff2de61c0493 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Tue, 16 Jan 2024 14:53:09 +0900 Subject: [PATCH 17/22] =?UTF-8?q?#54=20[chore]=20xml=20=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=A7=81=20=EC=B6=94=EC=B6=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/fragment_happy_delete.xml | 2 +- app/src/main/res/values/strings.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/fragment_happy_delete.xml b/app/src/main/res/layout/fragment_happy_delete.xml index 7471c2b6..16651f14 100644 --- a/app/src/main/res/layout/fragment_happy_delete.xml +++ b/app/src/main/res/layout/fragment_happy_delete.xml @@ -237,7 +237,7 @@ android:layout_marginEnd="20dp" android:layout_marginBottom="34dp" android:background="@drawable/shape_red_fill_12_rect" - android:text="루틴을 삭제할래" + android:text="@string/happy_delete_button" android:textAppearance="@style/body1" android:textColor="@color/gray000" app:layout_constraintBottom_toBottomOf="parent" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9db202f5..4f6ad23d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -50,6 +50,7 @@ 취소 + 삭제하기 어떤 친구와 함께 할까요? From bd67a46433b4bd225db2ee02c5b5b9d21c3b79e0 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Wed, 17 Jan 2024 00:10:53 +0900 Subject: [PATCH 18/22] =?UTF-8?q?#54=20[chore]=20conflict=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../progress/HappyProgressFragment.kt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt index 75411774..ef18022d 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt @@ -6,7 +6,6 @@ import androidx.fragment.app.activityViewModels import com.sopetit.softie.R import com.sopetit.softie.databinding.FragmentHappyProgressBinding import com.sopetit.softie.domain.entity.HappyProgress -import com.sopetit.softie.ui.happyroutine.delete.HappyDeleteFragment import com.sopetit.softie.ui.happyroutine.HappyRoutineFragment import com.sopetit.softie.ui.main.home.HomeFragment import com.sopetit.softie.util.OriginalBottomSheet @@ -72,13 +71,6 @@ class HappyProgressFragment : } } - private fun setClearEnter() { - binding.btnHappyProgressClear.setOnClickListener { - } - initHappyRoutineCompleteBottomSheet() - } - } - private fun initHappyRoutineCompleteBottomSheet() { BindingBottomSheet.Builder().build( isDrawable = false, @@ -108,4 +100,11 @@ class HappyProgressFragment : .replace(R.id.fcv_main, happyRoutineFragment) .commit() } + + private fun setClearEnter() { + binding.btnHappyProgressClear.setOnClickListener { + } + initHappyRoutineCompleteBottomSheet() + } } + From 2a30117fb3d20866f8a7b4553ff3457facaadc43 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Wed, 17 Jan 2024 00:27:14 +0900 Subject: [PATCH 19/22] =?UTF-8?q?#54=20[chore]=20conflict=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/happyroutine/progress/HappyProgressFragment.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt index ef18022d..382f5e84 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt @@ -7,7 +7,7 @@ import com.sopetit.softie.R import com.sopetit.softie.databinding.FragmentHappyProgressBinding import com.sopetit.softie.domain.entity.HappyProgress import com.sopetit.softie.ui.happyroutine.HappyRoutineFragment -import com.sopetit.softie.ui.main.home.HomeFragment +import com.sopetit.softie.ui.happyroutine.delete.HappyDeleteFragment import com.sopetit.softie.util.OriginalBottomSheet import com.sopetit.softie.util.binding.BindingBottomSheet import com.sopetit.softie.util.binding.BindingFragment @@ -53,9 +53,9 @@ class HappyProgressFragment : private fun setEditEnter() { binding.tvHappyProgressEdit.setOnClickListener { - val homeFragment = HomeFragment() + val happyDeleteFragment = HappyDeleteFragment() requireActivity().supportFragmentManager.beginTransaction() - .replace(R.id.fcv_main, homeFragment) + .replace(R.id.fcv_main, happyDeleteFragment) .commit() } } From a494c5c297a4828411cc3d73847752f2a4847520 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Wed, 17 Jan 2024 00:42:51 +0900 Subject: [PATCH 20/22] =?UTF-8?q?#54=20[chore]=20=EB=B0=94=ED=85=80?= =?UTF-8?q?=EC=8B=9C=ED=8A=B8=20string=20=EC=B6=94=EC=B6=9C,=20=EB=B6=88?= =?UTF-8?q?=ED=95=84=EC=9A=94=ED=95=9C=20=ED=81=B4=EB=A6=AD=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=EB=84=88=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../softie/ui/happyroutine/delete/HappyDeleteFragment.kt | 8 ++++---- .../ui/happyroutine/progress/HappyProgressFragment.kt | 2 -- app/src/main/res/values/strings.xml | 3 +++ 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt index 0df742a8..1ca52426 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt @@ -75,18 +75,18 @@ class HappyDeleteFragment : isDrawable = true, imageDrawable = R.drawable.ic_bear_face_crying, imageUri = "", - title = "정말 삭제할까요?", + title = getString(R.string.happy_delete_bottom_sheet_title), content = "", isContentVisible = true, contentColor = R.color.gray400, - backBtnContent = "취소", - doBtnContent = "삭제할래", + backBtnContent = getString(R.string.happy_delete_bottom_sheet_back_btn), + doBtnContent = getString(R.string.happy_delete_bottom_sheet_do_btn), doBtnColor = R.drawable.shape_red_fill_12_rect, backBtnAction = {}, doBtnAction = { snackBar( binding.root.rootView, - "행복루틴을 삭제했어요" + getString(R.string.happy_routine_delete_snack_bar) ) requireActivity().supportFragmentManager.beginTransaction() .replace(R.id.fcv_main, HappyRoutineFragment()) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt index 382f5e84..4f827a51 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt @@ -102,8 +102,6 @@ class HappyProgressFragment : } private fun setClearEnter() { - binding.btnHappyProgressClear.setOnClickListener { - } initHappyRoutineCompleteBottomSheet() } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bad77be3..74c89f4b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -61,6 +61,9 @@ 취소 삭제하기 + 정말 삭제할까요? + 삭제할래 + 취소 어떤 친구와 함께 할까요? From ecc155f9fa55625455ce5bc26ce2470d2b59e895 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Wed, 17 Jan 2024 00:48:43 +0900 Subject: [PATCH 21/22] =?UTF-8?q?#54=20[chore]=20conflict=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt b/app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt index 02eb4501..9739dd55 100644 --- a/app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt +++ b/app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt @@ -1,5 +1,7 @@ package com.sopetit.softie.di +import com.sopetit.softie.data.repositoryImpl.DailyRoutineRepositoryImpl +import com.sopetit.softie.data.repositoryImpl.DollRepositoryImpl import com.sopetit.softie.data.repositoryImpl.HappinessRoutineRepositoryImpl import com.sopetit.softie.data.repositoryImpl.MemberRepositoryImpl import com.sopetit.softie.domain.repository.DailyRoutineRepository From 44711cc8c3f98877858e91d37ed039774ba246e2 Mon Sep 17 00:00:00 2001 From: pump9918 Date: Wed, 17 Jan 2024 01:08:28 +0900 Subject: [PATCH 22/22] =?UTF-8?q?#54=20[chore]=20CI=20=EA=B3=B5=EB=B0=B1?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../softie/ui/happyroutine/progress/HappyProgressFragment.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt index 4f827a51..3c06bf23 100644 --- a/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt +++ b/app/src/main/java/com/sopetit/softie/ui/happyroutine/progress/HappyProgressFragment.kt @@ -105,4 +105,3 @@ class HappyProgressFragment : initHappyRoutineCompleteBottomSheet() } } -