SettingsViewModel

class SettingsViewModel(dispatchersProvider: DispatchersProvider, getStableDiffusionModelsUseCase: GetStableDiffusionModelsUseCase, observeStabilityAiCreditsUseCase: ObserveStabilityAiCreditsUseCase, val selectStableDiffusionModelUseCase: SelectStableDiffusionModelUseCase, val clearAppCacheUseCase: ClearAppCacheUseCase, val getAllGalleryUseCase: GetAllGalleryUseCase, val getLocalOnnxModelsUseCase: GetLocalOnnxModelsUseCase, val getLocalMediaPipeModelsUseCase: GetLocalMediaPipeModelsUseCase, val getLocalSdxlModelsUseCase: GetLocalSdxlModelsUseCase, val getLocalCoreMlModelsUseCase: GetLocalCoreMlModelsUseCase, val getLocalBonsaiModelsUseCase: GetLocalBonsaiModelsUseCase, val observeNetworkUsageUseCase: ObserveNetworkUsageUseCase, val storageUsageObserver: StorageUsageObserver, val preferenceManager: PreferenceManager, val debugMenuAccessor: DebugMenuAccessor, val buildInfoProvider: BuildInfoProvider, val linksProvider: LinksProvider, val router: SettingsRouter, val platformActions: SettingsPlatformActions, val onError: (Throwable) -> Unit = {}) : BaseMviViewModel<SettingsState, SettingsIntent, EmptyEffect> (source)

ViewModel for the Settings tab.

It owns the lightweight settings summaries, including observed storage and network usage byte totals, and delegates detailed cleanup/statistics flows to standalone usage screens.

Author

Dmitriy Moroz

Parameters

dispatchersProvider

App coroutine dispatchers used by the MVI base class and IO work.

getStableDiffusionModelsUseCase

Reads provider model names for the Settings picker.

observeStabilityAiCreditsUseCase

Observes Stability AI credits for Settings summary rows.

selectStableDiffusionModelUseCase

Persists the selected remote model.

clearAppCacheUseCase

Legacy cache use case retained for existing Settings flows.

getAllGalleryUseCase

Reads generated gallery records for storage summaries.

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.

getLocalBonsaiModelsUseCase

Reads locally configured Bonsai models on supported builds.

observeNetworkUsageUseCase

Live Room-backed network usage stream.

storageUsageObserver

Shared invalidation stream for non-Room storage usage.

preferenceManager

Preferences source observed for provider/model refreshes.

debugMenuAccessor

Debug menu availability gate.

buildInfoProvider

Build metadata used to filter platform-supported settings.

linksProvider

External links shown from Settings.

router

Settings navigation contract.

platformActions

Platform permission and settings bridge.

onError

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

Constructors

Link copied to clipboard
constructor(dispatchersProvider: DispatchersProvider, getStableDiffusionModelsUseCase: GetStableDiffusionModelsUseCase, observeStabilityAiCreditsUseCase: ObserveStabilityAiCreditsUseCase, selectStableDiffusionModelUseCase: SelectStableDiffusionModelUseCase, clearAppCacheUseCase: ClearAppCacheUseCase, getAllGalleryUseCase: GetAllGalleryUseCase, getLocalOnnxModelsUseCase: GetLocalOnnxModelsUseCase, getLocalMediaPipeModelsUseCase: GetLocalMediaPipeModelsUseCase, getLocalSdxlModelsUseCase: GetLocalSdxlModelsUseCase, getLocalCoreMlModelsUseCase: GetLocalCoreMlModelsUseCase, getLocalBonsaiModelsUseCase: GetLocalBonsaiModelsUseCase, observeNetworkUsageUseCase: ObserveNetworkUsageUseCase, storageUsageObserver: StorageUsageObserver, preferenceManager: PreferenceManager, debugMenuAccessor: DebugMenuAccessor, buildInfoProvider: BuildInfoProvider, linksProvider: LinksProvider, router: SettingsRouter, platformActions: SettingsPlatformActions, 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
private val appVersionProducer: Flow<String>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override val effect: Flow<EmptyEffect>
Link copied to clipboard
private val effectDispatcher: CoroutineDispatcher
Link copied to clipboard
Link copied to clipboard
private val immediateDispatcher: CoroutineDispatcher
Link copied to clipboard
private val ioDispatcher: CoroutineDispatcher
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
private val router: SettingsRouter
Link copied to clipboard
Link copied to clipboard
private val stabilityCreditsProducer: Flow<Float>
Link copied to clipboard
open override val state: StateFlow<SettingsState>
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
Link copied to clipboard
Link copied to clipboard
internal expect fun clear()
Link copied to clipboard
private fun clearAppCache()
Link copied to clipboard
protected fun emitEffect(effect: EmptyEffect)
Link copied to clipboard
protected fun emitState(state: SettingsState)
Link copied to clipboard
expect fun <T : AutoCloseable> getCloseable(key: String): T?
Link copied to clipboard
private suspend fun getCoreMlModelBytes(allowedModes: List<ServerSource>, modelIds: List<String>): Long

Reads Core ML model bytes from the entire platform model store on iOS-style targets.

Link copied to clipboard
private suspend fun getDownloadedModels(getModels: suspend () -> List<LocalAiModel>): List<LocalAiModel>
Link copied to clipboard
protected fun launch(dispatcher: CoroutineDispatcher, start: CoroutineStart, block: suspend CoroutineScope.() -> Unit): Job
Link copied to clipboard
private suspend fun loadStorageUsageBytes(): Long
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
protected expect open fun onCleared()
Link copied to clipboard
open override fun processIntent(intent: SettingsIntent)
Link copied to clipboard
private fun selectSdModel(value: String)
Link copied to clipboard
protected fun updateState(mutation: (SettingsState) -> SettingsState)