2023-01-12 05:58:04 +00:00
|
|
|
import EmojiText
|
2023-01-17 10:36:01 +00:00
|
|
|
import Foundation
|
2023-01-12 05:58:04 +00:00
|
|
|
import HTML2Markdown
|
2023-01-17 10:36:01 +00:00
|
|
|
import Models
|
2023-01-12 20:12:47 +00:00
|
|
|
import SwiftUI
|
2023-01-12 05:58:04 +00:00
|
|
|
|
2023-01-12 20:12:47 +00:00
|
|
|
public struct EmojiTextApp: View {
|
|
|
|
private let markdown: String
|
|
|
|
private let emojis: [any CustomEmoji]
|
|
|
|
private let append: (() -> Text)?
|
2023-01-17 10:36:01 +00:00
|
|
|
|
2023-01-12 20:12:47 +00:00
|
|
|
public init(_ markdown: HTMLString, emojis: [Emoji], append: (() -> Text)? = nil) {
|
|
|
|
self.markdown = markdown
|
|
|
|
self.emojis = emojis.map { RemoteEmoji(shortcode: $0.shortcode, url: $0.url) }
|
|
|
|
self.append = append
|
|
|
|
}
|
2023-01-17 10:36:01 +00:00
|
|
|
|
2023-01-12 20:12:47 +00:00
|
|
|
public var body: some View {
|
|
|
|
if let append {
|
|
|
|
EmojiText(markdown: markdown, emojis: emojis)
|
|
|
|
.append {
|
|
|
|
append()
|
|
|
|
}
|
|
|
|
} else if emojis.isEmpty {
|
|
|
|
Text(markdown.asSafeAttributedString)
|
|
|
|
} else {
|
|
|
|
EmojiText(markdown: markdown, emojis: emojis)
|
2023-01-12 05:58:04 +00:00
|
|
|
}
|
2023-01-12 20:12:47 +00:00
|
|
|
}
|
2023-01-12 05:58:04 +00:00
|
|
|
}
|