Files
ClashX-Dashboard/Sources/ClashX Dashboard/Views/ContentTabs/Logs/LogsView.swift
2023-08-16 14:02:28 +08:00

42 lines
1014 B
Swift

//
// LogsView.swift
// ClashX Dashboard
//
//
import SwiftUI
struct LogsView: View {
@EnvironmentObject var logStorage: ClashLogStorage
@State var searchString: String = ""
@State var logLevel = ConfigManager.selectLoggingApiLevel
var body: some View {
Group {
LogsTableView(data: logStorage.logs.reversed(), filterString: searchString)
}
.onReceive(NotificationCenter.default.publisher(for: .toolbarSearchString)) {
guard let string = $0.userInfo?["String"] as? String else { return }
searchString = string
}
.onReceive(NotificationCenter.default.publisher(for: .logLevelChanged)) {
guard let level = $0.userInfo?["level"] as? ClashLogLevel else { return }
logLevelChanged(level)
}
}
func logLevelChanged(_ level: ClashLogLevel) {
logStorage.logs.removeAll()
ConfigManager.selectLoggingApiLevel = level
ApiRequest.shared.resetLogStreamApi()
}
}
struct LogsView_Previews: PreviewProvider {
static var previews: some View {
LogsView()
}
}