Files
divkit/client/ios/DivKit/Debug/DebugErrorCollector.swift
T
shakhavn 607deeb857 Warning for too small clickable element
commit_hash:de018d18bbd539f7a35949cbf0a3a18942a17d56
2024-12-19 19:22:09 +03:00

51 lines
1.3 KiB
Swift

import VGSLFundamentals
final class DebugErrorCollector: DivReporter {
private let wrappedDivReporter: DivReporter
var errorStorage: DivErrorsStorage
private(set) var layoutErrors = [DivError]()
let observableErrorCount = ObservableProperty<Int>(initialValue: 0)
init(
wrappedDivReporter: DivReporter,
errorStorage: DivErrorsStorage
) {
self.wrappedDivReporter = wrappedDivReporter
self.errorStorage = errorStorage
}
func reportError(cardId: DivCardID, error: DivError) {
wrappedDivReporter.reportError(cardId: cardId, error: error)
guard !hasError(error) else { return }
layoutErrors.append(error)
observableErrorCount.value += 1
}
func reportAction(cardId: DivCardID, info: DivActionInfo) {
wrappedDivReporter.reportAction(cardId: cardId, info: info)
}
var totalErrorCount: Int {
errorStorage.errors.count + layoutErrors.count
}
var errorList: [String] {
errorStorage.errors.map(\.prettyMessage) + layoutErrors.map(\.prettyMessage)
}
var debugDescription: String {
"Errors: \(errorList)"
}
private func hasError(_ error: DivError) -> Bool {
layoutErrors.contains {
$0.kind == error.kind
&& $0.message == error.message
&& $0.path == error.path
&& $0.level == error.level
}
}
}