bugfix: fix the malfunctioning monitoring switch
This commit is contained in:
parent
ba6528e59e
commit
99d77b618a
|
|
@ -98,6 +98,7 @@ fun AppContent(
|
|||
val engineState by mainViewModel.engineState.collectAsState()
|
||||
|
||||
// Metric states for scaffolds
|
||||
val isMonitoringEnabled by settingsViewModel.isMonitoringEnabled.collectAsState()
|
||||
val memoryUsage by settingsViewModel.memoryUsage.collectAsState()
|
||||
val temperatureInfo by settingsViewModel.temperatureMetrics.collectAsState()
|
||||
val useFahrenheit by settingsViewModel.useFahrenheitUnit.collectAsState()
|
||||
|
|
@ -251,7 +252,7 @@ fun AppContent(
|
|||
navigationIcon = NavigationIcon.Back {
|
||||
modelLoadingViewModel.onBackPressed { navigationActions.navigateUp() }
|
||||
},
|
||||
memoryMetrics = memoryUsage,
|
||||
memoryMetrics = if (isMonitoringEnabled) memoryUsage else null,
|
||||
temperatureInfo = null
|
||||
)
|
||||
)
|
||||
|
|
@ -268,8 +269,8 @@ fun AppContent(
|
|||
navigationIcon = NavigationIcon.Back {
|
||||
benchmarkViewModel.onBackPressed { navigationActions.navigateUp() }
|
||||
},
|
||||
memoryMetrics = memoryUsage,
|
||||
temperatureInfo = Pair(temperatureInfo, useFahrenheit)
|
||||
memoryMetrics = if (isMonitoringEnabled) memoryUsage else null,
|
||||
temperatureInfo = if (isMonitoringEnabled) Pair(temperatureInfo, useFahrenheit) else null
|
||||
),
|
||||
bottomBarConfig = BottomBarConfig.Benchmark(
|
||||
engineIdle = !engineState.isUninterruptible,
|
||||
|
|
@ -314,8 +315,8 @@ fun AppContent(
|
|||
navigationIcon = NavigationIcon.Back {
|
||||
conversationViewModel.onBackPressed { navigationActions.navigateUp() }
|
||||
},
|
||||
memoryMetrics = memoryUsage,
|
||||
temperatureInfo = Pair(temperatureInfo, useFahrenheit)
|
||||
memoryMetrics = if (isMonitoringEnabled) memoryUsage else null,
|
||||
temperatureInfo = if (isMonitoringEnabled) Pair(temperatureInfo, useFahrenheit) else null,
|
||||
),
|
||||
bottomBarConfig = BottomBarConfig.Conversation(
|
||||
isEnabled = !modelThinkingOrSpeaking,
|
||||
|
|
@ -402,7 +403,7 @@ fun AppContent(
|
|||
topBarConfig = TopBarConfig.Storage(
|
||||
title = "Models Management",
|
||||
navigationIcon = NavigationIcon.Back { navigationActions.navigateUp() },
|
||||
storageMetrics = storageMetrics
|
||||
storageMetrics = if (isMonitoringEnabled) storageMetrics else null,
|
||||
),
|
||||
bottomBarConfig = bottomBarConfig
|
||||
)
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ import java.util.Locale
|
|||
@Composable
|
||||
fun PerformanceTopBar(
|
||||
title: String,
|
||||
memoryMetrics: MemoryMetrics,
|
||||
memoryMetrics: MemoryMetrics?,
|
||||
temperatureDisplay: Pair<TemperatureMetrics, Boolean>?,
|
||||
onNavigateBack: (() -> Unit)? = null,
|
||||
onMenuOpen: (() -> Unit)? = null,
|
||||
|
|
@ -70,7 +70,9 @@ fun PerformanceTopBar(
|
|||
}
|
||||
|
||||
// Memory indicator
|
||||
MemoryIndicator(memoryUsage = memoryMetrics)
|
||||
memoryMetrics?.let {
|
||||
MemoryIndicator(memoryUsage = it)
|
||||
}
|
||||
},
|
||||
colors = TopAppBarDefaults.topAppBarColors(
|
||||
containerColor = MaterialTheme.colorScheme.surface,
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ sealed class TopBarConfig {
|
|||
data class Performance(
|
||||
override val title: String,
|
||||
override val navigationIcon: NavigationIcon,
|
||||
val memoryMetrics: MemoryMetrics,
|
||||
val memoryMetrics: MemoryMetrics?,
|
||||
val temperatureInfo: Pair<TemperatureMetrics, Boolean>?,
|
||||
) : TopBarConfig()
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import com.example.llama.monitoring.StorageMetrics
|
|||
import com.example.llama.monitoring.TemperatureMetrics
|
||||
import com.example.llama.monitoring.TemperatureWarningLevel
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
|
|
@ -87,45 +88,48 @@ class SettingsViewModel @Inject constructor(
|
|||
/**
|
||||
* Starts monitoring device performance.
|
||||
*/
|
||||
private var monitoringJob: Job? = null
|
||||
private fun startMonitoring() {
|
||||
val interval = _monitoringInterval.value
|
||||
|
||||
monitoringJob?.cancel()
|
||||
viewModelScope.launch {
|
||||
launch {
|
||||
modelRepository.getStorageMetrics().collect { metrics ->
|
||||
_storageMetrics.value = metrics
|
||||
}
|
||||
}
|
||||
|
||||
viewModelScope.launch {
|
||||
launch {
|
||||
performanceMonitor.monitorMemoryUsage(interval).collect { metrics ->
|
||||
_memoryUsage.value = metrics
|
||||
}
|
||||
}
|
||||
|
||||
viewModelScope.launch {
|
||||
launch {
|
||||
performanceMonitor.monitorBattery(interval * 2).collect { metrics ->
|
||||
_batteryInfo.value = metrics
|
||||
}
|
||||
}
|
||||
|
||||
viewModelScope.launch {
|
||||
launch {
|
||||
performanceMonitor.monitorTemperature(interval * 2).collect { metrics ->
|
||||
_temperatureMetrics.value = metrics
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether performance monitoring is enabled.
|
||||
*/
|
||||
fun setMonitoringEnabled(enabled: Boolean) {
|
||||
viewModelScope.launch {
|
||||
userPreferences.setPerformanceMonitoringEnabled(enabled)
|
||||
_isMonitoringEnabled.value = enabled
|
||||
|
||||
if (enabled && !isMonitoringActive()) {
|
||||
if (enabled && !_isMonitoringEnabled.value) {
|
||||
startMonitoring()
|
||||
}
|
||||
_isMonitoringEnabled.value = enabled
|
||||
userPreferences.setPerformanceMonitoringEnabled(enabled)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -144,23 +148,15 @@ class SettingsViewModel @Inject constructor(
|
|||
*/
|
||||
fun setMonitoringInterval(intervalMs: Long) {
|
||||
viewModelScope.launch {
|
||||
userPreferences.setMonitoringInterval(intervalMs)
|
||||
_monitoringInterval.value = intervalMs
|
||||
|
||||
// Restart monitoring with new interval if active
|
||||
if (isMonitoringActive()) {
|
||||
if (_isMonitoringEnabled.value) {
|
||||
startMonitoring()
|
||||
}
|
||||
userPreferences.setMonitoringInterval(intervalMs)
|
||||
_monitoringInterval.value = intervalMs
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if monitoring is currently active.
|
||||
*/
|
||||
private fun isMonitoringActive(): Boolean {
|
||||
return _isMonitoringEnabled.value
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the theme mode.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue