Skip to content

Commit

Permalink
Merge pull request #128 from Team-Sopetit/feature/#101-fix-happy-routine
Browse files Browse the repository at this point in the history
#101 [fix] 행복루틴 QA 이슈 해결
  • Loading branch information
pump9918 authored Jan 19, 2024
2 parents 6d0e599 + 367702b commit 74e2b37
Show file tree
Hide file tree
Showing 37 changed files with 578 additions and 751 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.happyroutine

import com.sopetit.softie.domain.repository.MemberHappinessRoutineRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.happyroutine

import com.sopetit.softie.domain.repository.MemberHappinessRoutineRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,52 +6,56 @@ import android.view.View
import androidx.fragment.app.viewModels
import coil.load
import com.sopetit.softie.R
import com.sopetit.softie.databinding.FragmentHappyProgressBinding
import com.sopetit.softie.ui.happyroutine.HappyRoutineFragment
import com.sopetit.softie.databinding.FragmentHappyMyRoutineBinding
import com.sopetit.softie.ui.happyroutine.HappyMyRoutineViewModel
import com.sopetit.softie.ui.happyroutine.complete.HappyRoutineCompleteActivity
import com.sopetit.softie.ui.happyroutine.delete.HappyDeleteFragment
import com.sopetit.softie.ui.happyroutine.list.HappyAddListActivity
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.setSingleOnClickListener
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class HappyProgressFragment :
BindingFragment<FragmentHappyProgressBinding>(R.layout.fragment_happy_progress) {
class HappyMyRoutineFragment :
BindingFragment<FragmentHappyMyRoutineBinding>(R.layout.fragment_happy_my_routine) {

private val viewModel by viewModels<HappyProgressViewModel>()
private val viewModel by viewModels<HappyMyRoutineViewModel>()

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val happyProgress = viewModel.getHappyProgress()
binding.viewModel = viewModel

setCardBinding(happyProgress)
initSetBearFace()
setMyCardEnter()
setCardEnter()
setEditEnter()
setClearEnter()
}

private fun setCardBinding(happyProgress: Unit) {
viewModel.happyProgressResponse.observe(viewLifecycleOwner) { happyProgress ->
happyProgress?.let {
with(binding) {
tvHappyProgressSubtitle.text = happyProgress.title
ivHappyProgressCardFront.load(happyProgress.contentImageUrl)
tvHappyProgressCardFrontTitle.text =
happyProgress.content
tvHappyProgressCardBackTitle.text =
happyProgress.content
tvHappyProgressCardBackContent.text =
happyProgress.detailContent
tvHappyProgressCardBackTime.text =
happyProgress.timeTaken
tvHappyProgressCardBackPlace.text = happyProgress.place
}
setClearEnter(happyProgress.iconImageUrl)
override fun onResume() {
super.onResume()
viewModel.getHappyProgress()
}

private fun initSetBearFace() {
viewModel.setDollFace()
viewModel.bearFace.observe(viewLifecycleOwner) { bearFace ->
binding.ivHappyRoutineCharacter.load(bearFace) {
placeholder(R.drawable.ic_loading_bear)
error(R.drawable.ic_loading_bear)
}
}
}

private fun setMyCardEnter() {
binding.ivHappyRoutineEmptyCard.setOnClickListener {
val intent = Intent(requireContext(), HappyAddListActivity::class.java)
startActivity(intent)
}
}

private fun setCardEnter() {
with(binding) {
clHappyProgressCardFront.setSingleOnClickListener {
Expand Down Expand Up @@ -100,31 +104,32 @@ class HappyProgressFragment :
doBtnAction = {
viewModel.happyProgressResponse.observe(viewLifecycleOwner) { happyProgress ->
happyProgress?.let {
startHappyRoutineCompleteActivity()
viewModel.patchAchieveHappyRoutine(happyProgress.routineId)
startHappyRoutineCompleteActivity()
moveToHappyRoutineEmptyCardView()
}
}
}
).show(parentFragmentManager, OriginalBottomSheet.BOTTOM_SHEET_TAG)
}

private fun moveToHappyRoutineEmptyCardView() {
val happyRoutineFragment = HappyRoutineFragment()
requireActivity().supportFragmentManager.beginTransaction()
.replace(R.id.fcv_main, happyRoutineFragment)
.commit()
}

private fun startHappyRoutineCompleteActivity() {
val intentToCompleteActivity =
Intent(requireActivity(), HappyRoutineCompleteActivity::class.java)
startActivity(intentToCompleteActivity)
}

private fun setClearEnter(icon: String) {
binding.btnHappyProgressClear.setSingleOnClickListener {
initHappyRoutineCompleteBottomSheet(icon)
private fun setClearEnter() {
binding.btnHappyProgressClear.setOnClickListener {
viewModel.happyProgressResponse.value?.iconImageUrl?.let { url ->
initHappyRoutineCompleteBottomSheet(
url
)
}
}
}

companion object {
private const val REQUEST_CODE_HAPPY_DETAIL = 990320
}
}
Original file line number Diff line number Diff line change
@@ -1,46 +1,65 @@
package com.sopetit.softie.ui.happyroutine.progress
package com.sopetit.softie.ui.happyroutine

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.sopetit.softie.domain.entity.HappyProgress
import com.sopetit.softie.domain.usecase.DeleteMemberHappyRoutineUseCase
import com.sopetit.softie.domain.usecase.GetHappyProgressUseCase
import com.sopetit.softie.domain.usecase.PatchMemberHappinessAchieveUseCase
import com.sopetit.softie.domain.usecase.GetBearTypeUseCase
import com.sopetit.softie.domain.usecase.doll.GetDollUseCase
import com.sopetit.softie.domain.usecase.happyroutine.GetHappyProgressUseCase
import com.sopetit.softie.domain.usecase.happyroutine.PatchMemberHappinessAchieveUseCase
import com.sopetit.softie.ui.onboarding.OnboardingViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject

@HiltViewModel
class HappyProgressViewModel @Inject constructor(
class HappyMyRoutineViewModel @Inject constructor(
private val getDollUseCase: GetDollUseCase,
private val getBearTypeUseCase: GetBearTypeUseCase,
private val getHappyProgressUseCase: GetHappyProgressUseCase,
private val patchMemberHappinessAchieveUseCase: PatchMemberHappinessAchieveUseCase,
private val deleteMemberHappyRoutineUseCase: DeleteMemberHappyRoutineUseCase
) : ViewModel() {
private val _bearFace: MutableLiveData<String> = MutableLiveData()
val bearFace: LiveData<String>
get() = _bearFace

private val _happyProgressResponse = MutableLiveData<HappyProgress>()
val happyProgressResponse: LiveData<HappyProgress> get() = _happyProgressResponse

private val _isDeleteHappyCardResponse: MutableLiveData<Boolean> = MutableLiveData()
val isDeleteHappyCardResponse: LiveData<Boolean>
get() = _isDeleteHappyCardResponse

private val _isHappyRoutineAchieve: MutableLiveData<Boolean> = MutableLiveData()
val isHappyRoutineAchieve: LiveData<Boolean>
get() = _isHappyRoutineAchieve

private val _myRoutineId: MutableLiveData<Int> = MutableLiveData()
val myRoutineId: LiveData<Int>
get() = _myRoutineId
private val _isHappinessRoutineProgress: MutableLiveData<Boolean> = MutableLiveData(false)
val isHappinessRoutineProgress: LiveData<Boolean> get() = _isHappinessRoutineProgress
fun setDollFace() {
viewModelScope.launch {
when (getBearTypeUseCase()) {
OnboardingViewModel.BROWN -> getDollUseCase(OnboardingViewModel.BROWN)
OnboardingViewModel.GRAY -> getDollUseCase(OnboardingViewModel.GRAY)
OnboardingViewModel.WHITE -> getDollUseCase(OnboardingViewModel.WHITE)
OnboardingViewModel.RED -> getDollUseCase(OnboardingViewModel.RED)
else -> getDollUseCase(OnboardingViewModel.BROWN)
}.onSuccess { response ->
_bearFace.value = response
Timber.d("곰돌이 서버 통신 성공 -> $response")
}.onFailure {
Timber.e("곰돌이 서버 통신 실패 -> ${it.message}")
}
}
}

fun getHappyProgress() {
viewModelScope.launch {
getHappyProgressUseCase()
.onSuccess { response ->
_isHappinessRoutineProgress.value = true
_happyProgressResponse.value = response
}
.onFailure { throwable ->
_isHappinessRoutineProgress.value = false
Timber.e("$throwable")
}
}
Expand All @@ -50,7 +69,7 @@ class HappyProgressViewModel @Inject constructor(
viewModelScope.launch {
patchMemberHappinessAchieveUseCase(routineId)
.onSuccess { response ->
_isHappyRoutineAchieve.value
Timber.e("$response")
}
.onFailure { throwable ->
Timber.e("$throwable")
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import androidx.fragment.app.viewModels
import coil.load
import com.sopetit.softie.R
import com.sopetit.softie.databinding.FragmentHappyDeleteBinding
import com.sopetit.softie.ui.happyroutine.HappyRoutineFragment
import com.sopetit.softie.ui.happyroutine.progress.HappyProgressViewModel
import com.sopetit.softie.ui.happyroutine.HappyMyRoutineViewModel
import com.sopetit.softie.ui.happyroutine.progress.HappyMyRoutineFragment
import com.sopetit.softie.util.OriginalBottomSheet
import com.sopetit.softie.util.binding.BindingBottomSheet
import com.sopetit.softie.util.binding.BindingFragment
Expand All @@ -19,7 +19,7 @@ import dagger.hilt.android.AndroidEntryPoint
class HappyDeleteFragment :
BindingFragment<FragmentHappyDeleteBinding>(R.layout.fragment_happy_delete) {

private val viewModel by viewModels<HappyProgressViewModel>()
private val viewModel by viewModels<HappyMyRoutineViewModel>()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val happyProgress = viewModel.getHappyProgress()
Expand Down Expand Up @@ -98,7 +98,7 @@ class HappyDeleteFragment :
getString(R.string.happy_routine_delete_snack_bar)
)
requireActivity().supportFragmentManager.beginTransaction()
.replace(R.id.fcv_main, HappyRoutineFragment())
.replace(R.id.fcv_main, HappyMyRoutineFragment())
.commit()
}
}
Expand Down
Loading

0 comments on commit 74e2b37

Please sign in to comment.