Skip to content

Commit d415741

Browse files
authored
fix(logger): empty state for log filters handled properly (#351)
1 parent 07c38cf commit d415741

File tree

1 file changed

+22
-18
lines changed
  • pluto-plugins/plugins/logger/lib/src/main/java/com/pluto/plugins/logger/internal

1 file changed

+22
-18
lines changed

pluto-plugins/plugins/logger/lib/src/main/java/com/pluto/plugins/logger/internal/LogsViewModel.kt

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,22 +39,13 @@ internal class LogsViewModel(application: Application) : AndroidViewModel(applic
3939
}
4040
val currentSessionLogs =
4141
(rawLogs ?: arrayListOf())
42-
.asSequence()
4342
.filter { it.sessionId == Session.id }
44-
.filter { pastTimeFilter(it.timestamp, logTimeStamp) }
45-
.filter { logType.map { type -> type.type }.contains(it.data.tag) }
46-
.filter { it.data.isValidSearch(search) }
47-
.map { it.data }
48-
.toList()
43+
.applyUserFilter(search, logType, logTimeStamp)
4944

5045
val previousSessionLogs = if (!logTimeStamp.isSessionFilter) {
5146
(rawLogs ?: arrayListOf())
52-
.asSequence()
5347
.filter { it.sessionId != Session.id }
54-
.filter { it.data.isValidSearch(search) }
55-
.filter { pastTimeFilter(it.timestamp, logTimeStamp) }
56-
.map { it.data }
57-
.toList()
48+
.applyUserFilter(search, logType, logTimeStamp)
5849
} else {
5950
emptyList()
6051
}
@@ -69,13 +60,6 @@ internal class LogsViewModel(application: Application) : AndroidViewModel(applic
6960
}
7061
}
7162

72-
private fun pastTimeFilter(logTime: Long, log: LogTimeStamp): Boolean {
73-
if (log.timeStamp == 0 || log.isSessionFilter) {
74-
return true
75-
}
76-
return logTime >= System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(log.timeStamp.toLong())
77-
}
78-
7963
fun deleteAll() {
8064
viewModelScope.launch(Dispatchers.IO) {
8165
LogDBHandler.flush()
@@ -124,6 +108,26 @@ internal class LogsViewModel(application: Application) : AndroidViewModel(applic
124108
}
125109
}
126110

111+
private fun List<LogEntity>.applyUserFilter(
112+
search: String,
113+
logType: List<LogType>,
114+
logTimeStamp: LogTimeStamp
115+
): List<LogData> {
116+
return this.asSequence()
117+
.filter { pastTimeFilter(it.timestamp, logTimeStamp) }
118+
.filter { logType.isEmpty() || logType.any { type -> type.type == it.data.tag } }
119+
.filter { it.data.isValidSearch(search) }
120+
.map { it.data }
121+
.toList()
122+
}
123+
124+
private fun pastTimeFilter(logTime: Long, log: LogTimeStamp): Boolean {
125+
if (log.timeStamp == 0 || log.isSessionFilter) {
126+
return true
127+
}
128+
return logTime >= System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(log.timeStamp.toLong())
129+
}
130+
127131
private fun LogData.isValidSearch(search: String): Boolean {
128132
return search.isEmpty() ||
129133
message.contains(search, true) ||

0 commit comments

Comments
 (0)