mirror of
https://github.com/kean/Pulse.git
synced 2026-05-30 21:07:33 +00:00
Refactor ConsoleMessageTableCell
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user