diff --git a/app/src/main/java/com/eatssu/android/presentation/mypage/userinfo/UserInfoActivity.kt b/app/src/main/java/com/eatssu/android/presentation/mypage/userinfo/UserInfoActivity.kt index aeac93f1a..618a899fc 100644 --- a/app/src/main/java/com/eatssu/android/presentation/mypage/userinfo/UserInfoActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/mypage/userinfo/UserInfoActivity.kt @@ -177,7 +177,7 @@ class UserInfoActivity : val data = state.data // 단과대를 먼저 선택하도록 유도 - if (data.selectedCollege == null) { + if (data.selectedCollege == null || data.selectedCollege.collegeId == -1) { showToast(R.string.toast_college_required, ToastType.ERROR) return } @@ -278,4 +278,4 @@ class UserInfoActivity : } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/eatssu/android/presentation/mypage/userinfo/UserInfoViewModel.kt b/app/src/main/java/com/eatssu/android/presentation/mypage/userinfo/UserInfoViewModel.kt index 2d6b7c57d..49a10cd0f 100644 --- a/app/src/main/java/com/eatssu/android/presentation/mypage/userinfo/UserInfoViewModel.kt +++ b/app/src/main/java/com/eatssu/android/presentation/mypage/userinfo/UserInfoViewModel.kt @@ -57,11 +57,14 @@ class UserInfoViewModel @Inject constructor( val userInfo = getUserCollegeDepartmentUseCase() + val initialCollege = userInfo.userCollege.takeUnless { it.collegeId == -1 } + val initialDepartment = userInfo.userDepartment.takeUnless { it.departmentId == -1 } + // 단과대 목록과 학과 목록을 먼저 모두 가져옴 val colleges = userRepository.getTotalColleges() val departments = - if (userInfo.userCollege.collegeId != -1) - userRepository.getTotalDepartments(userInfo.userCollege.collegeId) + if (initialCollege != null) + userRepository.getTotalDepartments(initialCollege.collegeId) else emptyList() @@ -71,10 +74,10 @@ class UserInfoViewModel @Inject constructor( UserInfoData( nickname = userInfo.nickname, originalNickname = userInfo.nickname, - selectedCollege = userInfo.userCollege, - originalCollege = userInfo.userCollege, - selectedDepartment = userInfo.userDepartment, - originalDepartment = userInfo.userDepartment, + selectedCollege = initialCollege, + originalCollege = initialCollege, + selectedDepartment = initialDepartment, + originalDepartment = initialDepartment, collegeList = colleges, departmentList = departments ) @@ -187,6 +190,14 @@ class UserInfoViewModel @Inject constructor( viewModelScope.launch { val currentState = _uiState.value as? UiState.Success ?: return@launch + if (collegeId == -1) { + Timber.w("학과 목록 로드 스킵: invalid collegeId=-1") + _uiState.update { + UiState.Success(currentState.data.copy(departmentList = emptyList())) + } + return@launch + } + val departments = userRepository.getTotalDepartments(collegeId) _uiState.update { UiState.Success(currentState.data.copy(departmentList = departments)) @@ -305,4 +316,3 @@ data class UserInfoData( } } } -