Skip to content

Instantly share code, notes, and snippets.

View virendersran01's full-sized avatar
💻
Working from home

Virender Srxn virendersran01

💻
Working from home
  • India
View GitHub Profile
override suspend fun getDetailAgentVisitWithFullResponse(id: Int): SallyResponseResource<BaseResponse<GetAgentDetailResponse>> {
return iAgentVisitRepository.getDetailAgentVisitWithFullResponse(id)
}
override fun getDetailAgentVisitFullResponseFlow(id: Int): Flow<SallyResponseResource<BaseResponse<GetAgentDetailResponse>>> {
return iAgentVisitRepository.getDetailAgentVisitFullResponseFlow(id)
}
sealed interface VisitingUiEvent {
data class ShowErrorMessageStatic(
val staticError: String?,
val dynamicError: String?,
val errorCode: String?
) : VisitingUiEvent
}
sealed interface VisitingDetailUiState {
object Loading : VisitingDetailUiState
data class Error(val error: String) : VisitingDetailUiState
data class Success(
val agentVisitingDetail: GetAgentDetailResponse? = null
) : VisitingDetailUiState
}
private val _uiStateDetail =
MutableStateFlow<VisitingDetailUiState>(VisitingDetailUiState.Loading)
val uiStateDetail = _uiStateDetail.asStateFlow()
private val _eventFlow = MutableSharedFlow<VisitingUiEvent>(replay = 1)
val eventFlow = _eventFlow.asSharedFlow()
fun getAgentVisitDetailFullResponse() {
val visitId = savedStateHandle.get<Int>("visitId")
viewModelScope.launch {
val visitDetail = visitId?.let { useCase.getDetailAgentVisitWithFullResponse(id = it) }
when (visitDetail) {
is SallyResponseResource.Loading -> {
_uiStateDetail.value = VisitingDetailUiState.Loading
}
is SallyResponseResource.Success -> {
override fun onViewCreated() {
viewModel.getAgentVisitDetailFullResponse()
observeVisitDetail()
}
private fun observeVisitDetail() {
viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.uiStateDetail.collect { visitingUiState ->
when (visitingUiState) {
@Composable
Fun stateFullScreen(){
// lets say we done handle our viewmodels
Val uiState by viewmodel.uiState.collectWithLifeCycle()
LaunchedEffect() {
viewmodel.getAgentVisitDetailFullResponse()
}
stateLessScreen(
fun getAgentVisitDetailFullResponseFlow() {
val visitId = savedStateHandle.get<Int>("visitId")
viewModelScope.launch {
if (visitId != null) {
useCase.getDetailAgentVisitFullResponseFlow(id = visitId)
.collectLatest { visitDetail ->
when (visitDetail) {
is SallyResponseResource.Loading -> {
_uiStateDetail.value = VisitingDetailUiState.Loading
}
override fun onViewCreated() {
viewModel.getAgentVisitDetailFullResponseFlow()
observeVisitDetail()
}
val visitId = savedStateHandle.get<Int>("visitId")
val agentDetail: StateFlow<VisitingDetailUiState>? =
visitId?.let {
useCase.getDetailAgentVisitFullResponseFlow(id = it).map { visitDetail ->
Log.d("MYTAG", ": got exec")
when (visitDetail) {
is SallyResponseResource.Loading -> {
VisitingDetailUiState.Loading
}