mirror of
https://github.com/yJason/ClashX-Dashboard.git
synced 2026-02-04 10:02:26 +08:00
42 lines
1014 B
Swift
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()
|
|
}
|
|
}
|