Skip to content
This repository was archived by the owner on Mar 16, 2019. It is now read-only.

Commit 765de23

Browse files
committed
fs.readStream redesign
1 parent 467788b commit 765de23

File tree

5 files changed

+111
-234
lines changed

5 files changed

+111
-234
lines changed

src/class/RNFetchBlobReadStream.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
DeviceEventEmitter,
99
NativeAppEventEmitter,
1010
} from 'react-native'
11+
import UUID from '../utils/uuid'
1112

1213
const RNFetchBlob = NativeModules.RNFetchBlob
1314
const emitter = DeviceEventEmitter
@@ -29,10 +30,10 @@ export default class RNFetchBlobReadStream {
2930
this._onData = () => {}
3031
this._onEnd = () => {}
3132
this._onError = () => {}
33+
this.streamId = 'RNFBRS'+ UUID()
3234

3335
// register for file stream event
34-
let subscription = emitter.addListener(`RNFetchBlobStream+${this.path}`, (e) => {
35-
36+
let subscription = emitter.addListener(this.streamId, (e) => {
3637
let {event, detail} = e
3738
if(this._onData && event === 'data')
3839
this._onData(detail)
@@ -56,18 +57,18 @@ export default class RNFetchBlobReadStream {
5657

5758
open() {
5859
if(!this.closed)
59-
RNFetchBlob.readStream(this.path, this.encoding, this.bufferSize || 0)
60+
RNFetchBlob.readStream(this.path, this.encoding, this.bufferSize || 0, this.streamId)
6061
else
6162
throw new Error('Stream closed')
6263
}
6364

6465
onData(fn) {
65-
if(this.encoding.toLowerCase() === 'ascii')
66-
this._onData = (data) => {
67-
fn(data)
68-
}
69-
else
70-
this._onData = fn
66+
// if(this.encoding.toLowerCase() === 'ascii')
67+
// this._onData = (data) => {
68+
// fn(data)
69+
// }
70+
// else
71+
this._onData = fn
7172
}
7273

7374
onError(fn) {

src/ios/RNFetchBlob/RNFetchBlob.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
@property (nonatomic) NSString * filePathPrefix;
1919

20+
+ (RCTBridge *)getRCTBridge;
2021

2122
@end
2223

src/ios/RNFetchBlob/RNFetchBlob.m

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
#import "RNFetchBlobReqBuilder.h"
1515

1616

17+
RCTBridge * bridgeRef;
18+
1719
////////////////////////////////////////
1820
//
1921
// Exported native methods
@@ -31,6 +33,11 @@ - (dispatch_queue_t) methodQueue {
3133
return dispatch_queue_create("RNFetchBlob.queue", DISPATCH_QUEUE_SERIAL);
3234
}
3335

36+
+ (RCTBridge *)getRCTBridge
37+
{
38+
return bridgeRef;
39+
}
40+
3441
RCT_EXPORT_MODULE();
3542

3643
- (id) init {
@@ -41,6 +48,7 @@ - (id) init {
4148
if(![[NSFileManager defaultManager] fileExistsAtPath: [RNFetchBlobFS getTempPath] isDirectory:&isDir]) {
4249
[[NSFileManager defaultManager] createDirectoryAtPath:[RNFetchBlobFS getTempPath] withIntermediateDirectories:YES attributes:nil error:NULL];
4350
}
51+
bridgeRef = _bridge;
4452
return self;
4553
}
4654

@@ -366,18 +374,20 @@ - (NSDictionary *)constantsToExport
366374
})
367375

368376
#pragma mark - fs.readStream
369-
RCT_EXPORT_METHOD(readStream:(NSString *)path withEncoding:(NSString *)encoding bufferSize:(int)bufferSize) {
377+
RCT_EXPORT_METHOD(readStream:(NSString *)path withEncoding:(NSString *)encoding bufferSize:(int)bufferSize streamId:(NSString *)streamId
378+
{
370379

371-
RNFetchBlobFS *fileStream = [[RNFetchBlobFS alloc] initWithBridgeRef:self.bridge];
380+
// RNFetchBlobFS *fileStream = [[RNFetchBlobFS alloc] initWithBridgeRef:self.bridge];
372381
if(bufferSize == nil) {
373382
if([[encoding lowercaseString] isEqualToString:@"base64"])
374383
bufferSize = 4095;
375384
else
376385
bufferSize = 4096;
377386
}
378-
// read asset stream
379-
[fileStream readWithPath:path useEncoding:encoding bufferSize:bufferSize];
380-
}
387+
388+
// [fileStream readWithPath:path useEncoding:encoding bufferSize:bufferSize];
389+
[RNFetchBlobFS readStream:path encoding:encoding bufferSize:bufferSize streamId:streamId bridgeRef:_bridge];
390+
})
381391

382392
#pragma mark - fs.getEnvionmentDirs
383393
RCT_EXPORT_METHOD(getEnvironmentDirs:(RCTResponseSenderBlock) callback) {

src/ios/RNFetchBlobFS.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
+ (void) writeFile:(NSString *)path encoding:(NSString *)encoding data:(NSString *)data append:(BOOL)append resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject;
5656
+ (void) readFile:(NSString *)path encoding:(NSString *)encoding resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject onComplete:(void (^)(NSData * content))onComplete;
5757
+ (void) readAssetFile:(NSData *)assetUrl completionBlock:(void(^)(NSData * content))completionBlock failBlock:(void(^)(NSError * err))failBlock;
58-
+ (void)slice:(NSString *)path
58+
+ (void) slice:(NSString *)path
5959
dest:(NSString *)dest
6060
start:(nonnull NSNumber *)start
6161
end:(nonnull NSNumber *)end
@@ -64,6 +64,7 @@
6464
rejecter:(RCTPromiseRejectBlock)reject;
6565
//+ (void) writeFileFromFile:(NSString *)src toFile:(NSString *)dest append:(BOOL)append;
6666
+ (void) writeAssetToPath:(ALAssetRepresentation * )rep dest:(NSString *)dest;
67+
+ (void) readStream:(NSString *)uri encoding:(NSString * )encoding bufferSize:(int)bufferSize streamId:(NSString *)streamId bridgeRef:(RCTBridge *)bridgeRef;
6768

6869
// constructor
6970
- (id) init;
@@ -73,12 +74,10 @@
7374
// file stream
7475
- (void) openWithDestination;
7576
- (NSString *)openWithPath:(NSString *)destPath encode:(nullable NSString *)encode appendData:(BOOL)append;
76-
- (void) startAssetReadStream:(NSData *)assetUrl;
7777

7878
// file stream write data
7979
- (void)write:(NSData *) chunk;
8080
- (void)writeEncodeChunk:(NSString *) chunk;
81-
- (void)readWithPath:(NSString *)path useEncoding:(NSString *)encoding bufferSize:(int) bufferSize;
8281

8382
- (void) closeInStream;
8483
- (void) closeOutStream;

0 commit comments

Comments
 (0)