diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist
index 9e2200c01..b7c90834d 100644
--- a/Signal/Signal-Info.plist
+++ b/Signal/Signal-Info.plist
@@ -6,14 +6,10 @@
CarthageVersion
0.33.0
- DateTime
- Thu Sep 5 00:37:14 UTC 2019
OSXVersion
10.14.6
WebRTCCommit
1445d719bf05280270e9f77576f80f973fd847f8 M73
- XCodeVersion
- 1000.1030
CFBundleDevelopmentRegion
en
diff --git a/Signal/src/Loki/LokiGroupChatPoller.swift b/Signal/src/Loki/LokiGroupChatPoller.swift
index 56f43e51f..40a42708e 100644
--- a/Signal/src/Loki/LokiGroupChatPoller.swift
+++ b/Signal/src/Loki/LokiGroupChatPoller.swift
@@ -93,6 +93,15 @@ public final class LokiGroupChatPoller : NSObject {
guard let messageID = message.uniqueId else { return print("[Loki] Failed to save group message.") }
storage.setIDForMessageWithServerID(UInt(messageServerID), to: messageID, in: transaction)
}
+ if let url = OWSLinkPreview.previewUrl(forMessageBodyText: message.body, selectedRange: nil) {
+ let _ = OWSLinkPreview.tryToBuildPreviewInfo(previewUrl: url).done { linkPreviewDraft in
+ OWSPrimaryStorage.shared().dbReadWriteConnection.readWrite { transaction in
+ guard let linkPreview = try? OWSLinkPreview.buildValidatedLinkPreview(fromInfo: linkPreviewDraft, transaction: transaction) else { return }
+ message.linkPreview = linkPreview
+ message.save(with: transaction)
+ }
+ }
+ }
}
// Poll
let _ = LokiGroupChatAPI.getMessages(for: group.serverID, on: group.server).done { messages in
diff --git a/Signal/src/Loki/QRCodeViewController.swift b/Signal/src/Loki/QRCodeViewController.swift
index ee512ee9e..af269d67a 100644
--- a/Signal/src/Loki/QRCodeViewController.swift
+++ b/Signal/src/Loki/QRCodeViewController.swift
@@ -6,6 +6,7 @@ final class QRCodeViewController : OWSViewController {
override func viewDidLoad() {
super.viewDidLoad()
+ view.backgroundColor = UIColor.lokiDarkestGray()
let stackView = UIStackView(arrangedSubviews: [])
stackView.axis = .vertical
stackView.spacing = 32
diff --git a/Signal/src/views/LinkPreviewView.swift b/Signal/src/views/LinkPreviewView.swift
index 6b5e7b277..ab28a1ce5 100644
--- a/Signal/src/views/LinkPreviewView.swift
+++ b/Signal/src/views/LinkPreviewView.swift
@@ -819,17 +819,16 @@ public class LinkPreviewView: UIStackView {
public func addBorderViews(bubbleView: OWSBubbleView) {
if let heroImageView = self.heroImageView {
let borderView = OWSBubbleShapeView(draw: ())
- borderView.strokeColor = Theme.primaryColor
- borderView.strokeThickness = CGHairlineWidth()
+ borderView.strokeColor = UIColor.clear
+ borderView.strokeThickness = 0
heroImageView.addSubview(borderView)
bubbleView.addPartnerView(borderView)
borderView.ows_autoPinToSuperviewEdges()
}
if let sentBodyView = self.sentBodyView {
let borderView = OWSBubbleShapeView(draw: ())
- let borderColor = UIColor(rgbHex: Theme.isDarkThemeEnabled ? 0x0F1012 : 0xD5D6D6)
- borderView.strokeColor = borderColor
- borderView.strokeThickness = CGHairlineWidth()
+ borderView.strokeColor = UIColor.clear
+ borderView.strokeThickness = 0
sentBodyView.addSubview(borderView)
bubbleView.addPartnerView(borderView)
borderView.ows_autoPinToSuperviewEdges()
diff --git a/SignalMessaging/utils/ThreadUtil.m b/SignalMessaging/utils/ThreadUtil.m
index fa6f28b81..62c0832b0 100644
--- a/SignalMessaging/utils/ThreadUtil.m
+++ b/SignalMessaging/utils/ThreadUtil.m
@@ -138,7 +138,6 @@ typedef void (^BuildOutgoingMessageCompletionBlock)(TSOutgoingMessage *savedMess
}];
}
-// Loki: TODO Disable attachment and link preview for now
+ (TSOutgoingMessage *)buildOutgoingMessageWithText:(nullable NSString *)fullMessageText
mediaAttachments:(NSArray *)mediaAttachments
thread:(TSThread *)thread
diff --git a/SignalServiceKit/src/Messages/Interactions/OWSLinkPreview.swift b/SignalServiceKit/src/Messages/Interactions/OWSLinkPreview.swift
index e395204eb..5c639d05a 100644
--- a/SignalServiceKit/src/Messages/Interactions/OWSLinkPreview.swift
+++ b/SignalServiceKit/src/Messages/Interactions/OWSLinkPreview.swift
@@ -158,7 +158,8 @@ public class OWSLinkPreview: MTLModel {
title = normalizedTitle
}
}
-
+
+ /*
var imageAttachmentId: String?
if let imageProto = previewProto.image {
if let imageAttachmentPointer = TSAttachmentPointer(fromProto: imageProto, albumMessage: nil) {
@@ -169,8 +170,9 @@ public class OWSLinkPreview: MTLModel {
throw LinkPreviewError.invalidInput
}
}
+ */
- let linkPreview = OWSLinkPreview(urlString: urlString, title: title, imageAttachmentId: imageAttachmentId)
+ let linkPreview = OWSLinkPreview(urlString: urlString, title: title, imageAttachmentId: nil)
guard linkPreview.isValid() else {
Logger.error("Preview has neither title nor image.")
@@ -433,6 +435,11 @@ public class OWSLinkPreview: MTLModel {
return previewUrl(forMessageBodyText: body, selectedRange: selectedRange)
}
+ @objc
+ public class func previewURL(forRawBodyText body: String?) -> String? {
+ return previewUrl(forMessageBodyText: body, selectedRange: nil)
+ }
+
public class func previewUrl(forMessageBodyText body: String?, selectedRange: NSRange?) -> String? {
AssertIsOnMainThread()
diff --git a/SignalServiceKit/src/Messages/Interactions/TSMessage.h b/SignalServiceKit/src/Messages/Interactions/TSMessage.h
index a148ea65d..2488fd502 100644
--- a/SignalServiceKit/src/Messages/Interactions/TSMessage.h
+++ b/SignalServiceKit/src/Messages/Interactions/TSMessage.h
@@ -37,7 +37,7 @@ typedef NS_ENUM(NSInteger, LKMessageFriendRequestStatus) {
@property (nonatomic, readonly) BOOL isExpiringMessage;
@property (nonatomic, readonly, nullable) TSQuotedMessage *quotedMessage;
@property (nonatomic, readonly, nullable) OWSContact *contactShare;
-@property (nonatomic, readonly, nullable) OWSLinkPreview *linkPreview;
+@property (nonatomic, nullable) OWSLinkPreview *linkPreview;
// Loki friend request handling
@property (nonatomic) LKMessageFriendRequestStatus friendRequestStatus;
@property (nonatomic, readonly) NSString *friendRequestStatusDescription;
diff --git a/SignalServiceKit/src/Messages/Interactions/TSMessage.m b/SignalServiceKit/src/Messages/Interactions/TSMessage.m
index 2b8c5a50e..66f7922e0 100644
--- a/SignalServiceKit/src/Messages/Interactions/TSMessage.m
+++ b/SignalServiceKit/src/Messages/Interactions/TSMessage.m
@@ -48,8 +48,6 @@ static const NSUInteger OWSMessageSchemaVersion = 4;
*/
@property (nonatomic, readonly) NSUInteger schemaVersion;
-@property (nonatomic, nullable) OWSLinkPreview *linkPreview;
-
@end
#pragma mark -
diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m
index fe0c5af2b..8694623aa 100644
--- a/SignalServiceKit/src/Messages/OWSMessageManager.m
+++ b/SignalServiceKit/src/Messages/OWSMessageManager.m
@@ -1406,7 +1406,19 @@ NS_ASSUME_NONNULL_BEGIN
if (dataMessage.publicChatInfo != nil && dataMessage.publicChatInfo.hasServerID) {
[self.primaryStorage setIDForMessageWithServerID:dataMessage.publicChatInfo.serverID to:incomingMessage.uniqueId in:transaction];
}
-
+
+ NSString *url = [OWSLinkPreview previewURLForRawBodyText:incomingMessage.body];
+ if (url != nil) {
+ [OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:url]
+ .thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) {
+ [OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
+ OWSLinkPreview *linkPreview = [OWSLinkPreview buildValidatedLinkPreviewFromInfo:linkPreviewDraft transaction:transaction error:nil];
+ incomingMessage.linkPreview = linkPreview;
+ [incomingMessage saveWithTransaction:transaction];
+ }];
+ });
+ }
+
return incomingMessage;
}
default: {
@@ -1491,6 +1503,19 @@ NS_ASSUME_NONNULL_BEGIN
thread:thread
envelope:envelope
transaction:transaction];
+
+ if (linkPreview != nil) {
+ [OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:linkPreview.urlString]
+ .thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) {
+ if (linkPreviewDraft.jpegImageData == nil) { return; }
+ [OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
+ NSString *attachmentID = [OWSLinkPreview buildValidatedLinkPreviewFromInfo:linkPreviewDraft transaction:transaction error:nil].imageAttachmentId;
+ linkPreview.imageAttachmentId = attachmentID;
+ incomingMessage.linkPreview = linkPreview;
+ [incomingMessage saveWithTransaction:transaction];
+ }];
+ });
+ };
return incomingMessage;
}
diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m
index 1adf7b43d..f055bf0ae 100644
--- a/SignalServiceKit/src/Messages/OWSMessageSender.m
+++ b/SignalServiceKit/src/Messages/OWSMessageSender.m
@@ -1978,6 +1978,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
}
}
+ /*
if (message.linkPreview.imageAttachmentId != nil) {
TSAttachment *attachment =
[TSAttachment fetchObjectWithUniqueID:message.linkPreview.imageAttachmentId transaction:transaction];
@@ -1987,6 +1988,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
OWSFailDebug(@"unexpected attachment: %@", attachment);
}
}
+ */
// All outgoing messages should be saved at the time they are enqueued.
[message saveWithTransaction:transaction];