Skip to content

Commit

Permalink
[FEAT/#53] 포인트 사용 성공 공통 Dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
kkk5474096 committed Jul 19, 2023
1 parent e7594a9 commit 4e32f2e
Showing 1 changed file with 116 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
package com.yello.presentation.main.myyello.read

import android.content.res.Resources
import android.os.Bundle
import android.view.View
import android.view.WindowManager
import androidx.core.view.isVisible
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.example.domain.enum.PointEnum
import com.example.ui.base.BindingDialogFragment
import com.example.ui.fragment.toast
import com.example.ui.view.UiState
import com.example.ui.view.setOnSingleClickListener
import com.yello.R
import com.yello.databinding.DialogPointAfterBinding
import com.yello.util.Utils
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach

class PointAfterDialog :
BindingDialogFragment<DialogPointAfterBinding>(R.layout.dialog_point_after) {
private val viewModel by activityViewModels<MyYelloReadViewModel>()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

initView()
observe()
setDialogBackground()
initEvent()
}

private fun initView() {
if (viewModel.pointType == PointEnum.KEYWORD.ordinal) {
viewModel.checkKeyword()
} else {
viewModel.checkInitial()
}
setDataView()
binding.tvPoint.text = viewModel.myPoint.toString()
}

private fun setDataView() {
binding.tvSubTitle.isVisible = viewModel.pointType == PointEnum.INITIAL.ordinal
if (viewModel.pointType == PointEnum.KEYWORD.ordinal) {
binding.tvTitle.text = "쪽지의 키워드를 얻었어요!"
}
}

private fun observe() {
viewModel.keywordData.flowWithLifecycle(viewLifecycleOwner.lifecycle)
.onEach {
when (it) {
is UiState.Success -> {
binding.tvPoint.text = viewModel.minusPoint().toString()
binding.tvInitial.text = it.data.answer
viewModel.setIsFinishCheck(true)
viewModel.setHintUsed(true)
}

is UiState.Failure -> {
toast(it.msg)
}

else -> {}
}

}.launchIn(viewLifecycleOwner.lifecycleScope)

viewModel.nameData.flowWithLifecycle(viewLifecycleOwner.lifecycle)
.onEach {
when (it) {
is UiState.Success -> {
binding.tvPoint.text = viewModel.minusPoint().toString()
binding.tvInitial.text = Utils.setChosungText(it.data.name, 0)
viewModel.setIsFinishCheck(true)
viewModel.setNameIndex(it.data.index)
}

is UiState.Failure -> {
toast(it.msg)
}

else -> {}
}

}.launchIn(viewLifecycleOwner.lifecycleScope)
}

private fun initEvent() {
binding.tvOk.setOnSingleClickListener {
dismiss()
}
}

private fun setDialogBackground() {
val deviceWidth = Resources.getSystem().displayMetrics.widthPixels
val dialogHorizontalMargin = (Resources.getSystem().displayMetrics.density * 16) * 2

dialog?.window?.apply {
setLayout(
(deviceWidth - dialogHorizontalMargin * 2).toInt(),
WindowManager.LayoutParams.WRAP_CONTENT
)
setBackgroundDrawableResource(R.drawable.shape_fill_gray900_12dp)
}
dialog?.setCancelable(true)
}

companion object {
@JvmStatic
fun newInstance() =
PointAfterDialog()
}
}

0 comments on commit 4e32f2e

Please sign in to comment.