mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Swift
		
	
| // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
 | |
| 
 | |
| import Foundation
 | |
| import GRDB
 | |
| import SessionSnodeKit
 | |
| import SessionUtilitiesKit
 | |
| 
 | |
| extension MessageReceiver {
 | |
|     internal static func handleDataExtractionNotification(
 | |
|         _ db: Database,
 | |
|         threadId: String,
 | |
|         threadVariant: SessionThread.Variant,
 | |
|         message: DataExtractionNotification
 | |
|     ) throws {
 | |
|         guard
 | |
|             threadVariant == .contact,
 | |
|             let sender: String = message.sender,
 | |
|             let messageKind: DataExtractionNotification.Kind = message.kind
 | |
|         else { throw MessageReceiverError.invalidMessage }
 | |
|         
 | |
|         let timestampMs: Int64 = (
 | |
|             message.sentTimestamp.map { Int64($0) } ??
 | |
|             SnodeAPI.currentOffsetTimestampMs()
 | |
|         )
 | |
|         _ = try Interaction(
 | |
|             serverHash: message.serverHash,
 | |
|             threadId: threadId,
 | |
|             authorId: sender,
 | |
|             variant: {
 | |
|                 switch messageKind {
 | |
|                     case .screenshot: return .infoScreenshotNotification
 | |
|                     case .mediaSaved: return .infoMediaSavedNotification
 | |
|                 }
 | |
|             }(),
 | |
|             timestampMs: timestampMs,
 | |
|             wasRead: SessionUtil.timestampAlreadyRead(
 | |
|                 threadId: threadId,
 | |
|                 threadVariant: threadVariant,
 | |
|                 timestampMs: (timestampMs * 1000),
 | |
|                 userPublicKey: getUserHexEncodedPublicKey(db),
 | |
|                 openGroup: nil
 | |
|             )
 | |
|         ).inserted(db)
 | |
|     }
 | |
| }
 |