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