Skip to content

Commit e2f42ac

Browse files
committed
fix: ios add uploadTask server-response to resolve(result)
1 parent f949b08 commit e2f42ac

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

ios/Utils/Uploader.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)