mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 11:25:20 +00:00
Add iOS share extension with rich link previews
- Implement share extension to receive URLs from other apps - Display shared links with emoji indicator and rich preview cards - Add custom compact link preview with image, title, and domain - Configure app groups for data sharing between extension and main app - Handle URL detection and parsing in share extension - Update message formatting to show only emoji for shared links - Add proper entitlements and activation rules for share extension
This commit is contained in:
@@ -1498,8 +1498,34 @@ class ChatViewModel: ObservableObject {
|
||||
senderStyle.font = .system(size: 14, weight: .medium, design: .monospaced)
|
||||
result.append(sender.mergingAttributes(senderStyle))
|
||||
|
||||
// Process content with hashtags and mentions
|
||||
let content = message.content
|
||||
// Process content with hashtags, mentions, and markdown links
|
||||
var content = message.content
|
||||
|
||||
// First, check if content starts with 👇 followed by markdown link
|
||||
if content.hasPrefix("👇 [") {
|
||||
// This is a URL share - remove everything after the emoji
|
||||
if let linkStart = content.firstIndex(of: "[") {
|
||||
let indexBeforeLink = content.index(before: linkStart)
|
||||
content = String(content[..<indexBeforeLink])
|
||||
}
|
||||
} else {
|
||||
// Handle normal markdown links
|
||||
let markdownLinkPattern = #"\[([^\]]+)\]\(([^)]+)\)"#
|
||||
if let markdownRegex = try? NSRegularExpression(pattern: markdownLinkPattern, options: []) {
|
||||
let markdownMatches = markdownRegex.matches(in: content, options: [], range: NSRange(location: 0, length: content.count))
|
||||
|
||||
// Process matches in reverse order to maintain string indices
|
||||
for match in markdownMatches.reversed() {
|
||||
if let fullRange = Range(match.range, in: content),
|
||||
let titleRange = Range(match.range(at: 1), in: content) {
|
||||
// Normal markdown link - replace with just the title
|
||||
let linkTitle = String(content[titleRange])
|
||||
content.replaceSubrange(fullRange, with: linkTitle)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let hashtagPattern = "#([a-zA-Z0-9_]+)"
|
||||
let mentionPattern = "@([a-zA-Z0-9_]+)"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user