Skip to content

Commit

Permalink
[FEAT/#230] 여행 나가기 뷰 서버통신 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
crownjoe committed Mar 9, 2024
1 parent 15fe072 commit f0b6e81
Show file tree
Hide file tree
Showing 12 changed files with 89 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,8 @@ interface EditTripDataSource {
request: EditTripInfoRequestDto
): NonDataBaseResponse

suspend fun patchQuitTrip(
tripId: Long
): NonDataBaseResponse

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,10 @@ class EditTripDataSourceImpl @Inject constructor(
): NonDataBaseResponse = editTripService.patchEditTripInfo(
tripId, request
)

override suspend fun patchQuitTrip(
tripId: Long
): NonDataBaseResponse = editTripService.patchQuitTrip(
tripId
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,13 @@ class EditTripRepositoryImpl @Inject constructor(
tripId, request.toEditTrioRequestDto()
)
}

override suspend fun patchQuitTrip(
tripId: Long
): Result<Unit> =
runCatching {
editTripDataSource.patchQuitTrip(
tripId
)
}
}
6 changes: 6 additions & 0 deletions data/src/main/java/com/going/data/service/EditTripService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,10 @@ interface EditTripService {
@Path("tripId") tripId: Long,
@Body request: EditTripInfoRequestDto,
): NonDataBaseResponse

@PATCH("api/trips/{tripId}/leave")
suspend fun patchQuitTrip(
@Path("tripId") tripId: Long,
): NonDataBaseResponse

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,7 @@ interface EditTripRepository {
tripId: Long,
request: EditTripRequestModel
): Result<Unit>
suspend fun patchQuitTrip(
tripId: Long
): Result<Unit>
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
package com.going.presentation.todo.edittrip

import android.content.Intent
import android.os.Bundle
import android.view.View
import android.view.WindowManager
import androidx.fragment.app.activityViewModels
import com.going.presentation.R
import com.going.presentation.databinding.FragmentTripQuitDialogBinding
import com.going.presentation.dashboard.DashBoardActivity
import com.going.presentation.databinding.FragmentQuitTripDialogBinding
import com.going.presentation.todo.edittrip.edit.EditTripViewModel
import com.going.ui.base.BaseDialog
import com.going.ui.extension.setOnSingleClickListener

class TripQuitDialogFragment :
BaseDialog<FragmentTripQuitDialogBinding>(R.layout.fragment_trip_quit_dialog) {
class QuitTripDialogFragment :
BaseDialog<FragmentQuitTripDialogBinding>(R.layout.fragment_quit_trip_dialog) {

private val viewModel by activityViewModels<EditTripViewModel>()

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
Expand All @@ -37,7 +42,9 @@ class TripQuitDialogFragment :

private fun initNegativeClickListener() {
binding.tvDialogNegative.setOnSingleClickListener {
//대시보드 뷰로 이동
viewModel.patchQuitTripFromServer()
val intent = Intent(requireActivity(), DashBoardActivity::class.java)
startActivity(intent)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.going.presentation.todo.edittrip.edit

import android.app.Activity
import android.os.Bundle
import androidx.activity.viewModels
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.going.presentation.R
import com.going.presentation.databinding.ActivityEditTripBinding
import com.going.presentation.entertrip.invitetrip.invitecode.EnterTripActivity.Companion.TRIP_ID
import com.going.presentation.todo.edittrip.TripQuitDialogFragment
import com.going.presentation.todo.edittrip.QuitTripDialogFragment
import com.going.presentation.todo.edittrip.info.EditTripInfoActivity
import com.going.ui.base.BaseActivity
import com.going.ui.extension.setOnSingleClickListener
Expand All @@ -21,17 +22,17 @@ import kotlinx.coroutines.flow.onEach
class EditTripActivity :
BaseActivity<ActivityEditTripBinding>(R.layout.activity_edit_trip) {
private val viewModel by viewModels<EditTripViewModel>()
private var quitDialog: TripQuitDialogFragment? = null
private var quitDialog: QuitTripDialogFragment? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

initBindingViewModel()
getIntentData()
observeTripinfoState()
observePatchQuitState()
initEditBtnClickListener()
initQuitBtnClickListener()
//showQuitDialog()
initBackBtnClickListener()
}

Expand Down Expand Up @@ -66,9 +67,21 @@ class EditTripActivity :
}.launchIn(lifecycleScope)
}

private fun observePatchQuitState() {
viewModel.quittripState.flowWithLifecycle(lifecycle).onEach { result ->
if (result) {
toast(getString(R.string.quit_trip_toast_success))
setResult(Activity.RESULT_OK)
finish()
return@onEach
}
toast(getString(R.string.quit_trip_toast_failure))
}.launchIn(lifecycleScope)
}

private fun initQuitBtnClickListener() {
binding.btnEditTripQuit.setOnSingleClickListener {
//showQuitDialog()
showQuitDialog()
}
}

Expand All @@ -86,18 +99,13 @@ class EditTripActivity :
}
}

// private fun showQuitDialog() {
// quitDialog = TripQuitDialogFragment()
// quitDialog?.show(supportFragmentManager, quitDialog?.tag)
// Intent(this, DashBoardActivity::class.java).apply {
// //정보 지워지게 구성
// startActivity(this)
// }
// }
private fun showQuitDialog() {
quitDialog = QuitTripDialogFragment()
quitDialog?.show(supportFragmentManager, quitDialog?.tag)
}

private fun initBackBtnClickListener() {
binding.btnEditTripInfoBack.setOnSingleClickListener {
//어느 뷰로 가는지
finish()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ import com.going.domain.repository.EditTripRepository
import com.going.ui.extension.getGraphemeLength
import com.going.ui.state.UiState
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
import javax.inject.Inject
Expand Down Expand Up @@ -36,6 +38,9 @@ class EditTripViewModel @Inject constructor(
private val _tripInfoState = MutableStateFlow<UiState<TripInfoModel>>(UiState.Empty)
val tripInfoState: StateFlow<UiState<TripInfoModel>> get() = _tripInfoState

private val _quittripState = MutableSharedFlow<Boolean>()
val quittripState: SharedFlow<Boolean> = _quittripState

fun gettitleLength(){
titleLength.value = title.getGraphemeLength()
}
Expand All @@ -56,6 +61,20 @@ class EditTripViewModel @Inject constructor(
}
}

fun patchQuitTripFromServer() {
viewModelScope.launch {
editTripRepository.patchQuitTrip(
tripId
)
.onSuccess {
_quittripState.emit(true)
}
.onFailure {
_quittripState.emit(false)
}
}
}

companion object {
const val MAX_TRIP_LEN = 15
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class EditTripInfoActivity :

private fun getTripInfoData() {
viewModel.tripId = intent.getLongExtra(TRIP_ID, -1L)
viewModel.currentTitle = intent.getStringExtra(TITLE) ?:""
viewModel.currentTitle = intent.getStringExtra(TITLE) ?: ""
viewModel.currentStartDate = intent.getStringExtra(START_DATE) ?: ""
viewModel.currentEndDate = intent.getStringExtra(END_DATE) ?: ""

Expand All @@ -56,13 +56,13 @@ class EditTripInfoActivity :
viewModel.currentStartYear.value = startYear
viewModel.currentStartMonth.value = startMonth
viewModel.currentStartDay.value = startDay
viewModel.setStartDate(startYear,startMonth,startDay)
viewModel.setStartDate(startYear, startMonth, startDay)

val (endYear, endMonth, endDay) = splitDate(viewModel.currentEndDate)
viewModel.currentEndYear.value = endYear
viewModel.currentEndMonth.value = endMonth
viewModel.currentEndDay.value = endDay
viewModel.setEndDate(endYear,endMonth,endDay)
viewModel.setEndDate(endYear, endMonth, endDay)
}

fun splitDate(date: String): Triple<Int, Int, Int> {
Expand Down Expand Up @@ -114,8 +114,8 @@ class EditTripInfoActivity :

private fun initEndDateClickListener() {
binding.tvEditTripInfoEndDate.setOnSingleClickListener {
endBottomSheetDialog = EditDateBottomSheet(false)
endBottomSheetDialog?.show(supportFragmentManager, endBottomSheetDialog?.tag)
endBottomSheetDialog = EditDateBottomSheet(false)
endBottomSheetDialog?.show(supportFragmentManager, endBottomSheetDialog?.tag)
}
viewModel.checkEndDateAvailable()
viewModel.checkTripAvailable()
Expand All @@ -124,7 +124,7 @@ class EditTripInfoActivity :

private fun initEditBtnClickListener() {
binding.btnEditTripSave.setOnSingleClickListener {
viewModel.patchTodoToServer()
viewModel.patchTripInfoFromServer()
val intent = Intent(this, DashBoardActivity::class.java)
startActivity(intent)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class EditTripInfoViewModel @Inject constructor(

fun getMaxTripLen() = MAX_TRIP_LEN

fun patchTodoToServer() {
fun patchTripInfoFromServer() {
viewModelScope.launch {
editTripRepository.patchEditTripInfo(
tripId,
Expand Down
4 changes: 3 additions & 1 deletion presentation/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -253,5 +253,7 @@
<string name="edit_trip_toast_success">여행 정보 수정되었어요</string>
<string name="edit_trip_toast_failure">여행 정보 수정에 실패했어요</string>


<!--quit_trip-->
<string name="quit_trip_toast_success">여행방에서 나왔어요</string>
<string name="quit_trip_toast_failure">여행방에서 나오지 못했어요</string>
</resources>

0 comments on commit f0b6e81

Please sign in to comment.