Skip to content

Commit

Permalink
[IDLE-000] CenterPending 화면에서 CenterStatus를 2초마다 Polling 하도록 변경 및 Han…
Browse files Browse the repository at this point in the history
…dlerHelper -> Helper 네이밍 변경
  • Loading branch information
tgyuuAn committed Nov 21, 2024
1 parent 932020f commit ecd3e3b
Show file tree
Hide file tree
Showing 35 changed files with 248 additions and 215 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<MainEvent>(BUFFERED)
val eventFlow = _eventFlow.receiveAsFlow()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<Throwable>(extraBufferCapacity = 1)
val errorEvent = _errorEvent.asSharedFlow()

Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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

Expand Down
2 changes: 1 addition & 1 deletion feature/auth/src/main/java/com/idle/auth/AuthFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions feature/auth/src/main/java/com/idle/auth/AuthViewModel.kt
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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<UserType?>(null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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<JobPostingSummary?>(null)
Expand All @@ -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) }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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<String, ChatRoom>>(LinkedHashMap())
Expand Down Expand Up @@ -71,6 +71,6 @@ class CenterChattingViewModel @Inject constructor(
_chatRoomMap.value = LinkedHashMap<String, ChatRoom>().apply {
it.forEach { chatRoom -> put(chatRoom.id, chatRoom) }
}
}.onFailure { errorHandler.sendError(it) }
}.onFailure { errorHelper.sendError(it) }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
Expand Down Expand Up @@ -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) {
Expand All @@ -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 {
Expand All @@ -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) }
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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<CenterProfile?>(null)
Expand Down Expand Up @@ -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
Expand All @@ -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
}
Expand Down Expand Up @@ -317,41 +317,41 @@ 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,
lotNumberAddress = _lotNumberAddress.value,
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()
Expand All @@ -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 {
Expand Down
Loading

0 comments on commit ecd3e3b

Please sign in to comment.