|
|
|
@ -429,7 +429,7 @@ public class OWSLinkPreview: MTLModel {
|
|
|
|
|
// MARK: - Text Parsing
|
|
|
|
|
|
|
|
|
|
// This cache should only be accessed on main thread.
|
|
|
|
|
private static var previewUrlCache: NSCache<AnyObject, AnyObject> = NSCache()
|
|
|
|
|
private static var previewUrlCache: NSCache<NSString, NSString> = NSCache()
|
|
|
|
|
|
|
|
|
|
@objc
|
|
|
|
|
public class func previewUrl(forRawBodyText body: String?, selectedRange: NSRange) -> String? {
|
|
|
|
@ -453,7 +453,7 @@ public class OWSLinkPreview: MTLModel {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if let cachedUrl = previewUrlCache.object(forKey: body as AnyObject) as? String {
|
|
|
|
|
if let cachedUrl = previewUrlCache.object(forKey: body as NSString) as String? {
|
|
|
|
|
Logger.verbose("URL parsing cache hit.")
|
|
|
|
|
guard cachedUrl.count > 0 else {
|
|
|
|
|
return nil
|
|
|
|
@ -463,7 +463,7 @@ public class OWSLinkPreview: MTLModel {
|
|
|
|
|
let previewUrlMatches = allPreviewUrlMatches(forMessageBodyText: body)
|
|
|
|
|
guard let urlMatch = previewUrlMatches.first else {
|
|
|
|
|
// Use empty string to indicate "no preview URL" in the cache.
|
|
|
|
|
previewUrlCache.setObject("" as AnyObject, forKey: body as AnyObject)
|
|
|
|
|
previewUrlCache.setObject("", forKey: body as NSString)
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -479,7 +479,7 @@ public class OWSLinkPreview: MTLModel {
|
|
|
|
|
Logger.debug("considering URL, since the user is not currently editing it.")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
previewUrlCache.setObject(urlMatch.urlString as AnyObject, forKey: body as AnyObject)
|
|
|
|
|
previewUrlCache.setObject(urlMatch.urlString as NSString, forKey: body as NSString)
|
|
|
|
|
return urlMatch.urlString
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -527,12 +527,12 @@ public class OWSLinkPreview: MTLModel {
|
|
|
|
|
// MARK: - Preview Construction
|
|
|
|
|
|
|
|
|
|
// This cache should only be accessed on serialQueue.
|
|
|
|
|
private static var linkPreviewDraftCache: NSCache<AnyObject, OWSLinkPreviewDraft> = NSCache()
|
|
|
|
|
private static var linkPreviewDraftCache: NSCache<NSString, OWSLinkPreviewDraft> = NSCache()
|
|
|
|
|
|
|
|
|
|
private class func cachedLinkPreview(forPreviewUrl previewUrl: String) -> OWSLinkPreviewDraft? {
|
|
|
|
|
var result: OWSLinkPreviewDraft?
|
|
|
|
|
serialQueue.sync {
|
|
|
|
|
result = linkPreviewDraftCache.object(forKey: previewUrl as AnyObject)
|
|
|
|
|
result = linkPreviewDraftCache.object(forKey: previewUrl as NSString)
|
|
|
|
|
}
|
|
|
|
|
return result
|
|
|
|
|
}
|
|
|
|
@ -550,7 +550,7 @@ public class OWSLinkPreview: MTLModel {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
serialQueue.sync {
|
|
|
|
|
previewUrlCache.setObject(linkPreviewDraft, forKey: previewUrl as AnyObject)
|
|
|
|
|
linkPreviewDraftCache.setObject(linkPreviewDraft, forKey: previewUrl as NSString)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|