ServerSetupViewModel

class ServerSetupViewModel(val launchSource: LaunchSource = LaunchSource.SPLASH, val dispatchersProvider: DispatchersProvider, val buildInfoProvider: BuildInfoProvider, val getConfigurationUseCase: GetConfigurationUseCase, val getLocalOnnxModelsUseCase: GetLocalOnnxModelsUseCase, val getLocalMediaPipeModelsUseCase: GetLocalMediaPipeModelsUseCase, val getLocalSdxlModelsUseCase: GetLocalSdxlModelsUseCase, val getLocalCoreMlModelsUseCase: GetLocalCoreMlModelsUseCase, val getLocalBonsaiModelsUseCase: GetLocalBonsaiModelsUseCase, val fetchHuggingFaceModelsUseCase: FetchHuggingFaceModelsUseCase, val urlValidator: UrlValidator, val stringValidator: CommonStringValidator, val filePathValidator: FilePathValidator, val connectToA1111UseCase: ConnectToA1111UseCase, val connectToSwarmUiUseCase: ConnectToSwarmUiUseCase, val connectToHordeUseCase: ConnectToHordeUseCase, val connectToHuggingFaceUseCase: ConnectToHuggingFaceUseCase, val connectToLocalDiffusionUseCase: ConnectToLocalDiffusionUseCase, val connectToMediaPipeUseCase: ConnectToMediaPipeUseCase, val connectToSdxlUseCase: ConnectToSdxlUseCase, val connectToCoreMlUseCase: ConnectToCoreMlUseCase, val connectToBonsaiUseCase: ConnectToBonsaiUseCase, val connectToOpenAiUseCase: ConnectToOpenAiUseCase, val connectToStabilityAiUseCase: ConnectToStabilityAiUseCase, val connectToFalAiUseCase: ConnectToFalAiUseCase, val connectToArliAiUseCase: ConnectToArliAiUseCase, val downloadModelUseCase: DownloadModelUseCase, val deleteModelUseCase: DeleteModelUseCase, val downloadGuard: ServerSetupDownloadGuard, val storageUsageObserver: StorageUsageObserver, val linksProvider: LinksProvider, val preferenceManager: PreferenceManager, val router: ServerSetupRouter, val onError: (Throwable) -> Unit = {}) : BaseMviViewModel<ServerSetupState, ServerSetupIntent, ServerSetupEffect> (source)

Owns provider setup state, validation, local model downloads, and final connection side effects.

Author

Dmitriy Moroz

Parameters

launchSource

Screen that opened setup, used to decide back navigation and completion route.

dispatchersProvider

App coroutine dispatchers used by setup work.

buildInfoProvider

Build metadata used to filter platform-supported local providers.

getConfigurationUseCase

Reads the current provider configuration.

getLocalOnnxModelsUseCase

Reads locally configured ONNX models.

getLocalMediaPipeModelsUseCase

Reads locally configured MediaPipe models.

getLocalSdxlModelsUseCase

Reads locally configured SDXL models.

getLocalCoreMlModelsUseCase

Reads locally configured Core ML models on supported builds.

fetchHuggingFaceModelsUseCase

Fetches Hugging Face model list for remote setup.

urlValidator

Validates provider URL input.

stringValidator

Validates text settings entered by the user.

filePathValidator

Validates local file path settings.

connectToA1111UseCase

Applies Automatic1111 configuration.

connectToSwarmUiUseCase

Applies SwarmUI configuration.

connectToHordeUseCase

Applies Horde configuration.

connectToHuggingFaceUseCase

Applies Hugging Face configuration.

connectToLocalDiffusionUseCase

Applies ONNX local diffusion configuration.

connectToMediaPipeUseCase

Applies MediaPipe local diffusion configuration.

connectToSdxlUseCase

Applies SDXL local diffusion configuration.

connectToCoreMlUseCase

Applies Core ML local diffusion configuration.

connectToOpenAiUseCase

Applies OpenAI configuration.

connectToStabilityAiUseCase

Applies Stability AI configuration.

connectToFalAiUseCase

Applies Fal AI configuration.

downloadModelUseCase

Downloads a selected local model.

deleteModelUseCase

Deletes a selected local model.

downloadGuard

Platform guard for model download prerequisites.

storageUsageObserver

Invalidates Settings storage summaries after model changes.

linksProvider

External links and demo mode URL used by setup.

preferenceManager

Persists setup preferences.

router

Setup navigation contract.

onError

Error callback forwarded to the app-level error handling pipeline.

Constructors

Link copied to clipboard
constructor(launchSource: LaunchSource = LaunchSource.SPLASH, dispatchersProvider: DispatchersProvider, buildInfoProvider: BuildInfoProvider, getConfigurationUseCase: GetConfigurationUseCase, getLocalOnnxModelsUseCase: GetLocalOnnxModelsUseCase, getLocalMediaPipeModelsUseCase: GetLocalMediaPipeModelsUseCase, getLocalSdxlModelsUseCase: GetLocalSdxlModelsUseCase, getLocalCoreMlModelsUseCase: GetLocalCoreMlModelsUseCase, getLocalBonsaiModelsUseCase: GetLocalBonsaiModelsUseCase, fetchHuggingFaceModelsUseCase: FetchHuggingFaceModelsUseCase, urlValidator: UrlValidator, stringValidator: CommonStringValidator, filePathValidator: FilePathValidator, connectToA1111UseCase: ConnectToA1111UseCase, connectToSwarmUiUseCase: ConnectToSwarmUiUseCase, connectToHordeUseCase: ConnectToHordeUseCase, connectToHuggingFaceUseCase: ConnectToHuggingFaceUseCase, connectToLocalDiffusionUseCase: ConnectToLocalDiffusionUseCase, connectToMediaPipeUseCase: ConnectToMediaPipeUseCase, connectToSdxlUseCase: ConnectToSdxlUseCase, connectToCoreMlUseCase: ConnectToCoreMlUseCase, connectToBonsaiUseCase: ConnectToBonsaiUseCase, connectToOpenAiUseCase: ConnectToOpenAiUseCase, connectToStabilityAiUseCase: ConnectToStabilityAiUseCase, connectToFalAiUseCase: ConnectToFalAiUseCase, connectToArliAiUseCase: ConnectToArliAiUseCase, downloadModelUseCase: DownloadModelUseCase, deleteModelUseCase: DeleteModelUseCase, downloadGuard: ServerSetupDownloadGuard, storageUsageObserver: StorageUsageObserver, linksProvider: LinksProvider, preferenceManager: PreferenceManager, router: ServerSetupRouter, onError: (Throwable) -> Unit = {})

Properties

Link copied to clipboard
private val _effect: Channel<E>
Link copied to clipboard
private val _state: MutableStateFlow<S>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
private val downloadJobs: MutableMap<String, Job>
Link copied to clipboard
Link copied to clipboard
open override val effect: Flow<ServerSetupEffect>
Link copied to clipboard
private val effectDispatcher: CoroutineDispatcher
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
private val onError: (Throwable) -> Unit
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override val state: StateFlow<ServerSetupState>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
expect open fun addCloseable(closeable: AutoCloseable)
expect fun addCloseable(key: String, closeable: AutoCloseable)
Link copied to clipboard
internal expect fun clear()
Link copied to clipboard
private suspend fun connectToArliAi(): Result<Unit>
Link copied to clipboard
private suspend fun connectToAutomaticInstance(): Result<Unit>
Link copied to clipboard
private suspend fun connectToBonsai(): Result<Unit>
Link copied to clipboard
private suspend fun connectToCoreMl(): Result<Unit>
Link copied to clipboard
private suspend fun connectToFalAi(): Result<Unit>
Link copied to clipboard
private suspend fun connectToHorde(): Result<Unit>
Link copied to clipboard
private suspend fun connectToHuggingFace(): Result<Unit>
Link copied to clipboard
private suspend fun connectToLocalDiffusion(): Result<Unit>
Link copied to clipboard
private suspend fun connectToMediaPipe(): Result<Unit>
Link copied to clipboard
private suspend fun connectToOpenAi(): Result<Unit>
Link copied to clipboard
private suspend fun connectToSdxl(): Result<Unit>
Link copied to clipboard
private fun connectToServer()
Link copied to clipboard
private suspend fun connectToStabilityAi(): Result<Unit>
Link copied to clipboard
private suspend fun connectToSwarmUi(): Result<Unit>
Link copied to clipboard
private fun deleteLocalModel(id: String)
Link copied to clipboard
private fun download(modelId: String, url: String)
Link copied to clipboard
protected fun emitEffect(effect: ServerSetupEffect)
Link copied to clipboard
protected fun emitState(state: ServerSetupState)
Link copied to clipboard
expect fun <T : AutoCloseable> getCloseable(key: String): T?
Link copied to clipboard
protected fun launch(dispatcher: CoroutineDispatcher, start: CoroutineStart, block: suspend CoroutineScope.() -> Unit): Job
Link copied to clipboard
protected expect open fun onCleared()
Link copied to clipboard
Link copied to clipboard
open override fun processIntent(intent: ServerSetupIntent)
Link copied to clipboard
private fun scopeLaunchDownload(localModel: ServerSetupState.LocalModel, url: String): Job
Link copied to clipboard
protected fun updateState(mutation: (ServerSetupState) -> ServerSetupState)
Link copied to clipboard
private fun validate(): Boolean
Link copied to clipboard