diff --git a/pluto-plugins/plugins/logger/lib/src/main/java/com/pluto/plugins/logger/internal/LogsViewModel.kt b/pluto-plugins/plugins/logger/lib/src/main/java/com/pluto/plugins/logger/internal/LogsViewModel.kt index 75d3c955..48d0f108 100644 --- a/pluto-plugins/plugins/logger/lib/src/main/java/com/pluto/plugins/logger/internal/LogsViewModel.kt +++ b/pluto-plugins/plugins/logger/lib/src/main/java/com/pluto/plugins/logger/internal/LogsViewModel.kt @@ -39,22 +39,13 @@ internal class LogsViewModel(application: Application) : AndroidViewModel(applic } val currentSessionLogs = (rawLogs ?: arrayListOf()) - .asSequence() .filter { it.sessionId == Session.id } - .filter { pastTimeFilter(it.timestamp, logTimeStamp) } - .filter { logType.map { type -> type.type }.contains(it.data.tag) } - .filter { it.data.isValidSearch(search) } - .map { it.data } - .toList() + .applyUserFilter(search, logType, logTimeStamp) val previousSessionLogs = if (!logTimeStamp.isSessionFilter) { (rawLogs ?: arrayListOf()) - .asSequence() .filter { it.sessionId != Session.id } - .filter { it.data.isValidSearch(search) } - .filter { pastTimeFilter(it.timestamp, logTimeStamp) } - .map { it.data } - .toList() + .applyUserFilter(search, logType, logTimeStamp) } else { emptyList() } @@ -69,13 +60,6 @@ internal class LogsViewModel(application: Application) : AndroidViewModel(applic } } - private fun pastTimeFilter(logTime: Long, log: LogTimeStamp): Boolean { - if (log.timeStamp == 0 || log.isSessionFilter) { - return true - } - return logTime >= System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(log.timeStamp.toLong()) - } - fun deleteAll() { viewModelScope.launch(Dispatchers.IO) { LogDBHandler.flush() @@ -124,6 +108,26 @@ internal class LogsViewModel(application: Application) : AndroidViewModel(applic } } +private fun List.applyUserFilter( + search: String, + logType: List, + logTimeStamp: LogTimeStamp +): List { + return this.asSequence() + .filter { pastTimeFilter(it.timestamp, logTimeStamp) } + .filter { logType.isEmpty() || logType.any { type -> type.type == it.data.tag } } + .filter { it.data.isValidSearch(search) } + .map { it.data } + .toList() +} + +private fun pastTimeFilter(logTime: Long, log: LogTimeStamp): Boolean { + if (log.timeStamp == 0 || log.isSessionFilter) { + return true + } + return logTime >= System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(log.timeStamp.toLong()) +} + private fun LogData.isValidSearch(search: String): Boolean { return search.isEmpty() || message.contains(search, true) ||