diff --git a/Sources/PulseUI/Extensions/Formatters.swift b/Sources/PulseUI/Extensions/Formatters.swift index b0f0e127..075450b7 100644 --- a/Sources/PulseUI/Extensions/Formatters.swift +++ b/Sources/PulseUI/Extensions/Formatters.swift @@ -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 { diff --git a/Sources/PulseUI/Features/Console/ConsoleMessageTableCell.swift b/Sources/PulseUI/Features/Console/ConsoleMessageTableCell.swift index 9df947fd..3c40b1af 100644 --- a/Sources/PulseUI/Features/Console/ConsoleMessageTableCell.swift +++ b/Sources/PulseUI/Features/Console/ConsoleMessageTableCell.swift @@ -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) } diff --git a/Sources/PulseUI/Features/Console/ConsoleMessageViewModel.swift b/Sources/PulseUI/Features/Console/ConsoleMessageViewModel.swift index 37e6ffde..2716196e 100644 --- a/Sources/PulseUI/Features/Console/ConsoleMessageViewModel.swift +++ b/Sources/PulseUI/Features/Console/ConsoleMessageViewModel.swift @@ -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() diff --git a/Sources/PulseUI/Helpers/TextRenderer.swift b/Sources/PulseUI/Helpers/TextRenderer.swift index 341d2b39..854fdc96 100644 --- a/Sources/PulseUI/Helpers/TextRenderer.swift +++ b/Sources/PulseUI/Helpers/TextRenderer.swift @@ -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 }