Skip to content

Commit 51aef0d

Browse files
authored
Merge pull request #269 from Runnect/feature/refactor-mypage-running-history-viewmodel
[REFACTOR] 마이페이지 러닝기록 상세페이지 / 액티비티의 전역변수를 뷰모델로 이전
2 parents c39abdd + 9bc477f commit 51aef0d

2 files changed

Lines changed: 23 additions & 17 deletions

File tree

app/src/main/java/com/runnect/runnect/presentation/mypage/history/detail/MyHistoryDetailActivity.kt

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ import dagger.hilt.android.AndroidEntryPoint
2929
class MyHistoryDetailActivity :
3030
BindingActivity<ActivityMyHistoryDetailBinding>(R.layout.activity_my_history_detail) {
3131
private val viewModel: MyHistoryDetailViewModel by viewModels()
32-
private var currentScreenMode: ScreenMode = ScreenMode.ReadOnlyMode
33-
private var temporarilySavedTitle: String = ""
3432

3533
override fun onCreate(savedInstanceState: Bundle?) {
3634
super.onCreate(savedInstanceState)
@@ -62,29 +60,21 @@ class MyHistoryDetailActivity :
6260
}
6361

6462
private fun enterReadMode() {
65-
updateCurrentScreenMode(ScreenMode.ReadOnlyMode)
63+
viewModel.updateCurrentScreenMode(ScreenMode.ReadOnlyMode)
6664
updateTitleInputType()
6765
updateMoreButtonVisibility(true)
6866
updateConstraintForReadMode()
6967
}
7068

7169
private fun enterEditMode() {
72-
updateCurrentScreenMode(ScreenMode.EditMode)
70+
viewModel.updateCurrentScreenMode(ScreenMode.EditMode)
7371
updateTitleInputType()
7472
updateMoreButtonVisibility(false)
7573
updateConstraintForEditMode()
7674

7775
// 중간에 수정을 취소하면 원래 제목으로 되돌리기 위해
78-
// 현재 제목을 전역 변수에 저장해둔다.
79-
saveTemporarilyCurrentTitle()
80-
}
81-
82-
private fun saveTemporarilyCurrentTitle() {
83-
temporarilySavedTitle = viewModel.title
84-
}
85-
86-
private fun updateCurrentScreenMode(mode: ScreenMode) {
87-
currentScreenMode = mode
76+
// 현재 제목을 뷰모델에 저장해둔다.
77+
viewModel.saveCurrentTitle()
8878
}
8979

9080
private fun updateMoreButtonVisibility(isVisible: Boolean) {
@@ -115,7 +105,7 @@ class MyHistoryDetailActivity :
115105
}
116106

117107
private fun handleBackButtonByCurrentScreenMode() {
118-
when (currentScreenMode) {
108+
when (viewModel.currentScreenMode) {
119109
is ScreenMode.ReadOnlyMode -> navigateToPreviousScreen()
120110
is ScreenMode.EditMode -> showStopEditingDialog()
121111
}
@@ -251,7 +241,7 @@ class MyHistoryDetailActivity :
251241
}
252242

253243
private fun updateTitleInputType() {
254-
when (currentScreenMode) {
244+
when (viewModel.currentScreenMode) {
255245
is ScreenMode.ReadOnlyMode -> {
256246
binding.etCourseTitle.inputType = InputType.TYPE_NULL
257247
}
@@ -284,7 +274,7 @@ class MyHistoryDetailActivity :
284274
onNegativeButtonClicked = {},
285275
onPositiveButtonClicked = {
286276
// 편집 모드 -> 뒤로가기 버튼 -> 편집 중단 확인 -> 뷰에 원래 제목으로 보여줌.
287-
viewModel.updateHistoryTitle(temporarilySavedTitle)
277+
viewModel.restoreOriginalTitle()
288278
enterReadMode()
289279
}
290280
)

app/src/main/java/com/runnect/runnect/presentation/mypage/history/detail/MyHistoryDetailViewModel.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ class MyHistoryDetailViewModel @Inject constructor(private val userRepository: U
3434

3535
val isValidTitle: LiveData<Boolean> = _title.map { it.isNotBlank() }
3636

37+
private var _currentScreenMode: ScreenMode = ScreenMode.ReadOnlyMode
38+
val currentScreenMode get() = _currentScreenMode
39+
40+
private var savedTitle: String = ""
3741
private var historyId: Int = -1
3842

3943
fun updateHistoryTitle(title: String) {
@@ -44,6 +48,18 @@ class MyHistoryDetailViewModel @Inject constructor(private val userRepository: U
4448
historyId = id
4549
}
4650

51+
fun saveCurrentTitle() {
52+
savedTitle = title
53+
}
54+
55+
fun restoreOriginalTitle() {
56+
_title.value = savedTitle
57+
}
58+
59+
fun updateCurrentScreenMode(mode: ScreenMode) {
60+
_currentScreenMode = mode
61+
}
62+
4763
fun deleteHistory() {
4864
viewModelScope.launch {
4965
_historyDeleteState.value = UiStateV2.Loading

0 commit comments

Comments
 (0)