mirror of
https://github.com/Dimillian/IceCubesApp.git
synced 2024-06-10 09:19:22 +00:00
9b3b3692ee
* Support for follow requests (#321) * Run SwiftFormat Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
40 lines
1.2 KiB
Swift
40 lines
1.2 KiB
Swift
import EmojiText
|
|
import Foundation
|
|
import HTML2Markdown
|
|
import Models
|
|
import SwiftUI
|
|
|
|
public struct EmojiTextApp: View {
|
|
private let markdown: HTMLString
|
|
private let emojis: [any CustomEmoji]
|
|
private let language: String?
|
|
private let append: (() -> Text)?
|
|
|
|
public init(_ markdown: HTMLString, emojis: [Emoji], language: String? = nil, append: (() -> Text)? = nil) {
|
|
self.markdown = markdown
|
|
self.emojis = emojis.map { RemoteEmoji(shortcode: $0.shortcode, url: $0.url) }
|
|
self.language = language
|
|
self.append = append
|
|
}
|
|
|
|
public var body: some View {
|
|
if let append {
|
|
EmojiText(markdown: markdown.asMarkdown, emojis: emojis)
|
|
.append {
|
|
append()
|
|
}
|
|
} else if emojis.isEmpty {
|
|
Text(markdown.asSafeMarkdownAttributedString)
|
|
.environment(\.layoutDirection, isRTL() ? .rightToLeft : .leftToRight)
|
|
} else {
|
|
EmojiText(markdown: markdown.asMarkdown, emojis: emojis)
|
|
.environment(\.layoutDirection, isRTL() ? .rightToLeft : .leftToRight)
|
|
}
|
|
}
|
|
|
|
private func isRTL() -> Bool {
|
|
// Arabic, Hebrew, Persian, Urdu, Kurdish, Azeri, Dhivehi
|
|
return ["ar", "he", "fa", "ur", "ku", "az", "dv"].contains(language)
|
|
}
|
|
}
|