@ -66,9 +66,9 @@ public final class AttachmentUploadJob : NSObject, Job, NSCoding { // NSObject/N
guard ! stream . isUploaded else { return handleSuccess ( ) } // S h o u l d n e v e r o c c u r
guard ! stream . isUploaded else { return handleSuccess ( ) } // S h o u l d n e v e r o c c u r
let storage = SNMessagingKitConfiguration . shared . storage
let storage = SNMessagingKitConfiguration . shared . storage
if let v2OpenGroup = storage . getV2OpenGroup ( for : threadID ) {
if let v2OpenGroup = storage . getV2OpenGroup ( for : threadID ) {
upload( stream , using : { data in return OpenGroupAPIV2 . upload ( data , to : v2OpenGroup . room , on : v2OpenGroup . server ) } , encrypt : fals e)
AttachmentUploadJob. upload( stream , using : { data in return OpenGroupAPIV2 . upload ( data , to : v2OpenGroup . room , on : v2OpenGroup . server ) } , encrypt : fals e, onSuccess : handleSuccess , onFailure : handleFailur e)
} else if FileServerAPIV2 . useV2FileServer && storage . getOpenGroup ( for : threadID ) = = nil {
} else if FileServerAPIV2 . useV2FileServer && storage . getOpenGroup ( for : threadID ) = = nil {
upload( stream , using : FileServerAPIV2 . upload , encrypt : tru e)
AttachmentUploadJob. upload( stream , using : FileServerAPIV2 . upload , encrypt : tru e, onSuccess : handleSuccess , onFailure : handleFailur e)
} else { // L e g a c y
} else { // L e g a c y
let openGroup = storage . getOpenGroup ( for : threadID )
let openGroup = storage . getOpenGroup ( for : threadID )
let server = openGroup ? . server ? ? FileServerAPI . server
let server = openGroup ? . server ? ? FileServerAPI . server
@ -87,11 +87,11 @@ public final class AttachmentUploadJob : NSObject, Job, NSCoding { // NSObject/N
}
}
}
}
p rivate func upload ( _ stream : TSAttachmentStream , using upload : ( Data ) -> Promise < UInt64 > , encrypt : Bool ) {
p ublic static func upload ( _ stream : TSAttachmentStream , using upload : ( Data ) -> Promise < UInt64 > , encrypt : Bool , onSuccess : ( ( ) -> Void ) ? , onFailure : ( ( Swift . Error ) -> Void ) ? ) {
// G e t t h e a t t a c h m e n t
// G e t t h e a t t a c h m e n t
guard var data = try ? stream . readDataFromFile ( ) else {
guard var data = try ? stream . readDataFromFile ( ) else {
SNLog ( " Couldn't read attachment from disk. " )
SNLog ( " Couldn't read attachment from disk. " )
return handleFailure ( error : Error . noAttachment )
onFailure ? ( Error . noAttachment ) ; return
}
}
// E n c r y p t t h e a t t a c h m e n t i f n e e d e d
// E n c r y p t t h e a t t a c h m e n t i f n e e d e d
if encrypt {
if encrypt {
@ -99,7 +99,7 @@ public final class AttachmentUploadJob : NSObject, Job, NSCoding { // NSObject/N
var digest = NSData ( )
var digest = NSData ( )
guard let ciphertext = Cryptography . encryptAttachmentData ( data , shouldPad : false , outKey : & encryptionKey , outDigest : & digest ) else {
guard let ciphertext = Cryptography . encryptAttachmentData ( data , shouldPad : false , outKey : & encryptionKey , outDigest : & digest ) else {
SNLog ( " Couldn't encrypt attachment. " )
SNLog ( " Couldn't encrypt attachment. " )
return handleFailure ( error : Error . encryptionFailed )
onFailure ? ( Error . encryptionFailed ) ; return
}
}
stream . encryptionKey = encryptionKey as Data
stream . encryptionKey = encryptionKey as Data
stream . digest = digest as Data
stream . digest = digest as Data
@ -108,7 +108,7 @@ public final class AttachmentUploadJob : NSObject, Job, NSCoding { // NSObject/N
// C h e c k t h e f i l e s i z e
// C h e c k t h e f i l e s i z e
SNLog ( " File size: \( data . count ) bytes. " )
SNLog ( " File size: \( data . count ) bytes. " )
if Double ( data . count ) > Double ( FileServerAPI . maxFileSize ) / FileServerAPI . fileSizeORMultiplier {
if Double ( data . count ) > Double ( FileServerAPI . maxFileSize ) / FileServerAPI . fileSizeORMultiplier {
return handleFailure ( error : FileServerAPI . Error . maxFileSizeExceeded )
onFailure ? ( FileServerAPI . Error . maxFileSizeExceeded ) ; return
}
}
// S e n d t h e r e q u e s t
// S e n d t h e r e q u e s t
stream . isUploaded = false
stream . isUploaded = false
@ -119,9 +119,9 @@ public final class AttachmentUploadJob : NSObject, Job, NSCoding { // NSObject/N
stream . isUploaded = true
stream . isUploaded = true
stream . downloadURL = downloadURL
stream . downloadURL = downloadURL
stream . save ( )
stream . save ( )
self . handleSuccess ( )
onSuccess ? ( )
} . catch { error in
} . catch { error in
self . handleFailure ( error : error )
onFailure ? ( error )
}
}
}
}