Implement quote

pull/308/head
nielsandriesse 5 years ago
parent 40098ac180
commit 9dc942772c

@ -14,7 +14,7 @@ public final class ClosedGroupUpdate : ControlMessage {
}
// MARK: Initialization
init(kind: Kind) {
internal init(kind: Kind) {
super.init()
self.kind = kind
}

@ -5,7 +5,7 @@ public final class ExpirationTimerUpdate : ControlMessage {
public var duration: UInt32?
// MARK: Initialization
init(duration: UInt32) {
internal init(duration: UInt32) {
super.init()
self.duration = duration
}

@ -5,7 +5,7 @@ public final class ReadReceipt : ControlMessage {
public var timestamps: [UInt64]?
// MARK: Initialization
init(timestamps: [UInt64]) {
internal init(timestamps: [UInt64]) {
super.init()
self.timestamps = timestamps
}

@ -6,7 +6,7 @@ public final class SessionRequest : ControlMessage {
private var preKeyBundle: PreKeyBundle?
// MARK: Initialization
init(preKeyBundle: PreKeyBundle) {
internal init(preKeyBundle: PreKeyBundle) {
super.init()
self.preKeyBundle = preKeyBundle
}

@ -24,7 +24,7 @@ public final class TypingIndicator : ControlMessage {
}
// MARK: Initialization
init(kind: Kind) {
internal init(kind: Kind) {
super.init()
self.kind = kind
}

@ -1,15 +1,51 @@
import SessionUtilities
public extension VisibleMessage {
@objc(SNQuote)
class Quote : NSObject, NSCoding {
public var timestamp: UInt64?
public var publicKey: String?
public var text: String?
internal init(timestamp: UInt64, publicKey: String, text: String) {
self.timestamp = timestamp
self.publicKey = publicKey
self.text = text
}
public required init?(coder: NSCoder) {
fatalError("Not implemented.")
if let timestamp = coder.decodeObject(forKey: "timestamp") as! UInt64? { self.timestamp = timestamp }
if let publicKey = coder.decodeObject(forKey: "publicKey") as! String? { self.publicKey = publicKey }
if let text = coder.decodeObject(forKey: "text") as! String? { self.text = text }
}
public func encode(with coder: NSCoder) {
fatalError("Not implemented.")
coder.encode(timestamp, forKey: "timestamp")
coder.encode(publicKey, forKey: "publicKey")
coder.encode(text, forKey: "text")
}
public static func fromProto(_ proto: SNProtoDataMessageQuote) -> Quote? {
let timestamp = proto.id
let publicKey = proto.author
guard let text = proto.text else { return nil }
return Quote(timestamp: timestamp, publicKey: publicKey, text: text)
}
public func toProto() -> SNProtoDataMessageQuote? {
guard let timestamp = timestamp, let publicKey = publicKey else {
SNLog("Couldn't construct quote proto from: \(self).")
return nil
}
let quoteProto = SNProtoDataMessageQuote.builder(id: timestamp, author: publicKey)
if let text = text { quoteProto.setText(text) }
do {
return try quoteProto.build()
} catch {
SNLog("Couldn't construct quote proto from: \(self).")
return nil
}
}
}
}

@ -7,4 +7,26 @@ public final class VisibleMessage : Message {
public var linkPreview: LinkPreview?
public var contact: Contact?
public var profile: Profile?
// MARK: Coding
public required init?(coder: NSCoder) {
super.init(coder: coder)
if let text = coder.decodeObject(forKey: "text") as! String? { self.text = text }
if let attachmentIDs = coder.decodeObject(forKey: "attachmentIDs") as! [String]? { self.attachmentIDs = attachmentIDs }
}
public override func encode(with coder: NSCoder) {
super.encode(with: coder)
coder.encode(text, forKey: "text")
coder.encode(attachmentIDs, forKey: "attachmentIDs")
}
// MARK: Proto Conversion
public override class func fromProto(_ proto: SNProtoContent) -> VisibleMessage? {
return nil
}
public override func toProto() -> SNProtoContent? {
return nil
}
}

Loading…
Cancel
Save