diff --git a/bitchat/BitchatApp.swift b/bitchat/BitchatApp.swift index 8322ff45..e611a2c1 100644 --- a/bitchat/BitchatApp.swift +++ b/bitchat/BitchatApp.swift @@ -98,14 +98,12 @@ struct BitchatApp: App { // Try to parse as JSON first if let data = sharedContent.data(using: .utf8), let urlData = try? JSONSerialization.jsonObject(with: data) as? [String: String], - let url = urlData["url"], - let title = urlData["title"] { - // Send just emoji with hidden markdown link - let markdownLink = "👇 [\(title)](\(url))" - self.chatViewModel.sendMessage(markdownLink) + let url = urlData["url"] { + // Send plain URL + self.chatViewModel.sendMessage(url) } else { // Fallback to simple URL - self.chatViewModel.sendMessage("Shared link: \(sharedContent)") + self.chatViewModel.sendMessage(sharedContent) } } else { self.chatViewModel.sendMessage(sharedContent) diff --git a/bitchat/ViewModels/ChatViewModel.swift b/bitchat/ViewModels/ChatViewModel.swift index c866240c..fa805960 100644 --- a/bitchat/ViewModels/ChatViewModel.swift +++ b/bitchat/ViewModels/ChatViewModel.swift @@ -979,33 +979,8 @@ class ChatViewModel: ObservableObject { senderStyle.font = .system(size: 14, weight: .medium, design: .monospaced) result.append(sender.mergingAttributes(senderStyle)) - // 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[.. [(url: URL, range: Range)] { var urls: [(URL, Range)] = [] - // Check for markdown-style links [title](url) - let markdownPattern = #"\[([^\]]+)\]\(([^)]+)\)"# - if let regex = try? NSRegularExpression(pattern: markdownPattern) { - let matches = regex.matches(in: self, range: NSRange(location: 0, length: self.utf16.count)) - for match in matches { - if let urlRange = Range(match.range(at: 2), in: self), - let url = URL(string: String(self[urlRange])), - let fullRange = Range(match.range, in: self) { - urls.append((url, fullRange)) - } - } - } - - // Also check for plain URLs + // Check for plain URLs let types: NSTextCheckingResult.CheckingType = .link if let detector = try? NSDataDetector(types: types.rawValue) { let matches = detector.matches(in: self, range: NSRange(location: 0, length: self.utf16.count)) for match in matches { if let range = Range(match.range, in: self), let url = match.url { - // Don't add if this URL is already part of a markdown link - let isPartOfMarkdown = urls.contains { $0.1.overlaps(range) } - if !isPartOfMarkdown { - urls.append((url, range)) - } + urls.append((url, range)) } } } return urls } - - func extractMarkdownLink() -> (title: String, url: URL)? { - let pattern = #"\[([^\]]+)\]\(([^)]+)\)"# - if let regex = try? NSRegularExpression(pattern: pattern), - let match = regex.firstMatch(in: self, range: NSRange(location: 0, length: self.utf16.count)) { - if let titleRange = Range(match.range(at: 1), in: self), - let urlRange = Range(match.range(at: 2), in: self), - let url = URL(string: String(self[urlRange])) { - return (String(self[titleRange]), url) - } - } - return nil - } } #Preview {