99import com .facebook .react .bridge .ReadableMap ;
1010
1111import java .util .Map ;
12+ import java .util .concurrent .LinkedBlockingQueue ;
13+ import java .util .concurrent .ThreadPoolExecutor ;
14+ import java .util .concurrent .TimeUnit ;
1215
1316public class RNFetchBlob extends ReactContextBaseJavaModule {
1417
1518 static ReactApplicationContext RCTContext ;
19+ static LinkedBlockingQueue <Runnable > taskQueue = new LinkedBlockingQueue <>();
20+ static ThreadPoolExecutor threadPool = new ThreadPoolExecutor (5 , 10 , 5000 , TimeUnit .MILLISECONDS , taskQueue );
1621
1722 public RNFetchBlob (ReactApplicationContext reactContext ) {
1823
@@ -31,17 +36,29 @@ public Map<String, Object> getConstants() {
3136 }
3237
3338 @ ReactMethod
34- public void createFile (String path , String content , String encode , Callback callback ) {
35- RNFetchBlobFS .createFile (path , content , encode , callback );
39+ public void createFile (final String path , final String content , final String encode , final Callback callback ) {
40+ threadPool .execute (new Runnable () {
41+ @ Override
42+ public void run () {
43+ RNFetchBlobFS .createFile (path , content , encode , callback );
44+ }
45+ });
46+
3647 }
3748
3849 @ ReactMethod
39- public void createFileASCII (String path , ReadableArray dataArray , Callback callback ) {
40- RNFetchBlobFS .createFileASCII (path , dataArray , callback );
50+ public void createFileASCII (final String path , final ReadableArray dataArray , final Callback callback ) {
51+ threadPool .execute (new Runnable () {
52+ @ Override
53+ public void run () {
54+ RNFetchBlobFS .createFileASCII (path , dataArray , callback );
55+ }
56+ });
57+
4158 }
4259
4360 @ ReactMethod
44- public void writeArrayChunk (String streamId , ReadableArray dataArray , Callback callback ) {
61+ public void writeArrayChunk (final String streamId , final ReadableArray dataArray , final Callback callback ) {
4562 RNFetchBlobFS .writeArrayChunk (streamId , dataArray , callback );
4663 }
4764
@@ -61,8 +78,14 @@ public void exists(String path, Callback callback) {
6178 }
6279
6380 @ ReactMethod
64- public void cp (String path , String dest , Callback callback ) {
65- RNFetchBlobFS .cp (path , dest , callback );
81+ public void cp (final String path , final String dest , final Callback callback ) {
82+ threadPool .execute (new Runnable () {
83+ @ Override
84+ public void run () {
85+ RNFetchBlobFS .cp (path , dest , callback );
86+ }
87+ });
88+
6689 }
6790
6891 @ ReactMethod
@@ -96,18 +119,34 @@ public void removeSession(ReadableArray paths, Callback callback) {
96119 }
97120
98121 @ ReactMethod
99- public void readFile (String path , String encoding , Promise promise ) {
100- RNFetchBlobFS .readFile (path , encoding , promise );
122+ public void readFile (final String path , final String encoding , final Promise promise ) {
123+ threadPool .execute (new Runnable () {
124+ @ Override
125+ public void run () {
126+ RNFetchBlobFS .readFile (path , encoding , promise );
127+ }
128+ });
101129 }
102130
103131 @ ReactMethod
104- public void writeFileArray (String path , ReadableArray data , boolean append , Promise promise ) {
105- RNFetchBlobFS .writeFile (path , data , append , promise );
132+ public void writeFileArray (final String path , final ReadableArray data , final boolean append , final Promise promise ) {
133+ threadPool .execute (new Runnable () {
134+ @ Override
135+ public void run () {
136+ RNFetchBlobFS .writeFile (path , data , append , promise );
137+ }
138+ });
106139 }
107140
108141 @ ReactMethod
109- public void writeFile (String path , String encoding , String data , boolean append , Promise promise ) {
110- RNFetchBlobFS .writeFile (path , encoding , data , append , promise );
142+ public void writeFile (final String path , final String encoding , final String data , final boolean append , final Promise promise ) {
143+ threadPool .execute (new Runnable () {
144+ @ Override
145+ public void run () {
146+ RNFetchBlobFS .writeFile (path , encoding , data , append , promise );
147+ }
148+ });
149+
111150 }
112151
113152 @ ReactMethod
@@ -121,21 +160,28 @@ public void stat(String path, Callback callback) {
121160 }
122161
123162 @ ReactMethod
124- public void scanFile (ReadableArray pairs , Callback callback ) {
125- int size = pairs .size ();
126- String [] p = new String [size ];
127- String [] m = new String [size ];
128- for (int i =0 ;i <size ;i ++) {
129- ReadableMap pair = pairs .getMap (i );
130- if (pair .hasKey ("path" )) {
131- p [i ] = pair .getString ("path" );
132- if (pair .hasKey ("mime" ))
133- m [i ] = pair .getString ("mime" );
134- else
135- m [i ] = null ;
163+ public void scanFile (final ReadableArray pairs , final Callback callback ) {
164+ final ReactApplicationContext ctx = this .getReactApplicationContext ();
165+ threadPool .execute (new Runnable () {
166+ @ Override
167+ public void run () {
168+ int size = pairs .size ();
169+ String [] p = new String [size ];
170+ String [] m = new String [size ];
171+ for (int i =0 ;i <size ;i ++) {
172+ ReadableMap pair = pairs .getMap (i );
173+ if (pair .hasKey ("path" )) {
174+ p [i ] = pair .getString ("path" );
175+ if (pair .hasKey ("mime" ))
176+ m [i ] = pair .getString ("mime" );
177+ else
178+ m [i ] = null ;
179+ }
180+ }
181+ new RNFetchBlobFS (ctx ).scanFile (p , m , callback );
136182 }
137- }
138- new RNFetchBlobFS ( this . getReactApplicationContext ()). scanFile ( p , m , callback );
183+ });
184+
139185 }
140186
141187 @ ReactMethod
0 commit comments