Refactor ConsoleMessageTableCell

This commit is contained in:
kean
2023-01-08 15:42:16 -05:00
parent 10884235c9
commit fd3003970d
4 changed files with 16 additions and 30 deletions
+13 -4
View File
@@ -43,11 +43,20 @@ extension DateFormatter {
enum ConsoleFormatter {
static let separator = " · "
static func subheadline(for message: LoggerMessageEntity) -> String {
static func subheadline(for message: LoggerMessageEntity, hasTime: Bool = true) -> String {
return [
time(for: message.createdAt),
message.logLevel.name.uppercased()
].joined(separator: separator)
hasTime ? time(for: message.createdAt) : nil,
message.logLevel.name.uppercased(),
label(for: message)
].compactMap { $0 }.joined(separator: separator)
}
static func label(for message: LoggerMessageEntity) -> String? {
let label = message.label.name
guard label != "default", !label.isEmpty else {
return nil
}
return label.uppercased()
}
static func subheadline(for task: NetworkTaskEntity, hasTime: Bool = true) -> String {
@@ -52,9 +52,9 @@ final class ConsoleMessageTableCell: UITableViewCell, UIContextMenuInteractionDe
self.viewModel = viewModel
details.numberOfLines = ConsoleSettings.shared.lineLimit
title.attributedText = NSAttributedString(string: viewModel.title2, attributes: titleAttributes)
title.attributedText = NSAttributedString(string: ConsoleFormatter.subheadline(for: viewModel.message, hasTime: false), attributes: titleAttributes)
details.text = viewModel.text
details.textColor = viewModel.textColor2
details.textColor = .textColor(for: viewModel.message.logLevel)
accessory.textLabel.attributedText = NSAttributedString(string: viewModel.time, attributes: titleAttributes)
pin.bind(viewModel: viewModel.pinViewModel)
}
@@ -18,28 +18,6 @@ final class ConsoleMessageViewModel: Pinnable {
private let searchCriteriaViewModel: ConsoleMessageSearchCriteriaViewModel?
private(set) lazy var time = ConsoleMessageViewModel.timeFormatter.string(from: message.createdAt)
var titleForTextRepresentation: String {
let level = message.logLevel
var title = "\(time) · \(level.name.capitalized)"
let label = message.label.name
if label != "default", !label.isEmpty {
title.append(" · \(label.capitalized)")
}
return title
}
#if os(iOS)
lazy var textColor2 = UIColor.textColor(for: message.logLevel)
lazy var title2: String = {
var string = message.logLevel.name.uppercased()
let label = message.label.name
if label != "default", !label.isEmpty {
string.append(" · \(label.capitalized)")
}
return string
}()
#endif
static let timeFormatter: DateFormatter = {
let formatter = DateFormatter()
+1 -2
View File
@@ -52,8 +52,7 @@ final class TextRenderer {
func render(_ message: LoggerMessageEntity) -> NSAttributedString {
let text = NSMutableAttributedString()
let viewModel = ConsoleMessageViewModel(message: message)
text.append(viewModel.titleForTextRepresentation + "\n", helper.attributes(role: .subheadline, style: .monospacedDigital, width: .condensed, color: .secondaryLabel))
text.append(ConsoleFormatter.subheadline(for: message) + "\n", helper.attributes(role: .subheadline, style: .monospacedDigital, width: .condensed, color: .secondaryLabel))
text.append(message.text + "\n", helper.attributes(role: .body2, color: textColor(for: message.logLevel)))
return text
}