
@objc(SNDataExtractionNotificationInfoMessage)
final class DataExtractionNotificationInfoMessage : TSInfoMessage {
    
    init(type: TSInfoMessageType, sentTimestamp: UInt64, thread: TSThread, referencedAttachmentTimestamp: UInt64?) {
        super.init(timestamp: sentTimestamp, in: thread, messageType: type)
    }
    
    required init(coder: NSCoder) {
        super.init(coder: coder)
    }
    
    required init(dictionary dictionaryValue: [String:Any]!) throws {
        try super.init(dictionary: dictionaryValue)
    }
    
    override func previewText(with transaction: YapDatabaseReadTransaction) -> String {
        guard let thread = thread as? TSContactThread else { return "" } // Should never occur
        let sessionID = thread.contactSessionID()
        let displayName = Storage.shared.getContact(with: sessionID)?.displayName(for: .regular) ?? sessionID
        switch messageType {
        case .screenshotNotification: return "\(displayName) took a screenshot."
        case .mediaSavedNotification:
            // TODO: Use referencedAttachmentTimestamp to tell the user * which * media was saved
            return "Media saved by \(displayName)."
        default: preconditionFailure()
        }
    }
}
