mirror of
https://github.com/yattee/yattee.git
synced 2024-12-23 05:53:41 +00:00
Merge pull request #560 from stonerl/clickable-links
make links in description clickable
This commit is contained in:
commit
e78f40c555
@ -61,7 +61,7 @@ struct VideoDescription: View {
|
|||||||
#if !os(iOS)
|
#if !os(iOS)
|
||||||
Group {
|
Group {
|
||||||
if #available(macOS 12, *) {
|
if #available(macOS 12, *) {
|
||||||
Text(description)
|
DescriptionWithLinks(description: description, detailsSize: detailsSize)
|
||||||
.frame(maxWidth: .infinity, alignment: .leading)
|
.frame(maxWidth: .infinity, alignment: .leading)
|
||||||
.lineLimit(shouldExpand ? 500 : Self.collapsedLines)
|
.lineLimit(shouldExpand ? 500 : Self.collapsedLines)
|
||||||
#if !os(tvOS)
|
#if !os(tvOS)
|
||||||
@ -79,6 +79,33 @@ struct VideoDescription: View {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If possibe convert URLs to clickable links
|
||||||
|
#if os(macOS)
|
||||||
|
@available(macOS 12, *)
|
||||||
|
struct DescriptionWithLinks: View {
|
||||||
|
let description: String
|
||||||
|
let detailsSize: CGSize?
|
||||||
|
let separators = CharacterSet(charactersIn: " \n")
|
||||||
|
|
||||||
|
var formattedString: AttributedString {
|
||||||
|
var attrString = AttributedString(description)
|
||||||
|
let words = description.unicodeScalars.split(whereSeparator: separators.contains).map(String.init)
|
||||||
|
words.forEach { word in
|
||||||
|
if word.hasPrefix("https://") || word.hasPrefix("http://"), let url = URL(string: String(word)) {
|
||||||
|
if let range = attrString.range(of: word) {
|
||||||
|
attrString[range].link = url
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return attrString
|
||||||
|
}
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
Text(formattedString)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
@ViewBuilder var keywords: some View {
|
@ViewBuilder var keywords: some View {
|
||||||
if showKeywords {
|
if showKeywords {
|
||||||
ScrollView(.horizontal, showsIndicators: showScrollIndicators) {
|
ScrollView(.horizontal, showsIndicators: showScrollIndicators) {
|
||||||
|
Loading…
Reference in New Issue
Block a user