Dispatch log callbacks to main thread
Move allLogs/bufferedLogs mutations in appendLogs, clearLogs, and setDefaultLogLevel into viewModelScope.launch(Dispatchers.Main) to avoid concurrent iteration from the search debounce flow.
This commit is contained in:
@@ -81,16 +81,20 @@ class LogViewModel :
|
||||
|
||||
override fun setDefaultLogLevel(level: Int) {
|
||||
val logLevel = LogLevel.entries.find { it.priority == level } ?: error("Unknown log level: $level")
|
||||
viewModelScope.launch(Dispatchers.Main) {
|
||||
_uiState.update { it.copy(defaultLogLevel = logLevel) }
|
||||
updateDisplayedLogs()
|
||||
}
|
||||
}
|
||||
|
||||
override fun clearLogs() {
|
||||
viewModelScope.launch(Dispatchers.Main) {
|
||||
allLogs.clear()
|
||||
bufferedLogs.clear()
|
||||
_uiState.update { it.copy(isPaused = false) }
|
||||
updateDisplayedLogs()
|
||||
}
|
||||
}
|
||||
|
||||
override fun requestClearLogs() {
|
||||
viewModelScope.launch {
|
||||
@@ -104,6 +108,7 @@ class LogViewModel :
|
||||
|
||||
override fun appendLogs(message: List<LogEntry>) {
|
||||
val processedLogs = message.map { processLogEntry(it) }
|
||||
viewModelScope.launch(Dispatchers.Main) {
|
||||
if (_uiState.value.isPaused) {
|
||||
bufferedLogs.addAll(processedLogs)
|
||||
} else {
|
||||
@@ -124,6 +129,7 @@ class LogViewModel :
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun togglePause() {
|
||||
val currentState = _uiState.value
|
||||
|
||||
Reference in New Issue
Block a user