@@ -89,9 +89,9 @@ public final class MuxUpload : Hashable, Equatable {
8989 /// Upload has been paused
9090 case uploadPaused( AVAsset , TransportStatus )
9191 /// Upload has succeeded
92- case uploadSucceeded( AVAsset , TransportStatus , UploadResult )
92+ case uploadSucceeded( AVAsset , MuxUpload . Success )
9393 /// Upload has failed
94- case uploadFailed( AVAsset , TransportStatus , UploadResult )
94+ case uploadFailed( AVAsset , MuxUpload . UploadError )
9595 }
9696
9797 /// Current status of the upload input as it goes through
@@ -124,17 +124,15 @@ public final class MuxUpload : Hashable, Equatable {
124124 uploadInfo. sourceAsset ( ) ,
125125 transportStatus
126126 )
127- case . uploadSucceeded( let uploadInfo, let transportStatus ) :
127+ case . uploadSucceeded( let uploadInfo, let success ) :
128128 return InputStatus . uploadSucceeded (
129129 uploadInfo. sourceAsset ( ) ,
130- transportStatus,
131- . success( . init( finalState: transportStatus) )
130+ success
132131 )
133- case . uploadFailed( let uploadInfo, let transportStatus ) :
132+ case . uploadFailed( let uploadInfo, let error ) :
134133 return InputStatus . uploadFailed (
135134 uploadInfo. sourceAsset ( ) ,
136- transportStatus,
137- . failure( . init( lastStatus: transportStatus) )
135+ error
138136 )
139137 }
140138 }
@@ -429,20 +427,18 @@ public final class MuxUpload : Hashable, Equatable {
429427 startTime: Date ( ) . timeIntervalSince1970,
430428 isPaused: true
431429 )
432- resultHandler ? (
433- . failure(
434- UploadError (
435- lastStatus: startFailureTransportStatus,
436- code: . file,
437- message: " " ,
438- reason: nil
439- )
440- )
430+ let error : UploadError = UploadError (
431+ lastStatus: startFailureTransportStatus,
432+ code: . file,
433+ message: " " ,
434+ reason: nil
441435 )
436+ let result : UploadResult = . failure( error)
442437 input. status = . uploadFailed(
443438 input. uploadInfo,
444- startFailureTransportStatus
439+ error
445440 )
441+ resultHandler ? ( result)
446442 return
447443 }
448444
@@ -456,7 +452,9 @@ public final class MuxUpload : Hashable, Equatable {
456452 MuxUploadSDK . logger? . warning ( " start() called but upload is already in progress " )
457453 fileWorker? . addDelegate (
458454 withToken: id,
459- InternalUploaderDelegate { [ self ] state in handleStateUpdate ( state) }
455+ InternalUploaderDelegate {
456+ [ self ] state in handleStateUpdate ( state)
457+ }
460458 )
461459 fileWorker? . start ( )
462460 return
@@ -621,10 +619,15 @@ public final class MuxUpload : Hashable, Equatable {
621619 private func handleStateUpdate( _ state: ChunkedFileUploader . InternalUploadState ) {
622620 switch state {
623621 case . success( let result) : do {
624- if let notifySuccess = resultHandler {
625- let finalStatus = TransportStatus ( progress: result. finalProgress, updatedTime: result. finishTime, startTime: result. startTime, isPaused: false )
626- notifySuccess ( Result < Success , UploadError > . success ( Success ( finalState: finalStatus) ) )
627- }
622+ let transportStatus = TransportStatus (
623+ progress: result. finalProgress,
624+ updatedTime: result. finishTime,
625+ startTime: result. startTime,
626+ isPaused: false
627+ )
628+ let successDetails = MuxUpload . Success ( finalState: transportStatus)
629+ input. processUploadSuccess ( transportStatus: transportStatus)
630+ resultHandler ? ( Result < Success , UploadError > . success ( successDetails) )
628631 fileWorker? . removeDelegate ( withToken: id)
629632 fileWorker = nil
630633 }
@@ -637,35 +640,33 @@ public final class MuxUpload : Hashable, Equatable {
637640 isPaused: false
638641 )
639642 )
640- if let notifyFailure = resultHandler {
641- if case . cancelled = parsedError. code {
642- // This differs from what MuxUpload does
643- // when cancelled with an external API call
644- MuxUploadSDK . logger? . info ( " task canceled " )
645- let canceledStatus = MuxUpload . TransportStatus (
646- progress: input. transportStatus? . progress,
647- updatedTime: input. transportStatus? . updatedTime ?? Date ( ) . timeIntervalSince1970,
648- startTime: input. transportStatus? . startTime ?? Date ( ) . timeIntervalSince1970,
649- isPaused: true
650- )
651- if let notifyProgress = progressHandler { notifyProgress ( canceledStatus) }
652- } else {
653- notifyFailure ( Result . failure ( parsedError) )
654- }
643+ input. processUploadFailure ( error: parsedError)
644+ if case . cancelled = parsedError. code {
645+ // This differs from what MuxUpload does
646+ // when cancelled with an external API call
647+ MuxUploadSDK . logger? . info ( " task canceled " )
648+ let canceledStatus = MuxUpload . TransportStatus (
649+ progress: input. transportStatus? . progress,
650+ updatedTime: input. transportStatus? . updatedTime ?? Date ( ) . timeIntervalSince1970,
651+ startTime: input. transportStatus? . startTime ?? Date ( ) . timeIntervalSince1970,
652+ isPaused: true
653+ )
654+ progressHandler ? ( canceledStatus)
655+ } else {
656+ resultHandler ? ( Result . failure ( parsedError) )
655657 }
656658 fileWorker? . removeDelegate ( withToken: id)
657659 fileWorker = nil
658660 }
659661 case . uploading( let update) : do {
660- if let notifyProgress = progressHandler {
661- let status = TransportStatus (
662- progress: update. progress,
663- updatedTime: update. updateTime,
664- startTime: update. startTime, isPaused: false
665- )
666- input. status = . uploadInProgress( input. uploadInfo, status)
667- notifyProgress ( status)
668- }
662+ let status = TransportStatus (
663+ progress: update. progress,
664+ updatedTime: update. updateTime,
665+ startTime: update. startTime,
666+ isPaused: false
667+ )
668+ input. status = . uploadInProgress( input. uploadInfo, status)
669+ progressHandler ? ( status)
669670 }
670671 default : do { }
671672 }
@@ -709,6 +710,15 @@ fileprivate class InternalUploaderDelegate : ChunkedFileUploaderDelegate {
709710 }
710711}
711712
713+ extension MuxUpload . UploadError : Equatable {
714+ public static func == ( lhs: MuxUpload . UploadError , rhs: MuxUpload . UploadError ) -> Bool {
715+ return lhs. message == rhs. message &&
716+ lhs. lastStatus == rhs. lastStatus &&
717+ lhs. code == rhs. code &&
718+ lhs. reason? . localizedDescription == rhs. reason? . localizedDescription
719+ }
720+ }
721+
712722public extension Error {
713723 func asMuxUploadError( ) -> MuxUpload . UploadError ? {
714724 return self as? MuxUpload . UploadError
0 commit comments