Fix UI glitch
This commit is contained in:
parent
bd309c4f6f
commit
4d5c12ad6e
|
@ -962,16 +962,18 @@ const CGFloat kMaxTextViewHeight = 98;
|
|||
|
||||
// It's key that we use the *raw/unstripped* text, so we can reconcile cursor position with the
|
||||
// selectedRange.
|
||||
NSString *_Nullable previewUrl = [OWSLinkPreview previewUrlForRawBodyText:self.inputTextView.text
|
||||
selectedRange:self.inputTextView.selectedRange];
|
||||
NSString *_Nullable previewUrl = [OWSLinkPreview previewUrlForRawBodyText:self.inputTextView.text selectedRange:self.inputTextView.selectedRange];
|
||||
|
||||
if ([previewUrl hasSuffix:@".gif"]) {
|
||||
return [self clearLinkPreviewStateAndView];
|
||||
}
|
||||
|
||||
if (previewUrl.length < 1) {
|
||||
[self clearLinkPreviewStateAndView];
|
||||
return;
|
||||
return [self clearLinkPreviewStateAndView];
|
||||
}
|
||||
|
||||
if (self.inputLinkPreview && [self.inputLinkPreview.previewUrl isEqualToString:previewUrl]) {
|
||||
// No need to update.
|
||||
return;
|
||||
return; // No need to update.
|
||||
}
|
||||
|
||||
InputLinkPreview *inputLinkPreview = [InputLinkPreview new];
|
||||
|
|
|
@ -4,7 +4,10 @@ import PromiseKit
|
|||
public final class LokiAPI : NSObject {
|
||||
internal static let storage = OWSPrimaryStorage.shared()
|
||||
|
||||
internal static var userHexEncodedPublicKey: String { return OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey }
|
||||
// MARK: Convenience
|
||||
internal static var userHexEncodedPublicKey: String {
|
||||
return OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey
|
||||
}
|
||||
|
||||
// MARK: Settings
|
||||
private static let version = "v1"
|
||||
|
|
|
@ -338,7 +338,8 @@ public class OWSLinkPreview: MTLModel {
|
|||
// Giphy
|
||||
"giphy.com",
|
||||
"media.giphy.com",
|
||||
"gph.is",
|
||||
"gph.is"
|
||||
|
||||
]
|
||||
|
||||
// For media domains, we DO NOT require an exact match - subdomains are allowed.
|
||||
|
@ -360,7 +361,7 @@ public class OWSLinkPreview: MTLModel {
|
|||
"pinimg.com",
|
||||
|
||||
// Giphy
|
||||
"giphy.com",
|
||||
"giphy.com"
|
||||
]
|
||||
|
||||
private static let protocolWhitelist = [
|
||||
|
@ -654,11 +655,13 @@ public class OWSLinkPreview: MTLModel {
|
|||
return
|
||||
}
|
||||
if let contentType = response.allHeaderFields["Content-Type"] as? String {
|
||||
/*
|
||||
guard contentType.lowercased().hasPrefix("text/") else {
|
||||
Logger.warn("Invalid content type: \(contentType).")
|
||||
resolver.reject(LinkPreviewError.invalidContent)
|
||||
return
|
||||
}
|
||||
*/
|
||||
}
|
||||
guard let data = value as? Data else {
|
||||
Logger.warn("Result is not data: \(type(of: value)).")
|
||||
|
@ -793,7 +796,7 @@ public class OWSLinkPreview: MTLModel {
|
|||
return Promise(error: LinkPreviewError.invalidContent)
|
||||
}
|
||||
|
||||
// Loki: If it's a GIF then ensure it's validity and don't download it as a JPG
|
||||
// Loki: If it's a GIF then ensure its validity and don't download it as a JPG
|
||||
if (imageMimeType == OWSMimeTypeImageGif && NSData(data: data).ows_isValidImage(withMimeType: OWSMimeTypeImageGif)) { return Promise.value(data) }
|
||||
|
||||
let maxImageSize: CGFloat = 1024
|
||||
|
@ -864,7 +867,7 @@ public class OWSLinkPreview: MTLModel {
|
|||
return Promise.value(OWSLinkPreviewDraft(urlString: linkUrlString, title: title))
|
||||
}
|
||||
} catch {
|
||||
owsFailDebug("Could not parse link data: \(error).")
|
||||
// owsFailDebug("Could not parse link data: \(error).")
|
||||
return Promise(error: error)
|
||||
}
|
||||
}
|
||||
|
@ -875,7 +878,7 @@ public class OWSLinkPreview: MTLModel {
|
|||
// <meta property="og:image" content="https://i.ytimg.com/vi/tP-Ipsat90c/maxresdefault.jpg">
|
||||
class func parse(linkData: Data) throws -> OWSLinkPreviewContents {
|
||||
guard let linkText = String(bytes: linkData, encoding: .utf8) else {
|
||||
owsFailDebug("Could not parse link text.")
|
||||
// owsFailDebug("Could not parse link text.")
|
||||
throw LinkPreviewError.invalidInput
|
||||
}
|
||||
|
||||
|
@ -918,14 +921,10 @@ public class OWSLinkPreview: MTLModel {
|
|||
|
||||
class func fileExtension(forMimeType mimeType: String) -> String? {
|
||||
switch mimeType {
|
||||
case OWSMimeTypeImageGif:
|
||||
return "gif"
|
||||
case OWSMimeTypeImagePng:
|
||||
return "png"
|
||||
case OWSMimeTypeImageJpeg:
|
||||
return "jpg"
|
||||
default:
|
||||
return nil
|
||||
case OWSMimeTypeImageGif: return "gif"
|
||||
case OWSMimeTypeImagePng: return "png"
|
||||
case OWSMimeTypeImageJpeg: return "jpg"
|
||||
default: return nil
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -516,7 +516,7 @@ static const NSUInteger OWSMessageSchemaVersion = 4;
|
|||
|
||||
|
||||
- (void)generateLinkPreviewIfNeededFromURL:(NSString *)url {
|
||||
// If we already havea link previews or attachment then don't bother
|
||||
// If we already have a link preview or attachment then don't bother
|
||||
if (self.linkPreview != nil || self.hasAttachments) { return; }
|
||||
[OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:url]
|
||||
.thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) {
|
||||
|
|
|
@ -267,14 +267,10 @@ typedef NS_ENUM(NSInteger, ImageFormat) {
|
|||
{
|
||||
ImageFormat format = [self ows_guessImageFormat];
|
||||
switch (format) {
|
||||
case ImageFormat_Gif:
|
||||
return OWSMimeTypeImageGif;
|
||||
case ImageFormat_Png:
|
||||
return OWSMimeTypeImagePng;
|
||||
case ImageFormat_Jpeg:
|
||||
return OWSMimeTypeImageJpeg;
|
||||
default:
|
||||
return nil;
|
||||
case ImageFormat_Gif: return OWSMimeTypeImageGif;
|
||||
case ImageFormat_Png: return OWSMimeTypeImagePng;
|
||||
case ImageFormat_Jpeg: return OWSMimeTypeImageJpeg;
|
||||
default: return nil;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue