@@ -30,6 +30,7 @@ class Uploader : NSObject, URLSessionTaskDelegate{
3030 var uploadResolvers : [ String : RCTPromiseResolveBlock ] = [ : ]
3131 var uploadRejectors : [ String : RCTPromiseRejectBlock ] = [ : ]
3232 var currentTask : URLSessionDataTask ?
33+ var storage : [ Int : Data ] = [ : ]
3334 private lazy var taskManager = UrlTaskManager ( )
3435
3536 func upload( filePath: String , options: [ String : Any ] , resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) -> Void {
@@ -123,6 +124,8 @@ class Uploader : NSObject, URLSessionTaskDelegate{
123124 guard let uuid = session. configuration. identifier else { return }
124125 guard let reject = uploadRejectors [ uuid] else { return }
125126 guard let resolve = uploadResolvers [ uuid] else { return }
127+ guard let data = self . storage [ task. taskIdentifier] ,
128+ let json = try ? JSONSerialization . jsonObject ( with: data, options: [ ] ) as? [ String : Any ] else { return }
126129 guard error == nil else {
127130 reject ( " failed " , " Upload Failed " , error)
128131 uploadRejectors [ uuid] = nil
@@ -136,12 +139,18 @@ class Uploader : NSObject, URLSessionTaskDelegate{
136139 return ;
137140 }
138141
139- let result : [ String : Any ] = [ " status " : response. statusCode, " headers " : response. allHeaderFields, " body " : " " ]
142+ let result : [ String : Any ] = [ " status " : response. statusCode, " headers " : response. allHeaderFields, " body " : json ]
140143
141144 resolve ( result)
142145 uploadResolvers [ uuid] = nil
146+ self . storage [ task. taskIdentifier] = nil
143147 }
144148
149+
150+ public func urlSession( _ session: URLSession , dataTask: URLSessionDataTask , didReceive data: Data ) {
151+ self . storage [ dataTask. taskIdentifier] = data
152+ }
153+
145154 func urlSession( _ session: URLSession , task: URLSessionTask , didSendBodyData bytesSent: Int64 , totalBytesSent: Int64 , totalBytesExpectedToSend: Int64 )
146155 {
147156 guard let uuid = session. configuration. identifier else { return }
0 commit comments