Changelog-Fixed: Add max length truncation to displayed profile attributes to mitigate spam Fixes: #1237
44 lines
1.3 KiB
Swift
44 lines
1.3 KiB
Swift
//
|
|
// TruncatedText.swift
|
|
// damus
|
|
//
|
|
// Created by William Casarin on 2023-04-06.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct TruncatedText: View {
|
|
let text: CompatibleText
|
|
let maxChars: Int = 280
|
|
|
|
var body: some View {
|
|
let truncatedAttributedString: AttributedString? = text.attributed.truncateOrNil(maxLength: maxChars)
|
|
|
|
if let truncatedAttributedString {
|
|
Text(truncatedAttributedString)
|
|
.fixedSize(horizontal: false, vertical: true)
|
|
} else {
|
|
text.text
|
|
.fixedSize(horizontal: false, vertical: true)
|
|
}
|
|
|
|
if truncatedAttributedString != nil {
|
|
Spacer()
|
|
Button(NSLocalizedString("Show more", comment: "Button to show entire note.")) { }
|
|
.allowsHitTesting(false)
|
|
}
|
|
}
|
|
}
|
|
|
|
struct TruncatedText_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
VStack(spacing: 100) {
|
|
TruncatedText(text: CompatibleText(stringLiteral: "hello\nthere\none\ntwo\nthree\nfour\nfive\nsix\nseven\neight\nnine\nten\neleven"))
|
|
.frame(width: 200, height: 200)
|
|
|
|
TruncatedText(text: CompatibleText(stringLiteral: "hello\nthere\none\ntwo\nthree\nfour"))
|
|
.frame(width: 200, height: 200)
|
|
}
|
|
}
|
|
}
|