From 39a1a4b3ab18eac5d203083c9041ab7c5cfcbe06 Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Fri, 6 Nov 2020 15:37:11 +1100 Subject: [PATCH] Implement link preview --- .../VisibleMessage+Contact.swift | 8 ++--- .../VisibleMessage+LinkPreview.swift | 35 +++++++++++++++++-- .../Pipelines/ReceivingPipeline.swift | 3 +- .../Pipelines/SendingPipeline.swift | 1 + Signal/Signal-Info.plist | 4 +++ 5 files changed, 42 insertions(+), 9 deletions(-) diff --git a/SessionMessagingKit/Messages/Visible Message/VisibleMessage+Contact.swift b/SessionMessagingKit/Messages/Visible Message/VisibleMessage+Contact.swift index 548070cec..d89865981 100644 --- a/SessionMessagingKit/Messages/Visible Message/VisibleMessage+Contact.swift +++ b/SessionMessagingKit/Messages/Visible Message/VisibleMessage+Contact.swift @@ -4,12 +4,8 @@ public extension VisibleMessage { @objc(SNContact) class Contact : NSObject, NSCoding { - public required init?(coder: NSCoder) { - fatalError("Not implemented.") - } + public required init?(coder: NSCoder) { } - public func encode(with coder: NSCoder) { - fatalError("Not implemented.") - } + public func encode(with coder: NSCoder) { } } } diff --git a/SessionMessagingKit/Messages/Visible Message/VisibleMessage+LinkPreview.swift b/SessionMessagingKit/Messages/Visible Message/VisibleMessage+LinkPreview.swift index 68c931510..072978b03 100644 --- a/SessionMessagingKit/Messages/Visible Message/VisibleMessage+LinkPreview.swift +++ b/SessionMessagingKit/Messages/Visible Message/VisibleMessage+LinkPreview.swift @@ -1,15 +1,46 @@ +import SessionUtilities public extension VisibleMessage { @objc(SNLinkPreview) class LinkPreview : NSObject, NSCoding { + public var title: String? + public var url: String? + + internal init(title: String, url: String) { + self.title = title + self.url = url + } public required init?(coder: NSCoder) { - fatalError("Not implemented.") + if let title = coder.decodeObject(forKey: "title") as! String? { self.title = title } + if let url = coder.decodeObject(forKey: "url") as! String? { self.url = url } } public func encode(with coder: NSCoder) { - fatalError("Not implemented.") + coder.encode(title, forKey: "title") + coder.encode(url, forKey: "url") + } + + public static func fromProto(_ proto: SNProtoDataMessagePreview) -> LinkPreview? { + guard let title = proto.title else { return nil } + let url = proto.url + return LinkPreview(title: title, url: url) + } + + public func toProto() -> SNProtoDataMessagePreview? { + guard let title = title, let url = url else { + SNLog("Couldn't construct link preview proto from: \(self).") + return nil + } + let linkPreviewProto = SNProtoDataMessagePreview.builder(url: url) + linkPreviewProto.setTitle(title) + do { + return try linkPreviewProto.build() + } catch { + SNLog("Couldn't construct link preview proto from: \(self).") + return nil + } } } } diff --git a/SessionMessagingKit/Pipelines/ReceivingPipeline.swift b/SessionMessagingKit/Pipelines/ReceivingPipeline.swift index 79a4fc21e..8be3cfc41 100644 --- a/SessionMessagingKit/Pipelines/ReceivingPipeline.swift +++ b/SessionMessagingKit/Pipelines/ReceivingPipeline.swift @@ -3,7 +3,8 @@ import SessionUtilities public enum ReceivingPipeline { public static func parse(_ data: Data) -> Message? { - // TODO: Decrypt + // TODO: Decryption + // TODO: Validation let proto: SNProtoContent do { proto = try SNProtoContent.parseData(data) diff --git a/SessionMessagingKit/Pipelines/SendingPipeline.swift b/SessionMessagingKit/Pipelines/SendingPipeline.swift index 108f857ca..857ec2ca3 100644 --- a/SessionMessagingKit/Pipelines/SendingPipeline.swift +++ b/SessionMessagingKit/Pipelines/SendingPipeline.swift @@ -34,6 +34,7 @@ public enum SendingPipeline { return Promise(error: Error.protoSerializationFailed) } // TODO: Encryption + // TODO: Validation let recipient = "" let base64EncodedData = data.base64EncodedString() let ttl: UInt64 = 2 * 24 * 60 * 60 * 1000 diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index f77e55a0b..7b69a02fd 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -6,10 +6,14 @@ CarthageVersion 0.36.0 + DateTime + Fri Nov 6 03:20:05 UTC 2020 OSXVersion 10.15.6 WebRTCCommit 1445d719bf05280270e9f77576f80f973fd847f8 M73 + XCodeVersion + 1200.1210 CFBundleDevelopmentRegion en