Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#57 / 한판승부기록 기능 구현 #60

Merged
merged 5 commits into from
Jul 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ data class RoundMission(
@SerialName("result")
val result: String,
@SerialName("updatedAt")
val updatedAt: String,
val updatedAt: String?,
)
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ import androidx.activity.viewModels
import dagger.hilt.android.AndroidEntryPoint
import sopt.uni.R
import sopt.uni.databinding.ActivityMissionRecordBinding
import sopt.uni.presentation.shortgame.createshortgame.dialog.CreateShortGameDialogFragment
import sopt.uni.presentation.shortgame.missiondetailrecord.MissionDetailRecordActivity
import sopt.uni.presentation.shortgame.missionresult.MissionResultActivity
import sopt.uni.util.binding.BindingActivity
import sopt.uni.util.extension.setOnSingleClickListener

Expand All @@ -22,12 +24,41 @@ class MissionRecordActivity :
setContentView(binding.root)
binding.missionRecordViewModel = viewModel
setClickListener()
setViewModelObserve()
}

private fun cancelDialog() {
CreateShortGameDialogFragment().apply {
titleText = [email protected](R.string.mission_detatil_record_rule_title)
bodyText = [email protected](R.string.mission_record_cancel_dialog_body)
confirmButtonText = [email protected](R.string.dialog_ok_text)
dismissButtonText = [email protected](R.string.dialog_cancel_text)
confirmClickListener = {
viewModel.requestStopMission()
this.dismiss()
}
dismissClickListener = {
this.dismiss()
}
}.show(supportFragmentManager, "")
}

private fun setViewModelObserve() {
viewModel.isMissionCancelSuccess.observe(this) {
if (it) finish()
}
viewModel.isMissionRequestSuccess.observe(this) {
if (it) {
MissionResultActivity.start(this, viewModel.roundGameId)
finish()
}
}
}

private fun setClickListener() {
binding.apply {
tvStopGame.setOnSingleClickListener {
// TODO : 승부 그만두기 다이얼로그
cancelDialog()
}
ivMissionDetail.setOnSingleClickListener {
MissionDetailRecordActivity.start(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,36 @@
package sopt.uni.presentation.shortgame.missionrecord

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.map
import sopt.uni.data.entity.shortgame.ResponseShortGameResult

class MissionRecordViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
val roundGameId: Int = savedStateHandle.get<Int>(MissionRecordActivity.ROUND_GAME_ID) ?: -1
val missionId = MutableLiveData<Int>(1)
val missionImage = MutableLiveData<String>("")
val missionContent = MutableLiveData<String>("헤드셋")
val missionTitle = MutableLiveData<String>("키워드 스무고개")

private val _missionResult = MutableLiveData<ResponseShortGameResult>()
val missionResult: LiveData<ResponseShortGameResult> = _missionResult

private val _isMissionCancelSuccess = MutableLiveData<Boolean>(false)
val isMissionCancelSuccess = _isMissionCancelSuccess

private val _isMissionRequestSuccess = MutableLiveData<Boolean>(false)
val isMissionRequestSuccess = _isMissionRequestSuccess

val myMissionResult = missionResult.map { it.myRoundMission }
val missionId = myMissionResult.map { it.missionContent.id }

fun loadMissionRecord() {
// TODO: Get 승부기록뷰 정보
}

fun requestMission(missionRequest: Boolean) {
// TODO: 미션완료,실패 API 호출
_isMissionRequestSuccess.postValue(true)
}

fun requestStopMission() {
// TODO: 승부그만두기 API 호출
_isMissionCancelSuccess.postValue(true)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import androidx.databinding.BindingAdapter
import sopt.uni.R
import sopt.uni.data.entity.shortgame.MissionResultState
import sopt.uni.databinding.ActivityMissionResultBinding
import sopt.uni.presentation.shortgame.missionrecord.MissionRecordActivity
import sopt.uni.util.binding.BindingActivity
import sopt.uni.util.extension.setOnSingleClickListener

Expand Down Expand Up @@ -73,15 +74,14 @@ class MissionResultActivity :
}

companion object {
const val ROUND_GAME_ID = "ROUND_GAME_ID"

fun start(context: Context, roundGameId: Int) {
context.startActivity(getIntent(context, roundGameId))
}

private fun getIntent(context: Context, roundGameId: Int) =
Intent(context, MissionResultActivity::class.java).putExtra(
ROUND_GAME_ID,
MissionRecordActivity.ROUND_GAME_ID,
roundGameId,
)

Expand Down
6 changes: 3 additions & 3 deletions app/src/main/res/layout/activity_mission_record.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,10 @@

<ImageView
android:id="@+id/iv_mission"
setImage="@{missionRecordViewModel.myMissionResult.missionContent.missionCategory.image}"
android:layout_width="77dp"
android:layout_height="77dp"
android:background="@drawable/bg_mission_image_round"
android:src="@drawable/imagecard_android"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

Expand All @@ -79,7 +79,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="16dp"
android:text="@{missionRecordViewModel.missionContent}"
android:text="@{missionRecordViewModel.myMissionResult.missionContent.content}"
android:textColor="@color/Gray_600"
android:textFontWeight="600"
app:layout_constraintStart_toEndOf="@id/iv_mission"
Expand All @@ -93,7 +93,7 @@
android:layout_marginStart="20dp"
android:layout_marginTop="6dp"
android:fontFamily="@font/pretendard"
android:text="@{missionRecordViewModel.missionTitle}"
android:text="@{missionRecordViewModel.myMissionResult.missionContent.missionCategory.title}"
android:textColor="@color/Gray_600"
android:textFontWeight="400"
android:textSize="14dp"
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -172,5 +172,10 @@
<string name="create_short_game_create_dialog_title">설정된 내용으로 승부를 만들까요?</string>
<string name="create_short_game_create_dialog_body">한번 설정한 내용은 변경할 수 없어요</string>
<string name="create_short_game_create_dialog_create">만들기</string>


<!-- MissionRecord dialog -->
<string name="mission_record_cancel_dialog_title">승부를 이대로 중단하시나요?</string>
<string name="mission_record_cancel_dialog_body">소모된 하트는 다시 돌아오지 않아요</string>

</resources>
Loading