mirror of
https://github.com/status-im/react-native-fs.git
synced 2025-02-28 23:10:29 +00:00
Merge pull request #68 from charpeni/jobId-progress-callback
Add property jobId to progressCallback
This commit is contained in:
commit
23a85af821
@ -161,14 +161,14 @@ RCT_EXPORT_METHOD(moveFile:(NSString *)filepath
|
|||||||
callback:(RCTResponseSenderBlock)callback)
|
callback:(RCTResponseSenderBlock)callback)
|
||||||
{
|
{
|
||||||
NSFileManager *manager = [NSFileManager defaultManager];
|
NSFileManager *manager = [NSFileManager defaultManager];
|
||||||
|
|
||||||
NSError *error = nil;
|
NSError *error = nil;
|
||||||
BOOL success = [manager moveItemAtPath:filepath toPath:destPath error:&error];
|
BOOL success = [manager moveItemAtPath:filepath toPath:destPath error:&error];
|
||||||
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
return callback([self makeErrorPayload:error]);
|
return callback([self makeErrorPayload:error]);
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(@[[NSNull null], [NSNumber numberWithBool:success], destPath]);
|
callback(@[[NSNull null], [NSNumber numberWithBool:success], destPath]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,9 +177,9 @@ RCT_EXPORT_METHOD(downloadFile:(NSString *)urlStr
|
|||||||
jobId:(nonnull NSNumber *)jobId
|
jobId:(nonnull NSNumber *)jobId
|
||||||
callback:(RCTResponseSenderBlock)callback)
|
callback:(RCTResponseSenderBlock)callback)
|
||||||
{
|
{
|
||||||
|
|
||||||
DownloadParams* params = [DownloadParams alloc];
|
DownloadParams* params = [DownloadParams alloc];
|
||||||
|
|
||||||
params.fromUrl = urlStr;
|
params.fromUrl = urlStr;
|
||||||
params.toFile = filepath;
|
params.toFile = filepath;
|
||||||
|
|
||||||
@ -195,7 +195,7 @@ RCT_EXPORT_METHOD(downloadFile:(NSString *)urlStr
|
|||||||
params.errorCallback = ^(NSError* error) {
|
params.errorCallback = ^(NSError* error) {
|
||||||
return callback([self makeErrorPayload:error]);
|
return callback([self makeErrorPayload:error]);
|
||||||
};
|
};
|
||||||
|
|
||||||
params.beginCallback = ^(NSNumber* statusCode, NSNumber* contentLength, NSDictionary* headers) {
|
params.beginCallback = ^(NSNumber* statusCode, NSNumber* contentLength, NSDictionary* headers) {
|
||||||
[self.bridge.eventDispatcher sendAppEventWithName:[NSString stringWithFormat:@"DownloadBegin-%@", jobId]
|
[self.bridge.eventDispatcher sendAppEventWithName:[NSString stringWithFormat:@"DownloadBegin-%@", jobId]
|
||||||
body:@{@"jobId": jobId,
|
body:@{@"jobId": jobId,
|
||||||
@ -203,26 +203,27 @@ RCT_EXPORT_METHOD(downloadFile:(NSString *)urlStr
|
|||||||
@"contentLength": contentLength,
|
@"contentLength": contentLength,
|
||||||
@"headers": headers}];
|
@"headers": headers}];
|
||||||
};
|
};
|
||||||
|
|
||||||
params.progressCallback = ^(NSNumber* contentLength, NSNumber* bytesWritten) {
|
params.progressCallback = ^(NSNumber* contentLength, NSNumber* bytesWritten) {
|
||||||
[self.bridge.eventDispatcher sendAppEventWithName:[NSString stringWithFormat:@"DownloadProgress-%@", jobId]
|
[self.bridge.eventDispatcher sendAppEventWithName:[NSString stringWithFormat:@"DownloadProgress-%@", jobId]
|
||||||
body:@{@"contentLength": contentLength,
|
body:@{@"jobId": jobId,
|
||||||
|
@"contentLength": contentLength,
|
||||||
@"bytesWritten": bytesWritten}];
|
@"bytesWritten": bytesWritten}];
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!self.downloaders) self.downloaders = [[NSMutableDictionary alloc] init];
|
if (!self.downloaders) self.downloaders = [[NSMutableDictionary alloc] init];
|
||||||
|
|
||||||
Downloader* downloader = [Downloader alloc];
|
Downloader* downloader = [Downloader alloc];
|
||||||
|
|
||||||
[downloader downloadFile:params];
|
[downloader downloadFile:params];
|
||||||
|
|
||||||
[self.downloaders setValue:downloader forKey:[jobId stringValue]];
|
[self.downloaders setValue:downloader forKey:[jobId stringValue]];
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT_EXPORT_METHOD(stopDownload:(nonnull NSNumber *)jobId)
|
RCT_EXPORT_METHOD(stopDownload:(nonnull NSNumber *)jobId)
|
||||||
{
|
{
|
||||||
Downloader* downloader = [self.downloaders objectForKey:[jobId stringValue]];
|
Downloader* downloader = [self.downloaders objectForKey:[jobId stringValue]];
|
||||||
|
|
||||||
if (downloader != nil) {
|
if (downloader != nil) {
|
||||||
[downloader stopDownload];
|
[downloader stopDownload];
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ public class RNFSManager extends ReactContextBaseJavaModule {
|
|||||||
|
|
||||||
private static final String NSFileTypeRegular = "NSFileTypeRegular";
|
private static final String NSFileTypeRegular = "NSFileTypeRegular";
|
||||||
private static final String NSFileTypeDirectory = "NSFileTypeDirectory";
|
private static final String NSFileTypeDirectory = "NSFileTypeDirectory";
|
||||||
|
|
||||||
private SparseArray<Downloader> downloaders = new SparseArray<Downloader>();
|
private SparseArray<Downloader> downloaders = new SparseArray<Downloader>();
|
||||||
|
|
||||||
public RNFSManager(ReactApplicationContext reactContext) {
|
public RNFSManager(ReactApplicationContext reactContext) {
|
||||||
@ -71,7 +71,7 @@ public class RNFSManager extends ReactContextBaseJavaModule {
|
|||||||
callback.invoke(makeErrorPayload(ex));
|
callback.invoke(makeErrorPayload(ex));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ReactMethod
|
@ReactMethod
|
||||||
public void exists(String filepath, Callback callback) {
|
public void exists(String filepath, Callback callback) {
|
||||||
try {
|
try {
|
||||||
@ -223,48 +223,50 @@ public class RNFSManager extends ReactContextBaseJavaModule {
|
|||||||
URL url = new URL(urlStr);
|
URL url = new URL(urlStr);
|
||||||
|
|
||||||
DownloadParams params = new DownloadParams();
|
DownloadParams params = new DownloadParams();
|
||||||
|
|
||||||
params.src = url;
|
params.src = url;
|
||||||
params.dest = file;
|
params.dest = file;
|
||||||
|
|
||||||
params.onTaskCompleted = new DownloadParams.OnTaskCompleted() {
|
params.onTaskCompleted = new DownloadParams.OnTaskCompleted() {
|
||||||
public void onTaskCompleted(DownloadResult res) {
|
public void onTaskCompleted(DownloadResult res) {
|
||||||
if (res.exception == null) {
|
if (res.exception == null) {
|
||||||
WritableMap infoMap = Arguments.createMap();
|
WritableMap infoMap = Arguments.createMap();
|
||||||
|
|
||||||
infoMap.putInt("jobId", jobId);
|
infoMap.putInt("jobId", jobId);
|
||||||
infoMap.putInt("statusCode", res.statusCode);
|
infoMap.putInt("statusCode", res.statusCode);
|
||||||
infoMap.putInt("bytesWritten", res.bytesWritten);
|
infoMap.putInt("bytesWritten", res.bytesWritten);
|
||||||
|
|
||||||
callback.invoke(null, infoMap);
|
callback.invoke(null, infoMap);
|
||||||
} else {
|
} else {
|
||||||
callback.invoke(makeErrorPayload(res.exception));
|
callback.invoke(makeErrorPayload(res.exception));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
params.onDownloadBegin = new DownloadParams.OnDownloadBegin() {
|
params.onDownloadBegin = new DownloadParams.OnDownloadBegin() {
|
||||||
public void onDownloadBegin(int statusCode, int contentLength, Map<String, String> headers) {
|
public void onDownloadBegin(int statusCode, int contentLength, Map<String, String> headers) {
|
||||||
WritableMap headersMap = Arguments.createMap();
|
WritableMap headersMap = Arguments.createMap();
|
||||||
|
|
||||||
for (Map.Entry<String, String> entry : headers.entrySet()) {
|
for (Map.Entry<String, String> entry : headers.entrySet()) {
|
||||||
headersMap.putString(entry.getKey(), entry.getValue());
|
headersMap.putString(entry.getKey(), entry.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
WritableMap data = Arguments.createMap();
|
WritableMap data = Arguments.createMap();
|
||||||
|
|
||||||
data.putInt("jobId", jobId);
|
data.putInt("jobId", jobId);
|
||||||
data.putInt("statusCode", statusCode);
|
data.putInt("statusCode", statusCode);
|
||||||
data.putInt("contentLength", contentLength);
|
data.putInt("contentLength", contentLength);
|
||||||
data.putMap("headers", headersMap);
|
data.putMap("headers", headersMap);
|
||||||
|
|
||||||
sendEvent(getReactApplicationContext(), "DownloadBegin-" + jobId, data);
|
sendEvent(getReactApplicationContext(), "DownloadBegin-" + jobId, data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
params.onDownloadProgress = new DownloadParams.OnDownloadProgress() {
|
params.onDownloadProgress = new DownloadParams.OnDownloadProgress() {
|
||||||
public void onDownloadProgress(int contentLength, int bytesWritten) {
|
public void onDownloadProgress(int contentLength, int bytesWritten) {
|
||||||
WritableMap data = Arguments.createMap();
|
WritableMap data = Arguments.createMap();
|
||||||
|
|
||||||
|
data.putInt("jobId", jobId);
|
||||||
data.putInt("contentLength", contentLength);
|
data.putInt("contentLength", contentLength);
|
||||||
data.putInt("bytesWritten", bytesWritten);
|
data.putInt("bytesWritten", bytesWritten);
|
||||||
|
|
||||||
@ -273,22 +275,22 @@ public class RNFSManager extends ReactContextBaseJavaModule {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Downloader downloader = new Downloader();
|
Downloader downloader = new Downloader();
|
||||||
|
|
||||||
downloader.execute(params);
|
downloader.execute(params);
|
||||||
|
|
||||||
this.downloaders.put(jobId, downloader);
|
this.downloaders.put(jobId, downloader);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
callback.invoke(makeErrorPayload(ex));
|
callback.invoke(makeErrorPayload(ex));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ReactMethod
|
@ReactMethod
|
||||||
public void stopDownload(int jobId) {
|
public void stopDownload(int jobId) {
|
||||||
Downloader downloader = this.downloaders.get(jobId);
|
Downloader downloader = this.downloaders.get(jobId);
|
||||||
|
|
||||||
if (downloader != null) {
|
if (downloader != null) {
|
||||||
downloader.stop();
|
downloader.stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user