diff --git a/agrilinkvocpro/app/src/main/java/com/syaroful/agrilinkvocpro/presentation/dynamicModule/DynamicModuleViewModel.kt b/agrilinkvocpro/app/src/main/java/com/syaroful/agrilinkvocpro/presentation/dynamicModule/DynamicModuleViewModel.kt deleted file mode 100644 index a45eff9..0000000 --- a/agrilinkvocpro/app/src/main/java/com/syaroful/agrilinkvocpro/presentation/dynamicModule/DynamicModuleViewModel.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.syaroful.agrilinkvocpro.presentation.dynamicModule - -import androidx.lifecycle.ViewModel -import com.google.android.play.core.splitinstall.SplitInstallException -import com.google.android.play.core.splitinstall.SplitInstallStateUpdatedListener -import com.google.android.play.core.splitinstall.model.SplitInstallErrorCode -import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus -import com.syaroful.agrilinkvocpro.core.utils.DownloadState -import com.syaroful.agrilinkvocpro.data.repository.DynamicModuleRepository -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.asStateFlow -import javax.inject.Inject - -@HiltViewModel -class DynamicModuleViewModel @Inject constructor( - private val repository: DynamicModuleRepository -) : ViewModel() { - private val _downloadState = MutableStateFlow(DownloadState.Idle) - val downloadState: StateFlow = _downloadState.asStateFlow() - - private val listener = SplitInstallStateUpdatedListener { state -> - if (state.sessionId() == repository.getSessionId()) { - when (state.status()) { - SplitInstallSessionStatus.DOWNLOADING -> { - val progress = if (state.totalBytesToDownload() > 0) - state.bytesDownloaded().toFloat() / state.totalBytesToDownload() - else 0f - _downloadState.value = DownloadState.DownloadingWithProgress(progress) - } - - SplitInstallSessionStatus.DOWNLOADED -> _downloadState.value = - DownloadState.Downloaded - - SplitInstallSessionStatus.INSTALLED -> _downloadState.value = - DownloadState.Installed - - SplitInstallSessionStatus.FAILED -> _downloadState.value = - DownloadState.Failed("Installation Failed") - - SplitInstallSessionStatus.CANCELED -> _downloadState.value = - DownloadState.Failed("Installation Canceled") - - else -> {} - } - } - } - - fun isModuleDownloaded(moduleName: String): Boolean { - return repository.isModuleDownloaded(moduleName) - } - - fun downloadModule(moduleName: String) { - _downloadState.value = DownloadState.Starting - repository.startDownload(moduleName, listener) - .addOnFailureListener { exception -> - val errorCode = (exception as? SplitInstallException)?.errorCode ?: -1 - val errorMessage = when (errorCode) { - SplitInstallErrorCode.NETWORK_ERROR -> "No Internet Connection" - SplitInstallErrorCode.MODULE_UNAVAILABLE -> "Module Unavailable" - SplitInstallErrorCode.ACTIVE_SESSIONS_LIMIT_EXCEEDED -> "Active Session Limit Exceeded" - SplitInstallErrorCode.INSUFFICIENT_STORAGE -> "Insufficient Storage" - SplitInstallErrorCode.PLAY_STORE_NOT_FOUND -> "Play Store Not Found" - else -> "Unknown Error: $errorCode" - } - _downloadState.value = DownloadState.Failed(errorMessage) - } - } - - override fun onCleared() { - super.onCleared() - repository.unregisterListener(listener) - } -} \ No newline at end of file diff --git a/agrilinkvocpro/app/src/main/java/com/syaroful/agrilinkvocpro/presentation/event/HomeUiEvent.kt b/agrilinkvocpro/app/src/main/java/com/syaroful/agrilinkvocpro/presentation/event/HomeUiEvent.kt deleted file mode 100644 index fc1aace..0000000 --- a/agrilinkvocpro/app/src/main/java/com/syaroful/agrilinkvocpro/presentation/event/HomeUiEvent.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.syaroful.agrilinkvocpro.presentation.event - -sealed class HomeUiEvent { - data class RequestModule(val moduleName: String) : HomeUiEvent() - data class ConfirmDownload(val moduleName: String) : HomeUiEvent() -} \ No newline at end of file