Tusker/Tusker/Screens/Report/ReportStatusView.swift

45 lines
1.2 KiB
Swift

//
// ReportStatusView.swift
// Tusker
//
// Created by Shadowfacts on 1/13/23.
// Copyright © 2023 Shadowfacts. All rights reserved.
//
import SwiftUI
@MainActor
private var converter = HTMLConverter(
font: .preferredFont(forTextStyle: .body),
monospaceFont: UIFontMetrics.default.scaledFont(for: .monospacedSystemFont(ofSize: 17, weight: .regular)),
color: .label,
paragraphStyle: .default
)
@MainActor
struct ReportStatusView: View {
let status: StatusMO
let mastodonController: MastodonController
private var text: AttributedString {
let str = AttributedString(converter.convert(status.content))
return str.transformingAttributes(\.link) { transformer in
if transformer.value != nil {
transformer.replace(with: \.foregroundColor, value: .accentColor)
}
}
}
var body: some View {
VStack(alignment: .leading) {
Text(text)
if !status.attachments.isEmpty {
Text("^[\(status.attachments.count) attachments](inflect: true)")
.foregroundColor(.secondary)
.font(.caption.bold())
}
}
}
}