diff --git a/core/common-ui/binding/src/main/java/com/idle/binding/EventHandlerHelper.kt b/core/common-ui/binding/src/main/java/com/idle/binding/EventHelper.kt similarity index 96% rename from core/common-ui/binding/src/main/java/com/idle/binding/EventHandlerHelper.kt rename to core/common-ui/binding/src/main/java/com/idle/binding/EventHelper.kt index 16e3512d..eb33e970 100644 --- a/core/common-ui/binding/src/main/java/com/idle/binding/EventHandlerHelper.kt +++ b/core/common-ui/binding/src/main/java/com/idle/binding/EventHelper.kt @@ -7,7 +7,7 @@ import javax.inject.Inject import javax.inject.Singleton @Singleton -class EventHandlerHelper @Inject constructor() { +class EventHelper @Inject constructor() { private val _eventFlow = Channel(BUFFERED) val eventFlow = _eventFlow.receiveAsFlow() diff --git a/core/domain/src/main/kotlin/com/idle/domain/model/error/ErrorHandler.kt b/core/domain/src/main/kotlin/com/idle/domain/model/error/ErrorHelper.kt similarity index 90% rename from core/domain/src/main/kotlin/com/idle/domain/model/error/ErrorHandler.kt rename to core/domain/src/main/kotlin/com/idle/domain/model/error/ErrorHelper.kt index 674008bb..1178f0f6 100644 --- a/core/domain/src/main/kotlin/com/idle/domain/model/error/ErrorHandler.kt +++ b/core/domain/src/main/kotlin/com/idle/domain/model/error/ErrorHelper.kt @@ -6,7 +6,7 @@ import javax.inject.Inject import javax.inject.Singleton @Singleton -class ErrorHandler @Inject constructor() { +class ErrorHelper @Inject constructor() { private val _errorEvent = MutableSharedFlow(extraBufferCapacity = 1) val errorEvent = _errorEvent.asSharedFlow() diff --git a/core/network/src/main/java/com/idle/network/source/websocket/WebSocketDataSource.kt b/core/network/src/main/java/com/idle/network/source/websocket/WebSocketDataSource.kt index 149b6a1f..ef9d39af 100644 --- a/core/network/src/main/java/com/idle/network/source/websocket/WebSocketDataSource.kt +++ b/core/network/src/main/java/com/idle/network/source/websocket/WebSocketDataSource.kt @@ -1,6 +1,6 @@ package com.idle.network.source.websocket -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.network.BuildConfig import com.idle.network.di.WebSocketOkHttpClient import com.idle.network.model.chatting.ChatMessageResponse @@ -15,7 +15,7 @@ import javax.inject.Singleton class WebSocketDataSource @Inject constructor( @WebSocketOkHttpClient private val client: OkHttpClient, private val chatMessageListener: ChatMessageListener, - private val errorHandlerHelper: ErrorHandler, + private val errorHelper: ErrorHelper, ) { private lateinit var chatMessageWebSocket: WebSocket diff --git a/feature/auth/src/main/java/com/idle/auth/AuthFragment.kt b/feature/auth/src/main/java/com/idle/auth/AuthFragment.kt index afd1d628..e7a538cc 100644 --- a/feature/auth/src/main/java/com/idle/auth/AuthFragment.kt +++ b/feature/auth/src/main/java/com/idle/auth/AuthFragment.kt @@ -60,7 +60,7 @@ internal class AuthFragment : BaseComposeFragment() { LaunchedEffect(true) { if (args.toastMsg != "default") { - eventHandlerHelper.sendEvent( + eventHelper.sendEvent( MainEvent.ShowToast( msg = args.toastMsg, toastType = ToastType.create(args.toastType) diff --git a/feature/auth/src/main/java/com/idle/auth/AuthViewModel.kt b/feature/auth/src/main/java/com/idle/auth/AuthViewModel.kt index 8a6b8b21..0cf5f36d 100644 --- a/feature/auth/src/main/java/com/idle/auth/AuthViewModel.kt +++ b/feature/auth/src/main/java/com/idle/auth/AuthViewModel.kt @@ -1,7 +1,7 @@ package com.idle.auth import androidx.lifecycle.ViewModel -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.domain.model.auth.UserType import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow @@ -10,7 +10,7 @@ import javax.inject.Inject @HiltViewModel class AuthViewModel @Inject constructor( - val eventHandlerHelper: EventHandlerHelper, + val eventHelper: EventHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _userType = MutableStateFlow(null) diff --git a/feature/center/applicant-inquiry/src/main/java/com/tgyuu/applicant/inquiry/ApplicantInquiryViewModel.kt b/feature/center/applicant-inquiry/src/main/java/com/tgyuu/applicant/inquiry/ApplicantInquiryViewModel.kt index 55c732d8..b926f118 100644 --- a/feature/center/applicant-inquiry/src/main/java/com/tgyuu/applicant/inquiry/ApplicantInquiryViewModel.kt +++ b/feature/center/applicant-inquiry/src/main/java/com/tgyuu/applicant/inquiry/ApplicantInquiryViewModel.kt @@ -2,7 +2,7 @@ package com.tgyuu.applicant.inquiry import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.jobposting.Applicant import com.idle.domain.model.jobposting.JobPostingSummary import com.idle.domain.usecase.jobposting.GetApplicantsInfoUseCase @@ -15,7 +15,7 @@ import javax.inject.Inject @HiltViewModel class ApplicantInquiryViewModel @Inject constructor( private val getApplicantsInfoUseCase: GetApplicantsInfoUseCase, - private val errorHandlerHelper: ErrorHandler, + private val errorHelper: ErrorHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _jobPostingSummary = MutableStateFlow(null) @@ -28,6 +28,6 @@ class ApplicantInquiryViewModel @Inject constructor( getApplicantsInfoUseCase(jobPostingId).onSuccess { (jobPostingSummary, applicants) -> _jobPostingSummary.value = jobPostingSummary _applicants.value = applicants - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } \ No newline at end of file diff --git a/feature/center/chatting/src/main/java/com/idle/center/chatting/CenterChattingViewModel.kt b/feature/center/chatting/src/main/java/com/idle/center/chatting/CenterChattingViewModel.kt index 1f31c9ca..7344097c 100644 --- a/feature/center/chatting/src/main/java/com/idle/center/chatting/CenterChattingViewModel.kt +++ b/feature/center/chatting/src/main/java/com/idle/center/chatting/CenterChattingViewModel.kt @@ -3,7 +3,7 @@ package com.idle.center.chatting import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.idle.domain.model.chatting.ChatRoom -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.usecase.chatting.GetChatRoomListUseCase import com.idle.domain.usecase.chatting.SubscribeChatMessageUseCase import com.idle.domain.usecase.profile.GetCenterProfileUseCase @@ -20,7 +20,7 @@ class CenterChattingViewModel @Inject constructor( private val getCenterProfileUseCase: GetCenterProfileUseCase, private val getChatRoomListUseCase: GetChatRoomListUseCase, private val subscribeChatMessageUseCase: SubscribeChatMessageUseCase, - private val errorHandler: ErrorHandler, + private val errorHelper: ErrorHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _chatRoomMap = MutableStateFlow>(LinkedHashMap()) @@ -71,6 +71,6 @@ class CenterChattingViewModel @Inject constructor( _chatRoomMap.value = LinkedHashMap().apply { it.forEach { chatRoom -> put(chatRoom.id, chatRoom) } } - }.onFailure { errorHandler.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } \ No newline at end of file diff --git a/feature/center/home/src/main/java/com/idle/center/home/CenterHomeViewModel.kt b/feature/center/home/src/main/java/com/idle/center/home/CenterHomeViewModel.kt index 2a091153..ff42498b 100644 --- a/feature/center/home/src/main/java/com/idle/center/home/CenterHomeViewModel.kt +++ b/feature/center/home/src/main/java/com/idle/center/home/CenterHomeViewModel.kt @@ -2,10 +2,10 @@ package com.idle.center.home import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.binding.ToastType.SUCCESS -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.jobposting.CenterJobPosting import com.idle.domain.usecase.config.ShowNotificationCenterUseCase import com.idle.domain.usecase.jobposting.EndJobPostingUseCase @@ -25,8 +25,8 @@ class CenterHomeViewModel @Inject constructor( private val endJobPostingUseCase: EndJobPostingUseCase, private val showNotificationCenterUseCase: ShowNotificationCenterUseCase, private val getUnreadNotificationCountUseCase: GetUnreadNotificationCountUseCase, - private val errorHandlerHelper: ErrorHandler, - private val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + private val eventHelper: EventHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _recruitmentPostStatus = MutableStateFlow(RecruitmentPostStatus.IN_PROGRESS) @@ -57,7 +57,7 @@ class CenterHomeViewModel @Inject constructor( internal fun getUnreadNotificationCount() = viewModelScope.launch { getUnreadNotificationCountUseCase().onSuccess { _unreadNotificationCount.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun setRecruitmentPostStatus(recruitmentPostStatus: RecruitmentPostStatus) { @@ -72,13 +72,13 @@ class CenterHomeViewModel @Inject constructor( internal fun getJobPostingsInProgress() = viewModelScope.launch { getJobPostingsInProgressUseCase().onSuccess { _jobPostingsInProgress.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun getJobPostingsCompleted() = viewModelScope.launch { getJobPostingsCompletedUseCase().onSuccess { _jobPostingsCompleted.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun endJobPosting(jobPostingId: String) = viewModelScope.launch { @@ -95,11 +95,11 @@ class CenterHomeViewModel @Inject constructor( it.id != jobPostingId } - eventHandlerHelper.sendEvent(MainEvent.ShowToast("채용을 종료했어요.", SUCCESS)) + eventHelper.sendEvent(MainEvent.ShowToast("채용을 종료했어요.", SUCCESS)) } else { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("채용 종료에 실패했어요.")) + eventHelper.sendEvent(MainEvent.ShowToast("채용 종료에 실패했어요.")) } - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } diff --git a/feature/center/job-posting-post/src/main/java/com/idle/center/jobposting/JobPostingFragment.kt b/feature/center/job-posting-post/src/main/java/com/idle/center/jobposting/JobPostingFragment.kt index 400172d7..b6274887 100644 --- a/feature/center/job-posting-post/src/main/java/com/idle/center/jobposting/JobPostingFragment.kt +++ b/feature/center/job-posting-post/src/main/java/com/idle/center/jobposting/JobPostingFragment.kt @@ -202,7 +202,7 @@ internal class JobPostingFragment : BaseComposeFragment() { setEditState(false) }, setEditState = ::setEditState, - showSnackBar = { eventHandlerHelper.sendEvent(MainEvent.ShowToast(it)) }, + showSnackBar = { eventHelper.sendEvent(MainEvent.ShowToast(it)) }, ) } else { JobPostingScreen( @@ -263,12 +263,12 @@ internal class JobPostingFragment : BaseComposeFragment() { onCalendarMonthChanged = ::setCalendarMonth, postJobPosting = ::postJobPosting, setJobPostingStep = { step -> - eventHandlerHelper.sendEvent(MainEvent.DismissToast) + eventHelper.sendEvent(MainEvent.DismissToast) setJobPostingStep(step) }, setEditState = ::setEditState, setBottomSheetType = ::setBottomSheetType, - showSnackBar = { eventHandlerHelper.sendEvent(MainEvent.ShowToast(it)) }, + showSnackBar = { eventHelper.sendEvent(MainEvent.ShowToast(it)) }, navigateToHome = { navigationHelper.navigateTo( com.idle.navigation.NavigationEvent.NavigateTo( diff --git a/feature/center/job-posting-post/src/main/java/com/idle/center/jobposting/JobPostingViewModel.kt b/feature/center/job-posting-post/src/main/java/com/idle/center/jobposting/JobPostingViewModel.kt index ac012bd3..30761912 100644 --- a/feature/center/job-posting-post/src/main/java/com/idle/center/jobposting/JobPostingViewModel.kt +++ b/feature/center/job-posting-post/src/main/java/com/idle/center/jobposting/JobPostingViewModel.kt @@ -3,12 +3,12 @@ package com.idle.center.jobposting import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.center.job.posting.post.R import com.idle.compose.JobPostingBottomSheetType import com.idle.domain.model.auth.Gender -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.jobposting.ApplyDeadlineType import com.idle.domain.model.jobposting.ApplyMethod import com.idle.domain.model.jobposting.DayOfWeek @@ -37,8 +37,8 @@ import javax.inject.Inject class JobPostingViewModel @Inject constructor( private val getLocalMyCenterProfileUseCase: GetLocalMyCenterProfileUseCase, private val postJobPostingUseCase: PostJobPostingUseCase, - private val errorHandlerHelper: ErrorHandler, - val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + val eventHelper: EventHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _profile = MutableStateFlow(null) @@ -175,10 +175,10 @@ class JobPostingViewModel @Inject constructor( if (startTime.isBefore(endTime)) { _workStartTime.value = time } else { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("근무 시작 시간은 근무 종료 시간보다 빨라야 합니다.")) + eventHelper.sendEvent(MainEvent.ShowToast("근무 시작 시간은 근무 종료 시간보다 빨라야 합니다.")) } } catch (e: DateTimeParseException) { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("근무 시작 시간은 근무 종료 시간보다 빨라야 합니다.")) + eventHelper.sendEvent(MainEvent.ShowToast("근무 시작 시간은 근무 종료 시간보다 빨라야 합니다.")) } return @@ -195,10 +195,10 @@ class JobPostingViewModel @Inject constructor( if (endTime.isAfter(startTime)) { _workEndTime.value = time } else { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("근무 종료 시간은 근무 시작 시간보다 빨라야 합니다.")) + eventHelper.sendEvent(MainEvent.ShowToast("근무 종료 시간은 근무 시작 시간보다 빨라야 합니다.")) } } catch (e: DateTimeParseException) { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("근무 종료 시간은 근무 시작 시간보다 빨라야 합니다.")) + eventHelper.sendEvent(MainEvent.ShowToast("근무 종료 시간은 근무 시작 시간보다 빨라야 합니다.")) } return } @@ -317,7 +317,7 @@ class JobPostingViewModel @Inject constructor( endTime = _workEndTime.value, payType = _payType.value ?: PayType.UNKNOWN, payAmount = _payAmount.value.toIntOrNull() ?: let { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("급여 형식이 잘못되었습니다. 숫자로 입력해주세요.")) + eventHelper.sendEvent(MainEvent.ShowToast("급여 형식이 잘못되었습니다. 숫자로 입력해주세요.")) return@launch }, roadNameAddress = _roadNameAddress.value, @@ -325,33 +325,33 @@ class JobPostingViewModel @Inject constructor( clientName = _clientName.value, gender = _gender.value, birthYear = _birthYear.value.toIntOrNull() ?: let { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("올바른 출생년도를 입력해주세요.")) + eventHelper.sendEvent(MainEvent.ShowToast("올바른 출생년도를 입력해주세요.")) return@launch }, weight = _weight.value.toIntOrNull(), careLevel = _careLevel.value.toIntOrNull() ?: let { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("올바른 요양 등급을 입력해주세요.")) + eventHelper.sendEvent(MainEvent.ShowToast("올바른 요양 등급을 입력해주세요.")) return@launch }, mentalStatus = _mentalStatus.value, disease = _disease.value.ifBlank { null }, isMealAssistance = _isMealAssistance.value ?: let { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("식사 보조 여부를 선택해주세요.")) + eventHelper.sendEvent(MainEvent.ShowToast("식사 보조 여부를 선택해주세요.")) return@launch }, isBowelAssistance = _isBowelAssistance.value ?: let { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("배변 보조 여부를 선택해주세요.")) + eventHelper.sendEvent(MainEvent.ShowToast("배변 보조 여부를 선택해주세요.")) return@launch }, isWalkingAssistance = _isWalkingAssistance.value ?: let { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("이동 보조 여부를 선택해주세요.")) + eventHelper.sendEvent(MainEvent.ShowToast("이동 보조 여부를 선택해주세요.")) return@launch }, lifeAssistance = _lifeAssistance.value.toList().sortedBy { it.ordinal } .takeIf { it.isNotEmpty() } ?: listOf(LifeAssistance.NONE), extraRequirement = _extraRequirement.value.ifBlank { null }, isExperiencePreferred = _isExperiencePreferred.value ?: let { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("경력 우대 여부를 선택해주세요.")) + eventHelper.sendEvent(MainEvent.ShowToast("경력 우대 여부를 선택해주세요.")) return@launch }, applyMethod = _applyMethod.value.toList() @@ -365,14 +365,14 @@ class JobPostingViewModel @Inject constructor( popUpTo = R.id.jobPostingPostFragment ) ) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } private fun getMyCenterProfile() = viewModelScope.launch { getLocalMyCenterProfileUseCase().onSuccess { _profile.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } companion object { diff --git a/feature/center/pending/src/main/java/com/idle/pending/CenterPendingViewModel.kt b/feature/center/pending/src/main/java/com/idle/pending/CenterPendingViewModel.kt index ebf371c9..8fffa30a 100644 --- a/feature/center/pending/src/main/java/com/idle/pending/CenterPendingViewModel.kt +++ b/feature/center/pending/src/main/java/com/idle/pending/CenterPendingViewModel.kt @@ -2,16 +2,19 @@ package com.idle.pending import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.binding.ToastType.SUCCESS -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.profile.CenterManagerAccountStatus import com.idle.domain.usecase.auth.LogoutCenterUseCase import com.idle.domain.usecase.auth.SendCenterVerificationRequestUseCase +import com.idle.domain.usecase.profile.GetCenterStatusUseCase import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import javax.inject.Inject @@ -19,13 +22,20 @@ import javax.inject.Inject class CenterPendingViewModel @Inject constructor( private val logoutCenterUseCase: LogoutCenterUseCase, private val sendCenterVerificationRequestUseCase: SendCenterVerificationRequestUseCase, - private val errorHandlerHelper: ErrorHandler, - private val eventHandlerHelper: EventHandlerHelper, + private val getCenterStatusUseCase: GetCenterStatusUseCase, + private val errorHelper: ErrorHelper, + private val eventHelper: EventHelper, private val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _status = MutableStateFlow(CenterManagerAccountStatus.UNKNOWN) val status = _status.asStateFlow() + private var pollingJob = MutableStateFlow(false) + + init{ + subscribeCenterStatus() + } + internal fun setStatus(status: String) { _status.value = CenterManagerAccountStatus.create(status) } @@ -38,13 +48,36 @@ class CenterPendingViewModel @Inject constructor( toastType = "SUCCESS" ) ) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun sendVerificationRequest() = viewModelScope.launch { sendCenterVerificationRequestUseCase().onSuccess { _status.value = CenterManagerAccountStatus.PENDING - eventHandlerHelper.sendEvent(MainEvent.ShowToast("센터 인증 요청이 완료되었습니다.", SUCCESS)) - }.onFailure { errorHandlerHelper.sendError(it) } + eventHelper.sendEvent(MainEvent.ShowToast("센터 인증 요청이 완료되었습니다.", SUCCESS)) + }.onFailure { errorHelper.sendError(it) } + } + + private fun subscribeCenterStatus() { + viewModelScope.launch { + pollingJob.emit(true) + while (isActive && pollingJob.value) { + getCenterStatus() + delay(2000) + } + } + } + + private fun getCenterStatus() = viewModelScope.launch { + getCenterStatusUseCase().onSuccess { + when (it.centerManagerAccountStatus) { + CenterManagerAccountStatus.APPROVED -> { + pollingJob.emit(false) + + } + + else -> Unit + } + }.onFailure { errorHelper.sendError(it) } } } \ No newline at end of file diff --git a/feature/center/profile/src/main/java/com/idle/center/profile/CenterProfileViewModel.kt b/feature/center/profile/src/main/java/com/idle/center/profile/CenterProfileViewModel.kt index eac3978e..a1bdbd06 100644 --- a/feature/center/profile/src/main/java/com/idle/center/profile/CenterProfileViewModel.kt +++ b/feature/center/profile/src/main/java/com/idle/center/profile/CenterProfileViewModel.kt @@ -3,10 +3,10 @@ package com.idle.center.profile import android.net.Uri import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.binding.ToastType.SUCCESS -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.profile.CenterProfile import com.idle.domain.usecase.profile.GetCenterProfileUseCase import com.idle.domain.usecase.profile.GetLocalMyCenterProfileUseCase @@ -22,8 +22,8 @@ class CenterProfileViewModel @Inject constructor( private val getLocalMyCenterProfileUseCase: GetLocalMyCenterProfileUseCase, private val getCenterProfileUseCase: GetCenterProfileUseCase, private val updateCenterProfileUseCase: UpdateCenterProfileUseCase, - private val errorHandlerHelper: ErrorHandler, - private val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + private val eventHelper: EventHelper, ) : ViewModel() { private val _centerProfile = MutableStateFlow(null) val centerProfile = _centerProfile.asStateFlow() @@ -67,7 +67,7 @@ class CenterProfileViewModel @Inject constructor( _centerProfile.value = it _centerIntroduce.value = it.introduce ?: "" _centerOfficeNumber.value = it.officeNumber - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun getCenterProfile(centerId: String) = viewModelScope.launch { @@ -75,7 +75,7 @@ class CenterProfileViewModel @Inject constructor( _centerProfile.value = it _centerIntroduce.value = it.introduce ?: "" _centerOfficeNumber.value = it.officeNumber - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun updateCenterProfile() = viewModelScope.launch { @@ -95,10 +95,10 @@ class CenterProfileViewModel @Inject constructor( introduce = _centerIntroduce.value.ifBlank { null }, imageFileUri = _profileImageUri.value?.toString(), ).onSuccess { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("정보 수정이 완료되었어요.", SUCCESS)) + eventHelper.sendEvent(MainEvent.ShowToast("정보 수정이 완료되었어요.", SUCCESS)) setEditState(false) }.onFailure { - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) }.also { _isUpdateLoading.value = false } } diff --git a/feature/center/register-info/src/main/java/com/idle/center/register/RegisterCenterInfoViewModel.kt b/feature/center/register-info/src/main/java/com/idle/center/register/RegisterCenterInfoViewModel.kt index d955c263..7e7d8e08 100644 --- a/feature/center/register-info/src/main/java/com/idle/center/register/RegisterCenterInfoViewModel.kt +++ b/feature/center/register-info/src/main/java/com/idle/center/register/RegisterCenterInfoViewModel.kt @@ -5,7 +5,7 @@ import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.idle.center.register.info.R -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.usecase.profile.RegisterCenterProfileUseCase import com.idle.navigation.DeepLinkDestination.CenterRegisterComplete import dagger.hilt.android.lifecycle.HiltViewModel @@ -17,8 +17,8 @@ import javax.inject.Inject @HiltViewModel class RegisterCenterInfoViewModel @Inject constructor( private val registerCenterProfileUseCase: RegisterCenterProfileUseCase, - private val errorHandlerHelper: ErrorHandler, - val navigationHelper: com.idle.navigation.NavigationHelper, + private val errorHelper: ErrorHelper, + private val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _registrationStep = MutableStateFlow(RegistrationStep.INFO) @@ -60,7 +60,7 @@ class RegisterCenterInfoViewModel @Inject constructor( R.id.registerCenterInfoFragment ) ) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun setRegistrationStep(step: RegistrationStep) { diff --git a/feature/center/register-info/src/main/java/com/idle/center/register/complete/RegisterCenterInfoCompleteViewModel.kt b/feature/center/register-info/src/main/java/com/idle/center/register/complete/RegisterCenterInfoCompleteViewModel.kt index a4d79977..acdd91b0 100644 --- a/feature/center/register-info/src/main/java/com/idle/center/register/complete/RegisterCenterInfoCompleteViewModel.kt +++ b/feature/center/register-info/src/main/java/com/idle/center/register/complete/RegisterCenterInfoCompleteViewModel.kt @@ -2,7 +2,7 @@ package com.idle.center.register.complete import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.domain.model.profile.CenterProfile import com.idle.domain.usecase.profile.GetLocalMyCenterProfileUseCase @@ -15,7 +15,7 @@ import javax.inject.Inject @HiltViewModel class RegisterCenterInfoCompleteViewModel @Inject constructor( private val getLocalMyCenterProfileUseCase: GetLocalMyCenterProfileUseCase, - private val eventHandlerHelper: EventHandlerHelper, + private val eventHelper: EventHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _centerProfile = MutableStateFlow(null) @@ -26,7 +26,7 @@ class RegisterCenterInfoCompleteViewModel @Inject constructor( getLocalMyCenterProfileUseCase() .onSuccess { _centerProfile.value = it } .onFailure { - eventHandlerHelper.sendEvent(MainEvent.ShowToast(it.toString())) + eventHelper.sendEvent(MainEvent.ShowToast(it.toString())) } } } diff --git a/feature/chatting-detail/src/main/java/com/idle/chatting_detail/ChattingDetailViewModel.kt b/feature/chatting-detail/src/main/java/com/idle/chatting_detail/ChattingDetailViewModel.kt index 8399f572..2512158d 100644 --- a/feature/chatting-detail/src/main/java/com/idle/chatting_detail/ChattingDetailViewModel.kt +++ b/feature/chatting-detail/src/main/java/com/idle/chatting_detail/ChattingDetailViewModel.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.idle.domain.model.auth.UserType import com.idle.domain.model.chatting.ChatMessage -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.profile.CenterProfile import com.idle.domain.model.profile.WorkerProfile import com.idle.domain.usecase.chatting.GetChatMessagesUseCase @@ -27,7 +27,7 @@ class ChattingDetailViewModel @Inject constructor( private val getWorkerProfileUseCase: GetWorkerProfileUseCase, private val getChatMessagesUseCase: GetChatMessagesUseCase, private val subscribeChatMessageUseCase: SubscribeChatMessageUseCase, - private val errorHandlerHelper: ErrorHandler, + private val errorHelper: ErrorHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _writingText = MutableStateFlow("") @@ -56,14 +56,14 @@ class ChattingDetailViewModel @Inject constructor( getWorkerProfileUseCase(senderId).onSuccess { _workerProfile.value = it }.onFailure { - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) } } getLocalMyCenterProfileUseCase().onSuccess { _centerProfile.value = it }.onFailure { - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) } } @@ -72,14 +72,14 @@ class ChattingDetailViewModel @Inject constructor( getCenterProfileUseCase(senderId).onSuccess { _centerProfile.value = it }.onFailure { - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) } } getLocalMyWorkerProfileUseCase().onSuccess { _workerProfile.value = it }.onFailure { - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) } } } diff --git a/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/center/CenterJobPostingDetailFragement.kt b/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/center/CenterJobPostingDetailFragement.kt index 07279ace..8c1d4dd3 100644 --- a/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/center/CenterJobPostingDetailFragement.kt +++ b/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/center/CenterJobPostingDetailFragement.kt @@ -107,7 +107,7 @@ internal class CenterJobPostingDetailFragment : BaseComposeFragment() { else setJobPostingState(JobPostingDetailState.SUMMARY) }, showSnackBar = { - eventHandlerHelper.sendEvent( + eventHelper.sendEvent( MainEvent.ShowToast(it) ) } diff --git a/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/center/CenterJobPostingDetailViewModel.kt b/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/center/CenterJobPostingDetailViewModel.kt index c3f88129..09649279 100644 --- a/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/center/CenterJobPostingDetailViewModel.kt +++ b/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/center/CenterJobPostingDetailViewModel.kt @@ -2,10 +2,10 @@ package com.idle.worker.job.posting.detail.center import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.binding.ToastType -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.jobposting.CenterJobPostingDetail import com.idle.domain.model.jobposting.EditJobPostingDetail import com.idle.domain.model.jobposting.JobPostingStatus @@ -32,8 +32,8 @@ class CenterJobPostingDetailViewModel @Inject constructor( private val updateJobPostingUseCase: UpdateJobPostingUseCase, private val endJobPostingUseCase: EndJobPostingUseCase, private val deleteJobPostingUseCase: DeleteJobPostingUseCase, - private val errorHandlerHelper: ErrorHandler, - val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + val eventHelper: EventHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _profile = MutableStateFlow(null) @@ -55,19 +55,19 @@ class CenterJobPostingDetailViewModel @Inject constructor( private fun getMyCenterProfile() = viewModelScope.launch { getLocalMyCenterProfileUseCase().onSuccess { _profile.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun getCenterJobPostingDetail(jobPostingId: String) = viewModelScope.launch { getCenterJobPostingDetailUseCase(jobPostingId) .onSuccess { _jobPostingDetail.value = it } - .onFailure { errorHandlerHelper.sendError(it) } + .onFailure { errorHelper.sendError(it) } } internal fun getApplicantsCount(jobPostingId: String) = viewModelScope.launch { getApplicantsCountUseCase(jobPostingId).onSuccess { _applicantsCount.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun setJobPostingState(state: JobPostingDetailState) { @@ -77,7 +77,7 @@ class CenterJobPostingDetailViewModel @Inject constructor( internal fun updateJobPosting(editJobPostingDetail: EditJobPostingDetail) = viewModelScope.launch { if (editJobPostingDetail.applyMethod.isEmpty()) { - eventHandlerHelper.sendEvent( + eventHelper.sendEvent( MainEvent.ShowToast("반드시 1개 이상의 지원 방법을 선택해야합니다.") ) return@launch @@ -115,21 +115,21 @@ class CenterJobPostingDetailViewModel @Inject constructor( .ifBlank { null }, ).onSuccess { getCenterJobPostingDetail(_jobPostingDetail.value?.id ?: return@launch) - eventHandlerHelper.sendEvent( + eventHelper.sendEvent( MainEvent.ShowToast("수정이 완료되었어요.", ToastType.SUCCESS) ) _jobPostingState.value = JobPostingDetailState.SUMMARY - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun endJobPosting(jobPostingId: String) = viewModelScope.launch { endJobPostingUseCase(jobPostingId).onSuccess { _jobPostingDetail.value = _jobPostingDetail.value?.copy(jobPostingStatus = JobPostingStatus.COMPLETED) - eventHandlerHelper.sendEvent( + eventHelper.sendEvent( MainEvent.ShowToast("채용을 종료했어요.", ToastType.SUCCESS) ) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun deleteJobPosting(jobPostingId: String) = viewModelScope.launch { @@ -140,7 +140,7 @@ class CenterJobPostingDetailViewModel @Inject constructor( R.id.centerJobPostingDetailFragment ) ) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } diff --git a/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/worker/WorkerJobPostingDetailFragment.kt b/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/worker/WorkerJobPostingDetailFragment.kt index 09354d8a..618e17ea 100644 --- a/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/worker/WorkerJobPostingDetailFragment.kt +++ b/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/worker/WorkerJobPostingDetailFragment.kt @@ -88,7 +88,7 @@ internal class WorkerJobPostingDetailFragment : BaseComposeFragment() { ) }, shareJobPosting = { - eventHandlerHelper.sendEvent( + eventHelper.sendEvent( MainEvent.ShareJobPosting( ShareJobPostingInfo( id = jobPosting.id, @@ -122,7 +122,7 @@ internal class WorkerJobPostingDetailFragment : BaseComposeFragment() { addFavoriteJobPosting = ::addFavoriteJobPosting, removeFavoriteJobPosting = ::removeFavoriteJobPosting, shareJobPosting = { - eventHandlerHelper.sendEvent( + eventHelper.sendEvent( MainEvent.ShareJobPosting( ShareJobPostingInfo( id = jobPosting.id, diff --git a/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/worker/WorkerJobPostingDetailViewModel.kt b/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/worker/WorkerJobPostingDetailViewModel.kt index 1179f95d..7727b101 100644 --- a/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/worker/WorkerJobPostingDetailViewModel.kt +++ b/feature/job-posting-detail/src/main/java/com/idle/worker/job/posting/detail/worker/WorkerJobPostingDetailViewModel.kt @@ -7,10 +7,10 @@ import com.idle.analytics.AnalyticsEvent.PropertiesKeys.ACTION_NAME import com.idle.analytics.AnalyticsEvent.PropertiesKeys.SCREEN_NAME import com.idle.analytics.AnalyticsEvent.Types.ACTION import com.idle.analytics.businessmetric.AnalyticsHelper -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.binding.ToastType.SUCCESS -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.jobposting.ApplyMethod import com.idle.domain.model.jobposting.CrawlingJobPostingDetail import com.idle.domain.model.jobposting.JobPosting @@ -39,8 +39,8 @@ class WorkerJobPostingDetailViewModel @Inject constructor( private val addFavoriteJobPostingUseCase: AddFavoriteJobPostingUseCase, private val removeFavoriteJobPostingUseCase: RemoveFavoriteJobPostingUseCase, private val analyticsHelper: AnalyticsHelper, - private val errorHandlerHelper: ErrorHandler, - val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + val eventHelper: EventHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _profile = MutableStateFlow(null) @@ -52,7 +52,7 @@ class WorkerJobPostingDetailViewModel @Inject constructor( internal fun getMyProfile() = viewModelScope.launch { getLocalMyWorkerProfileUseCase().onSuccess { _profile.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun getJobPostingDetail( @@ -62,11 +62,11 @@ class WorkerJobPostingDetailViewModel @Inject constructor( when (jobPostingType) { JobPostingType.CAREMEET.name -> getWorkerJobPostingDetailUseCase(jobPostingId).onSuccess { _workerJobPostingDetail.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } JobPostingType.WORKNET.name -> getCrawlingJobPostingsDetailUseCase(jobPostingId).onSuccess { _workerJobPostingDetail.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } @@ -76,7 +76,7 @@ class WorkerJobPostingDetailViewModel @Inject constructor( jobPostingId = jobPostingId, applyMethod = applyMethod, ).onSuccess { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("지원이 완료되었어요.", SUCCESS)) + eventHelper.sendEvent(MainEvent.ShowToast("지원이 완료되었어요.", SUCCESS)) if (_workerJobPostingDetail.value?.jobPostingType == JobPostingType.CAREMEET) { _workerJobPostingDetail.value = @@ -93,7 +93,7 @@ class WorkerJobPostingDetailViewModel @Inject constructor( ) ) ) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun addFavoriteJobPosting( @@ -104,7 +104,7 @@ class WorkerJobPostingDetailViewModel @Inject constructor( jobPostingId = jobPostingId, jobPostingType = jobPostingType, ).onSuccess { - eventHandlerHelper.sendEvent( + eventHelper.sendEvent( MainEvent.ShowToast("즐겨찾기에 추가되었어요.", SUCCESS) ) @@ -119,7 +119,7 @@ class WorkerJobPostingDetailViewModel @Inject constructor( (_workerJobPostingDetail.value as CrawlingJobPostingDetail).copy(isFavorite = true) } } - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun removeFavoriteJobPosting( @@ -127,7 +127,7 @@ class WorkerJobPostingDetailViewModel @Inject constructor( jobPostingType: JobPostingType, ) = viewModelScope.launch { removeFavoriteJobPostingUseCase(jobPostingId = jobPostingId).onSuccess { - eventHandlerHelper.sendEvent( + eventHelper.sendEvent( MainEvent.ShowToast("즐겨찾기에서 제거되었어요.", SUCCESS) ) @@ -142,6 +142,6 @@ class WorkerJobPostingDetailViewModel @Inject constructor( (_workerJobPostingDetail.value as CrawlingJobPostingDetail).copy(isFavorite = false) } } - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } \ No newline at end of file diff --git a/feature/notification/src/main/java/com/idle/notification/NotificationViewModel.kt b/feature/notification/src/main/java/com/idle/notification/NotificationViewModel.kt index cfc971c1..3c51e892 100644 --- a/feature/notification/src/main/java/com/idle/notification/NotificationViewModel.kt +++ b/feature/notification/src/main/java/com/idle/notification/NotificationViewModel.kt @@ -2,7 +2,7 @@ package com.idle.notification import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.notification.Notification import com.idle.domain.usecase.notification.GetMyNotificationUseCase import com.idle.domain.usecase.notification.ReadNotificationUseCase @@ -16,7 +16,7 @@ import javax.inject.Inject class NotificationViewModel @Inject constructor( private val getMyNotificationUseCase: GetMyNotificationUseCase, private val readNotificationUseCase: ReadNotificationUseCase, - private val errorHandlerHelper: ErrorHandler, + private val errorHelper: ErrorHelper, private val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val next = MutableStateFlow(null) @@ -38,7 +38,7 @@ class NotificationViewModel @Inject constructor( if (nextId == null) { _callType.value = NotificationCallType.END } - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun onNotificationClick(notification: Notification) = viewModelScope.launch { @@ -52,7 +52,7 @@ class NotificationViewModel @Inject constructor( } } }.onFailure { - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) } } diff --git a/feature/setting/src/main/java/com/idle/setting/center/CenterSettingViewModel.kt b/feature/setting/src/main/java/com/idle/setting/center/CenterSettingViewModel.kt index 63e9e365..6d9264ef 100644 --- a/feature/setting/src/main/java/com/idle/setting/center/CenterSettingViewModel.kt +++ b/feature/setting/src/main/java/com/idle/setting/center/CenterSettingViewModel.kt @@ -3,7 +3,7 @@ package com.idle.setting.center import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.idle.analytics.businessmetric.AnalyticsHelper -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.profile.CenterProfile import com.idle.domain.usecase.auth.LogoutCenterUseCase import com.idle.domain.usecase.profile.GetLocalMyCenterProfileUseCase @@ -21,7 +21,7 @@ class CenterSettingViewModel @Inject constructor( private val getLocalMyCenterProfileUseCase: GetLocalMyCenterProfileUseCase, private val logoutCenterUseCase: LogoutCenterUseCase, private val analyticsHelper: AnalyticsHelper, - private val errorHandlerHelper: ErrorHandler, + private val errorHelper: ErrorHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _centerProfile = @@ -38,7 +38,7 @@ class CenterSettingViewModel @Inject constructor( private fun getMyProfile() = viewModelScope.launch { getLocalMyCenterProfileUseCase().onSuccess { _centerProfile.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } fun logout() = viewModelScope.launch { @@ -50,7 +50,7 @@ class CenterSettingViewModel @Inject constructor( toastType = "SUCCESS" ) ) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } fun clickLogout() = centerSettingEvent(SettingEvent.Logout) diff --git a/feature/setting/src/main/java/com/idle/setting/worker/WorkerSettingViewModel.kt b/feature/setting/src/main/java/com/idle/setting/worker/WorkerSettingViewModel.kt index 0dbf5d6c..9b92c52a 100644 --- a/feature/setting/src/main/java/com/idle/setting/worker/WorkerSettingViewModel.kt +++ b/feature/setting/src/main/java/com/idle/setting/worker/WorkerSettingViewModel.kt @@ -3,7 +3,7 @@ package com.idle.setting.worker import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.idle.analytics.businessmetric.AnalyticsHelper -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.profile.WorkerProfile import com.idle.domain.usecase.auth.LogoutWorkerUseCase import com.idle.domain.usecase.profile.GetLocalMyWorkerProfileUseCase @@ -20,7 +20,7 @@ class WorkerSettingViewModel @Inject constructor( private val getLocalMyWorkerProfileUseCase: GetLocalMyWorkerProfileUseCase, private val logoutWorkerUseCase: LogoutWorkerUseCase, private val analyticsHelper: AnalyticsHelper, - private val errorHandlerHelper: ErrorHandler, + private val errorHelper: ErrorHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _workerProfile = MutableStateFlow(null) @@ -35,7 +35,7 @@ class WorkerSettingViewModel @Inject constructor( private fun getMyProfile() = viewModelScope.launch { getLocalMyWorkerProfileUseCase().onSuccess { _workerProfile.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } fun logout() = viewModelScope.launch { @@ -47,7 +47,7 @@ class WorkerSettingViewModel @Inject constructor( toastType = "SUCCESS", ) ) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } fun clickLogout() = workerSettingEvent(SettingEvent.Logout) diff --git a/feature/signin/src/main/java/com/idle/signin/center/CenterSignInFragment.kt b/feature/signin/src/main/java/com/idle/signin/center/CenterSignInFragment.kt index fa71fe0a..b493e4ed 100644 --- a/feature/signin/src/main/java/com/idle/signin/center/CenterSignInFragment.kt +++ b/feature/signin/src/main/java/com/idle/signin/center/CenterSignInFragment.kt @@ -54,7 +54,7 @@ internal class CenterSignInFragment : BaseComposeFragment() { LaunchedEffect(Unit) { if (args.toastMsg != "default") { - eventHandlerHelper.sendEvent( + eventHelper.sendEvent( MainEvent.ShowToast( args.toastMsg, ToastType.SUCCESS diff --git a/feature/signin/src/main/java/com/idle/signin/center/CenterSignInViewModel.kt b/feature/signin/src/main/java/com/idle/signin/center/CenterSignInViewModel.kt index 1c53b747..6432c25b 100644 --- a/feature/signin/src/main/java/com/idle/signin/center/CenterSignInViewModel.kt +++ b/feature/signin/src/main/java/com/idle/signin/center/CenterSignInViewModel.kt @@ -6,9 +6,9 @@ import com.idle.analytics.AnalyticsEvent import com.idle.analytics.AnalyticsEvent.PropertiesKeys.ACTION_NAME import com.idle.analytics.AnalyticsEvent.PropertiesKeys.ACTION_RESULT import com.idle.analytics.businessmetric.AnalyticsHelper -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.domain.model.error.ApiErrorCode -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.error.HttpResponseException import com.idle.domain.model.error.HttpResponseStatus import com.idle.domain.model.profile.CenterManagerAccountStatus @@ -32,8 +32,8 @@ class CenterSignInViewModel @Inject constructor( private val getCenterStatusUseCase: GetCenterStatusUseCase, private val getMyCenterProfileUseCase: GetMyCenterProfileUseCase, private val analyticsHelper: AnalyticsHelper, - private val errorHandlerHelper: ErrorHandler, - val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + val eventHelper: EventHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _centerId = MutableStateFlow("") @@ -75,7 +75,7 @@ class CenterSignInViewModel @Inject constructor( return@launch } - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) analyticsHelper.logEvent( AnalyticsEvent( @@ -92,7 +92,7 @@ class CenterSignInViewModel @Inject constructor( private fun handleCenterLoginSuccess() = viewModelScope.launch { getCenterStatusUseCase().onSuccess { centerStatusResponse -> navigateBasedOnCenterStatus(centerStatusResponse.centerManagerAccountStatus) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } private fun navigateBasedOnCenterStatus(status: CenterManagerAccountStatus) { @@ -119,7 +119,7 @@ class CenterSignInViewModel @Inject constructor( NavigateTo(CenterRegister, R.id.centerSignInFragment) ) } else { - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) } } } diff --git a/feature/signin/src/main/java/com/idle/signin/center/newpassword/NewPasswordViewModel.kt b/feature/signin/src/main/java/com/idle/signin/center/newpassword/NewPasswordViewModel.kt index ce27148d..df0fd7b5 100644 --- a/feature/signin/src/main/java/com/idle/signin/center/newpassword/NewPasswordViewModel.kt +++ b/feature/signin/src/main/java/com/idle/signin/center/newpassword/NewPasswordViewModel.kt @@ -3,12 +3,12 @@ package com.idle.signin.center.newpassword import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.domain.model.CountDownTimer import com.idle.domain.model.CountDownTimer.Companion.SECONDS_PER_MINUTE import com.idle.domain.model.CountDownTimer.Companion.TICK_INTERVAL -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.error.HttpResponseException import com.idle.domain.model.error.HttpResponseStatus import com.idle.domain.usecase.auth.ConfirmAuthCodeUseCase @@ -35,8 +35,8 @@ class NewPasswordViewModel @Inject constructor( private val confirmAuthCodeUseCase: ConfirmAuthCodeUseCase, private val generateNewPasswordUseCase: GenerateNewPasswordUseCase, private val countDownTimer: CountDownTimer, - private val errorHandlerHelper: ErrorHandler, - private val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + private val eventHelper: EventHelper, private val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _phoneNumber = MutableStateFlow("") @@ -154,7 +154,7 @@ class NewPasswordViewModel @Inject constructor( internal fun sendPhoneNumber() = viewModelScope.launch { sendPhoneNumberUseCase(_phoneNumber.value) .onSuccess { startTimer() } - .onFailure { eventHandlerHelper.sendEvent(MainEvent.ShowToast(it.message.toString())) } + .onFailure { eventHelper.sendEvent(MainEvent.ShowToast(it.message.toString())) } } internal fun confirmAuthCode() = viewModelScope.launch { @@ -171,7 +171,7 @@ class NewPasswordViewModel @Inject constructor( return@launch } - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) } } @@ -179,7 +179,7 @@ class NewPasswordViewModel @Inject constructor( val passwordPattern = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d!@#\$%^&*()_+=-]{8,20}$".toRegex() if (!_newPassword.value.matches(passwordPattern)) { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("비밀번호가 형식에 맞지 않습니다.")) + eventHelper.sendEvent(MainEvent.ShowToast("비밀번호가 형식에 맞지 않습니다.")) return@launch } @@ -193,7 +193,7 @@ class NewPasswordViewModel @Inject constructor( popUpTo = R.id.newPasswordFragment, ) ) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } private fun startTimer() { diff --git a/feature/signin/src/test/java/com/idle/signin/center/newpassword/NewPasswordViewModelTest.kt b/feature/signin/src/test/java/com/idle/signin/center/newpassword/NewPasswordViewModelTest.kt index 4730e42e..88fbb6f9 100644 --- a/feature/signin/src/test/java/com/idle/signin/center/newpassword/NewPasswordViewModelTest.kt +++ b/feature/signin/src/test/java/com/idle/signin/center/newpassword/NewPasswordViewModelTest.kt @@ -1,8 +1,8 @@ package com.idle.signin.center.newpassword -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.domain.model.CountDownTimer -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.usecase.auth.ConfirmAuthCodeUseCase import com.idle.domain.usecase.auth.GenerateNewPasswordUseCase import com.idle.domain.usecase.auth.SendPhoneNumberUseCase @@ -25,8 +25,8 @@ class NewPasswordViewModelTest { private lateinit var confirmAuthCodeUseCase: ConfirmAuthCodeUseCase private lateinit var generateNewPasswordUseCase: GenerateNewPasswordUseCase private lateinit var countDownTimer: CountDownTimer - private lateinit var errorHandlerHelper: ErrorHandler - private lateinit var eventHandlerHelper: EventHandlerHelper + private lateinit var errorHelper: ErrorHelper + private lateinit var eventHelper: EventHelper private lateinit var navigationHelper: com.idle.navigation.NavigationHelper private lateinit var viewModel: NewPasswordViewModel private lateinit var testDispatcher: TestDispatcher @@ -40,8 +40,8 @@ class NewPasswordViewModelTest { confirmAuthCodeUseCase = mockk(relaxed = true) generateNewPasswordUseCase = mockk(relaxed = true) countDownTimer = mockk(relaxed = true) - errorHandlerHelper = mockk(relaxed = true) - eventHandlerHelper = mockk(relaxed = true) + errorHelper = mockk(relaxed = true) + eventHelper = mockk(relaxed = true) navigationHelper = mockk(relaxed = true) viewModel = NewPasswordViewModel( @@ -49,8 +49,8 @@ class NewPasswordViewModelTest { confirmAuthCodeUseCase = confirmAuthCodeUseCase, generateNewPasswordUseCase = generateNewPasswordUseCase, countDownTimer = countDownTimer, - errorHandlerHelper = errorHandlerHelper, - eventHandlerHelper = eventHandlerHelper, + errorHelper = errorHelper, + eventHelper = eventHelper, navigationHelper = navigationHelper ) } diff --git a/feature/signup/src/main/java/com/idle/signup/center/CenterSignUpViewModel.kt b/feature/signup/src/main/java/com/idle/signup/center/CenterSignUpViewModel.kt index 04367ea1..1e2acc2f 100644 --- a/feature/signup/src/main/java/com/idle/signup/center/CenterSignUpViewModel.kt +++ b/feature/signup/src/main/java/com/idle/signup/center/CenterSignUpViewModel.kt @@ -3,14 +3,14 @@ package com.idle.signup.center import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.domain.model.CountDownTimer import com.idle.domain.model.CountDownTimer.Companion.SECONDS_PER_MINUTE import com.idle.domain.model.CountDownTimer.Companion.TICK_INTERVAL import com.idle.domain.model.auth.BusinessRegistrationInfo import com.idle.domain.model.error.ApiErrorCode -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.error.HttpResponseException import com.idle.domain.model.error.HttpResponseStatus import com.idle.domain.repositorry.logging.LoggingRepository @@ -43,8 +43,8 @@ class CenterSignUpViewModel @Inject constructor( private val validateBusinessRegistrationNumberUseCase: ValidateBusinessRegistrationNumberUseCase, private val loggingRepository: LoggingRepository, private val countDownTimer: CountDownTimer, - private val errorHandlerHelper: ErrorHandler, - private val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + private val eventHelper: EventHelper, val navigationHelper: NavigationHelper, ) : ViewModel() { private val _signUpStep = MutableStateFlow(NAME) @@ -216,7 +216,7 @@ class CenterSignUpViewModel @Inject constructor( internal fun sendPhoneNumber() = viewModelScope.launch { sendPhoneNumberUseCase(_centerPhoneNumber.value) .onSuccess { startTimer() } - .onFailure { errorHandlerHelper.sendError(it) } + .onFailure { errorHelper.sendError(it) } } internal fun confirmAuthCode() = viewModelScope.launch { @@ -232,7 +232,7 @@ class CenterSignUpViewModel @Inject constructor( return@launch } - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) } } @@ -240,7 +240,7 @@ class CenterSignUpViewModel @Inject constructor( val passwordPattern = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d!@#\$%^&*()_+=-]{8,20}$".toRegex() if (!_centerPassword.value.matches(passwordPattern)) { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("비밀번호가 형식에 맞지 않습니다.")) + eventHelper.sendEvent(MainEvent.ShowToast("비밀번호가 형식에 맞지 않습니다.")) return@launch } @@ -258,11 +258,11 @@ class CenterSignUpViewModel @Inject constructor( ) ) } - .onFailure { errorHandlerHelper.sendError(it) } + .onFailure { errorHelper.sendError(it) } } internal fun validateIdentifier() = viewModelScope.launch { - eventHandlerHelper.sendEvent(MainEvent.DismissToast) + eventHelper.sendEvent(MainEvent.DismissToast) validateIdentifierUseCase(_centerId.value) .onSuccess { _centerIdResult.value = true } .onFailure { @@ -271,14 +271,14 @@ class CenterSignUpViewModel @Inject constructor( return@onFailure } - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) } } internal fun validateBusinessRegistrationNumber() = viewModelScope.launch { validateBusinessRegistrationNumberUseCase(_businessRegistrationNumber.value) .onSuccess { _businessRegistrationInfo.value = it } - .onFailure { errorHandlerHelper.sendError(it) } + .onFailure { errorHelper.sendError(it) } } private fun startTimer() { diff --git a/feature/signup/src/main/java/com/idle/signup/worker/WorkerSignUpFragment.kt b/feature/signup/src/main/java/com/idle/signup/worker/WorkerSignUpFragment.kt index ddac7483..13dcb0c1 100644 --- a/feature/signup/src/main/java/com/idle/signup/worker/WorkerSignUpFragment.kt +++ b/feature/signup/src/main/java/com/idle/signup/worker/WorkerSignUpFragment.kt @@ -102,7 +102,7 @@ internal class WorkerSignUpFragment : BaseComposeFragment() { ) ) }, - showSnackBar = { eventHandlerHelper.sendEvent(MainEvent.ShowToast(it)) } + showSnackBar = { eventHelper.sendEvent(MainEvent.ShowToast(it)) } ) } } diff --git a/feature/signup/src/main/java/com/idle/signup/worker/WorkerSignUpViewModel.kt b/feature/signup/src/main/java/com/idle/signup/worker/WorkerSignUpViewModel.kt index d09e3575..bcdd25df 100644 --- a/feature/signup/src/main/java/com/idle/signup/worker/WorkerSignUpViewModel.kt +++ b/feature/signup/src/main/java/com/idle/signup/worker/WorkerSignUpViewModel.kt @@ -4,12 +4,12 @@ import androidx.core.text.isDigitsOnly import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.idle.analytics.businessmetric.AnalyticsHelper -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.domain.model.CountDownTimer import com.idle.domain.model.CountDownTimer.Companion.SECONDS_PER_MINUTE import com.idle.domain.model.CountDownTimer.Companion.TICK_INTERVAL import com.idle.domain.model.auth.Gender -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.error.HttpResponseException import com.idle.domain.model.error.HttpResponseStatus import com.idle.domain.usecase.auth.ConfirmAuthCodeUseCase @@ -38,8 +38,8 @@ class WorkerSignUpViewModel @Inject constructor( private val confirmAuthCodeUseCase: ConfirmAuthCodeUseCase, private val countDownTimer: CountDownTimer, private val analyticsHelper: AnalyticsHelper, - private val errorHandlerHelper: ErrorHandler, - val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + val eventHelper: EventHelper, val navigationHelper: NavigationHelper, ) : ViewModel() { @@ -120,7 +120,7 @@ class WorkerSignUpViewModel @Inject constructor( internal fun sendPhoneNumber() = viewModelScope.launch { sendPhoneNumberUseCase(_workerPhoneNumber.value) .onSuccess { startTimer() } - .onFailure { errorHandlerHelper.sendError(it) } + .onFailure { errorHelper.sendError(it) } } private fun startTimer() { @@ -173,7 +173,7 @@ class WorkerSignUpViewModel @Inject constructor( return@launch } - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) } } } @@ -194,7 +194,7 @@ class WorkerSignUpViewModel @Inject constructor( R.id.workerSignUpFragment ) ) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } diff --git a/feature/withdrawal/src/main/java/com/idle/withdrawal/WithdrawalViewModel.kt b/feature/withdrawal/src/main/java/com/idle/withdrawal/WithdrawalViewModel.kt index c246fbb4..dac0cb6a 100644 --- a/feature/withdrawal/src/main/java/com/idle/withdrawal/WithdrawalViewModel.kt +++ b/feature/withdrawal/src/main/java/com/idle/withdrawal/WithdrawalViewModel.kt @@ -3,14 +3,14 @@ package com.idle.withdrawal import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.idle.analytics.businessmetric.AnalyticsHelper -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.domain.model.CountDownTimer import com.idle.domain.model.CountDownTimer.Companion.SECONDS_PER_MINUTE import com.idle.domain.model.CountDownTimer.Companion.TICK_INTERVAL import com.idle.domain.model.auth.UserType import com.idle.domain.model.error.ApiErrorCode -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.error.HttpResponseException import com.idle.domain.usecase.auth.ConfirmAuthCodeUseCase import com.idle.domain.usecase.auth.SendPhoneNumberUseCase @@ -31,8 +31,8 @@ class WithdrawalViewModel @Inject constructor( private val withdrawalWorkerUseCase: WithdrawalWorkerUseCase, private val countDownTimer: CountDownTimer, private val analyticsHelper: AnalyticsHelper, - private val errorHandlerHelper: ErrorHandler, - private val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + private val eventHelper: EventHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _withdrawalStep = MutableStateFlow(WithdrawalStep.REASON) @@ -94,7 +94,7 @@ class WithdrawalViewModel @Inject constructor( internal fun sendPhoneNumber() = viewModelScope.launch { sendPhoneNumberUseCase(_phoneNumber.value) .onSuccess { startTimer() } - .onFailure { errorHandlerHelper.sendError(it) } + .onFailure { errorHelper.sendError(it) } } internal fun setInconvenientReason(reason: String) { @@ -144,7 +144,7 @@ class WithdrawalViewModel @Inject constructor( cancelTimer() _isConfirmAuthCode.value = true } - .onFailure { errorHandlerHelper.sendError(it) } + .onFailure { errorHelper.sendError(it) } } internal fun withdrawal(userType: UserType) = viewModelScope.launch { @@ -178,9 +178,9 @@ class WithdrawalViewModel @Inject constructor( }.onFailure { val exception = it as HttpResponseException if (exception.apiErrorCode == ApiErrorCode.InvalidParameter) { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("비밀번호가 맞지 않습니다.")) + eventHelper.sendEvent(MainEvent.ShowToast("비밀번호가 맞지 않습니다.")) } else { - errorHandlerHelper.sendError(it) + errorHelper.sendError(it) } } } @@ -197,7 +197,7 @@ class WithdrawalViewModel @Inject constructor( "회원탈퇴가 완료되었어요." ) ) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } diff --git a/feature/worker/chatting/src/main/java/com/idle/worker/chatting/WorkerChattingViewModel.kt b/feature/worker/chatting/src/main/java/com/idle/worker/chatting/WorkerChattingViewModel.kt index cb5cdfc2..127152a1 100644 --- a/feature/worker/chatting/src/main/java/com/idle/worker/chatting/WorkerChattingViewModel.kt +++ b/feature/worker/chatting/src/main/java/com/idle/worker/chatting/WorkerChattingViewModel.kt @@ -3,7 +3,7 @@ package com.idle.worker.chatting import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.idle.domain.model.chatting.ChatRoom -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.profile.WorkerProfile import com.idle.domain.usecase.chatting.GetChatRoomListUseCase import com.idle.domain.usecase.chatting.SubscribeChatMessageUseCase @@ -23,7 +23,7 @@ class WorkerChattingViewModel @Inject constructor( private val getCenterProfileUseCase: GetCenterProfileUseCase, private val getChatRoomListUseCase: GetChatRoomListUseCase, private val subscribeChatMessageUseCase: SubscribeChatMessageUseCase, - private val errorHandler: ErrorHandler, + private val errorHelper: ErrorHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private var myProfile: WorkerProfile? = null @@ -41,7 +41,7 @@ class WorkerChattingViewModel @Inject constructor( viewModelScope.launch { getLocalMyWorkerProfileUseCase().onSuccess { myProfile = it - }.onFailure { errorHandler.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } @@ -83,6 +83,6 @@ class WorkerChattingViewModel @Inject constructor( _chatRoomMap.value = LinkedHashMap().apply { it.forEach { chatRoom -> put(chatRoom.id, chatRoom) } } - }.onFailure { errorHandler.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } \ No newline at end of file diff --git a/feature/worker/home/src/main/java/com/idle/worker/home/WorkerHomeViewModel.kt b/feature/worker/home/src/main/java/com/idle/worker/home/WorkerHomeViewModel.kt index 59c061cc..dc9b32ab 100644 --- a/feature/worker/home/src/main/java/com/idle/worker/home/WorkerHomeViewModel.kt +++ b/feature/worker/home/src/main/java/com/idle/worker/home/WorkerHomeViewModel.kt @@ -2,10 +2,10 @@ package com.idle.worker.home import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.binding.ToastType -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.jobposting.ApplyMethod import com.idle.domain.model.jobposting.CrawlingJobPosting import com.idle.domain.model.jobposting.JobPosting @@ -41,8 +41,8 @@ class WorkerHomeViewModel @Inject constructor( private val showNotificationCenterUseCase: ShowNotificationCenterUseCase, private val getUnreadNotificationCountUseCase: GetUnreadNotificationCountUseCase, private val jobPostingRepository: JobPostingRepository, - private val errorHandlerHelper: ErrorHandler, - private val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + private val eventHelper: EventHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _profile = MutableStateFlow(null) @@ -80,7 +80,7 @@ class WorkerHomeViewModel @Inject constructor( internal fun getUnreadNotificationCount() = viewModelScope.launch { getUnreadNotificationCountUseCase().onSuccess { _unreadNotificationCount.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun applyJobPosting(jobPostingId: String) = viewModelScope.launch { @@ -88,7 +88,7 @@ class WorkerHomeViewModel @Inject constructor( jobPostingId = jobPostingId, applyMethod = ApplyMethod.APP ).onSuccess { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("지원이 완료되었어요.", ToastType.SUCCESS)) + eventHelper.sendEvent(MainEvent.ShowToast("지원이 완료되었어요.", ToastType.SUCCESS)) _jobPostings.value = _jobPostings.value?.map { if (it.jobPostingType == JobPostingType.CAREMEET && it.id == jobPostingId) { @@ -96,7 +96,7 @@ class WorkerHomeViewModel @Inject constructor( jobPosting.copy(applyTime = LocalDateTime.now()) } else it } - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun addFavoriteJobPosting( @@ -107,7 +107,7 @@ class WorkerHomeViewModel @Inject constructor( jobPostingId = jobPostingId, jobPostingType = jobPostingType, ).onSuccess { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("즐겨찾기에 추가되었어요.", ToastType.SUCCESS)) + eventHelper.sendEvent(MainEvent.ShowToast("즐겨찾기에 추가되었어요.", ToastType.SUCCESS)) _jobPostings.value = _jobPostings.value?.map { when (it.jobPostingType) { @@ -122,12 +122,12 @@ class WorkerHomeViewModel @Inject constructor( } } } - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun removeFavoriteJobPosting(jobPostingId: String) = viewModelScope.launch { removeFavoriteJobPostingUseCase(jobPostingId = jobPostingId).onSuccess { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("즐겨찾기에서 제거되었어요", ToastType.SUCCESS)) + eventHelper.sendEvent(MainEvent.ShowToast("즐겨찾기에서 제거되었어요", ToastType.SUCCESS)) _jobPostings.value = _jobPostings.value?.map { when (it.jobPostingType) { @@ -142,7 +142,7 @@ class WorkerHomeViewModel @Inject constructor( } } } - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun showNotificationCenter() = viewModelScope.launch { @@ -157,7 +157,7 @@ class WorkerHomeViewModel @Inject constructor( getLocalMyWorkerProfileUseCase().onSuccess { _profile.value = it }.onFailure { - eventHandlerHelper.sendEvent(MainEvent.ShowToast(it.message.toString())) + eventHelper.sendEvent(MainEvent.ShowToast(it.message.toString())) } } @@ -185,7 +185,7 @@ class WorkerHomeViewModel @Inject constructor( if (_jobPostings.value?.isEmpty() != false) { getJobPostings() } - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } private suspend fun fetchCrawlingJobPostings() { @@ -195,7 +195,7 @@ class WorkerHomeViewModel @Inject constructor( _callType.value = JobPostingCallType.END } _jobPostings.value = _jobPostings.value?.plus(postings) ?: postings - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } diff --git a/feature/worker/job-posting/src/main/java/com/idle/worker/job/posting/WorkerJobPostingViewModel.kt b/feature/worker/job-posting/src/main/java/com/idle/worker/job/posting/WorkerJobPostingViewModel.kt index 345ec072..cd68e2ac 100644 --- a/feature/worker/job-posting/src/main/java/com/idle/worker/job/posting/WorkerJobPostingViewModel.kt +++ b/feature/worker/job-posting/src/main/java/com/idle/worker/job/posting/WorkerJobPostingViewModel.kt @@ -2,10 +2,10 @@ package com.idle.worker.job.posting import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.binding.ToastType -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.jobposting.ApplyMethod import com.idle.domain.model.jobposting.CrawlingJobPosting import com.idle.domain.model.jobposting.JobPosting @@ -35,8 +35,8 @@ class WorkerJobPostingViewModel @Inject constructor( private val applyJobPostingUseCase: ApplyJobPostingUseCase, private val addFavoriteJobPostingUseCase: AddFavoriteJobPostingUseCase, private val removeFavoriteJobPostingUseCase: RemoveFavoriteJobPostingUseCase, - private val errorHandlerHelper: ErrorHandler, - private val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + private val eventHelper: EventHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { private val _profile = MutableStateFlow(null) @@ -94,7 +94,7 @@ class WorkerJobPostingViewModel @Inject constructor( } _appliedJobPostings.value = _appliedJobPostings.value?.plus(postings) ?: postings - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } finally { isLoading = false } @@ -108,13 +108,13 @@ class WorkerJobPostingViewModel @Inject constructor( private suspend fun getFavoriteCareMeetJobPostings() { getMyFavoritesJobPostingsUseCase().onSuccess { postings -> _favoriteJobPostings.value = _favoriteJobPostings.value?.plus(postings) ?: postings - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } private suspend fun getFavoriteCrawlingJobPostings() { getMyFavoritesCrawlingJobPostingsUseCase().onSuccess { postings -> _favoriteJobPostings.value = _favoriteJobPostings.value?.plus(postings) ?: postings - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun applyJobPosting(jobPostingId: String) = viewModelScope.launch { @@ -122,7 +122,7 @@ class WorkerJobPostingViewModel @Inject constructor( jobPostingId = jobPostingId, applyMethod = ApplyMethod.APP ).onSuccess { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("지원이 완료되었어요.", ToastType.SUCCESS)) + eventHelper.sendEvent(MainEvent.ShowToast("지원이 완료되었어요.", ToastType.SUCCESS)) _appliedJobPostings.value = _appliedJobPostings.value?.map { if (it.jobPostingType == JobPostingType.CAREMEET && it.id == jobPostingId) { @@ -137,7 +137,7 @@ class WorkerJobPostingViewModel @Inject constructor( jobPosting.copy(applyTime = LocalDateTime.now()) } else it } - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun addFavoriteJobPosting( @@ -148,7 +148,7 @@ class WorkerJobPostingViewModel @Inject constructor( jobPostingId = jobPostingId, jobPostingType = jobPostingType, ).onSuccess { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("즐겨찾기에 추가되었어요.", ToastType.SUCCESS)) + eventHelper.sendEvent(MainEvent.ShowToast("즐겨찾기에 추가되었어요.", ToastType.SUCCESS)) _appliedJobPostings.value = _appliedJobPostings.value?.map { when (it.jobPostingType) { @@ -177,12 +177,12 @@ class WorkerJobPostingViewModel @Inject constructor( } } } - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun removeFavoriteJobPosting(jobPostingId: String) = viewModelScope.launch { removeFavoriteJobPostingUseCase(jobPostingId = jobPostingId).onSuccess { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("즐겨찾기에서 제거했어요.", ToastType.SUCCESS)) + eventHelper.sendEvent(MainEvent.ShowToast("즐겨찾기에서 제거했어요.", ToastType.SUCCESS)) _appliedJobPostings.value = _appliedJobPostings.value?.map { when (it.jobPostingType) { @@ -211,7 +211,7 @@ class WorkerJobPostingViewModel @Inject constructor( } } } - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } } diff --git a/feature/worker/profile/src/main/java/com/idle/worker/profile/WorkerProfileViewModel.kt b/feature/worker/profile/src/main/java/com/idle/worker/profile/WorkerProfileViewModel.kt index f9ebff0b..131d840f 100644 --- a/feature/worker/profile/src/main/java/com/idle/worker/profile/WorkerProfileViewModel.kt +++ b/feature/worker/profile/src/main/java/com/idle/worker/profile/WorkerProfileViewModel.kt @@ -4,10 +4,10 @@ import android.net.Uri import androidx.core.net.toUri import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent import com.idle.binding.ToastType -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.profile.JobSearchStatus import com.idle.domain.model.profile.WorkerProfile import com.idle.domain.usecase.profile.GetLocalMyWorkerProfileUseCase @@ -24,8 +24,8 @@ class WorkerProfileViewModel @Inject constructor( private val getLocalMyWorkerProfileUseCase: GetLocalMyWorkerProfileUseCase, private val getWorkerProfileUseCase: GetWorkerProfileUseCase, private val updateWorkerProfileUseCase: UpdateWorkerProfileUseCase, - private val errorHandlerHelper: ErrorHandler, - private val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + private val eventHelper: EventHelper, ) : ViewModel() { private val _workerProfile = MutableStateFlow(null) val workerProfile = _workerProfile.asStateFlow() @@ -101,7 +101,7 @@ class WorkerProfileViewModel @Inject constructor( _roadNameAddress.value = it.roadNameAddress _lotNumberAddress.value = it.lotNumberAddress _jobSearchStatus.value = it.jobSearchStatus - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun getWorkerProfile(workerId: String) = viewModelScope.launch { @@ -114,13 +114,13 @@ class WorkerProfileViewModel @Inject constructor( _roadNameAddress.value = it.roadNameAddress _lotNumberAddress.value = it.lotNumberAddress _jobSearchStatus.value = it.jobSearchStatus - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun updateWorkerProfile() = viewModelScope.launch { val workerProfile = _workerProfile.value if (workerProfile == null) { - eventHandlerHelper.sendEvent(MainEvent.ShowToast("로딩중입니다.")) + eventHelper.sendEvent(MainEvent.ShowToast("로딩중입니다.")) return@launch } @@ -136,14 +136,14 @@ class WorkerProfileViewModel @Inject constructor( jobSearchStatus = _jobSearchStatus.value, ).onSuccess { getMyWorkerProfile() - eventHandlerHelper.sendEvent( + eventHelper.sendEvent( MainEvent.ShowToast( "정보 수정이 완료되었어요.", toastType = ToastType.SUCCESS ) ) setEditState(false) - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } .also { _isUpdateLoading.value = false } } } \ No newline at end of file diff --git a/presentation/src/main/java/com/idle/presentation/MainViewModel.kt b/presentation/src/main/java/com/idle/presentation/MainViewModel.kt index 0b3506b6..fa3a9b70 100644 --- a/presentation/src/main/java/com/idle/presentation/MainViewModel.kt +++ b/presentation/src/main/java/com/idle/presentation/MainViewModel.kt @@ -4,12 +4,12 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.idle.analytics.error.ErrorLoggingHelper import com.idle.auth.R -import com.idle.binding.EventHandlerHelper +import com.idle.binding.EventHelper import com.idle.binding.MainEvent.ShowToast import com.idle.domain.model.auth.UserType import com.idle.domain.model.config.ForceUpdate import com.idle.domain.model.error.ApiErrorCode -import com.idle.domain.model.error.ErrorHandler +import com.idle.domain.model.error.ErrorHelper import com.idle.domain.model.error.HttpResponseException import com.idle.domain.model.jobposting.SharedJobPostingInfo import com.idle.domain.model.profile.CenterManagerAccountStatus @@ -49,8 +49,8 @@ class MainViewModel @Inject constructor( private val jobPostingRepository: JobPostingRepository, // private val connectWebSocketUseCase: ConnectWebSocketUseCase, // private val disconnectWebSocketUseCase: DisconnectWebSocketUseCase, - private val errorHandlerHelper: ErrorHandler, - private val eventHandlerHelper: EventHandlerHelper, + private val errorHelper: ErrorHelper, + private val eventHelper: EventHelper, val errorLoggingHelper: ErrorLoggingHelper, val navigationHelper: com.idle.navigation.NavigationHelper, ) : ViewModel() { @@ -60,7 +60,7 @@ class MainViewModel @Inject constructor( private val _forceUpdate = MutableStateFlow(null) val forceUpdate = _forceUpdate.asStateFlow() - val eventFlow = eventHandlerHelper.eventFlow + val eventFlow = eventHelper.eventFlow .shareIn( scope = viewModelScope, started = SharingStarted.Lazily, @@ -89,7 +89,7 @@ class MainViewModel @Inject constructor( internal fun getForceUpdateInfo() = viewModelScope.launch { getForceUpdateInfoUseCase().onSuccess { _forceUpdate.value = it - }.onFailure { errorHandlerHelper.sendError(it) } + }.onFailure { errorHelper.sendError(it) } } internal fun initializeUserSession() = viewModelScope.launch { @@ -113,7 +113,7 @@ class MainViewModel @Inject constructor( } internal fun readNotification(notificationId: String) = viewModelScope.launch { - readNotificationUseCase(notificationId).onFailure { errorHandlerHelper.sendError(it) } + readNotificationUseCase(notificationId).onFailure { errorHelper.sendError(it) } } private suspend fun getAccessTokenAndUserRole(): Pair = coroutineScope { @@ -169,7 +169,7 @@ class MainViewModel @Inject constructor( } private fun handleError() = viewModelScope.launch { - errorHandlerHelper.errorEvent.collect { exception -> + errorHelper.errorEvent.collect { exception -> errorLoggingHelper.logError(exception) when (exception) { @@ -186,13 +186,13 @@ class MainViewModel @Inject constructor( ) ) - else -> eventHandlerHelper.sendEvent(ShowToast(exception.print())) + else -> eventHelper.sendEvent(ShowToast(exception.print())) } return@collect } - is SocketTimeoutException -> eventHandlerHelper.sendEvent(ShowToast("서버 응답 시간이 초과되었습니다. 잠시 후 다시 시도해 주세요.")) - is IOException -> eventHandlerHelper.sendEvent(ShowToast("인터넷 연결이 불안정합니다. 네트워크 상태를 확인해 주세요.")) + is SocketTimeoutException -> eventHelper.sendEvent(ShowToast("서버 응답 시간이 초과되었습니다. 잠시 후 다시 시도해 주세요.")) + is IOException -> eventHelper.sendEvent(ShowToast("인터넷 연결이 불안정합니다. 네트워크 상태를 확인해 주세요.")) else -> {} } }