9
9
import com .facebook .react .bridge .ReadableMap ;
10
10
11
11
import java .util .Map ;
12
+ import java .util .concurrent .LinkedBlockingQueue ;
13
+ import java .util .concurrent .ThreadPoolExecutor ;
14
+ import java .util .concurrent .TimeUnit ;
12
15
13
16
public class RNFetchBlob extends ReactContextBaseJavaModule {
14
17
15
18
static ReactApplicationContext RCTContext ;
19
+ static LinkedBlockingQueue <Runnable > taskQueue = new LinkedBlockingQueue <>();
20
+ static ThreadPoolExecutor threadPool = new ThreadPoolExecutor (5 , 10 , 5000 , TimeUnit .MILLISECONDS , taskQueue );
16
21
17
22
public RNFetchBlob (ReactApplicationContext reactContext ) {
18
23
@@ -31,17 +36,29 @@ public Map<String, Object> getConstants() {
31
36
}
32
37
33
38
@ 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
+
36
47
}
37
48
38
49
@ 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
+
41
58
}
42
59
43
60
@ ReactMethod
44
- public void writeArrayChunk (String streamId , ReadableArray dataArray , Callback callback ) {
61
+ public void writeArrayChunk (final String streamId , final ReadableArray dataArray , final Callback callback ) {
45
62
RNFetchBlobFS .writeArrayChunk (streamId , dataArray , callback );
46
63
}
47
64
@@ -61,8 +78,14 @@ public void exists(String path, Callback callback) {
61
78
}
62
79
63
80
@ 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
+
66
89
}
67
90
68
91
@ ReactMethod
@@ -96,18 +119,34 @@ public void removeSession(ReadableArray paths, Callback callback) {
96
119
}
97
120
98
121
@ 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
+ });
101
129
}
102
130
103
131
@ 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
+ });
106
139
}
107
140
108
141
@ 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
+
111
150
}
112
151
113
152
@ ReactMethod
@@ -121,21 +160,28 @@ public void stat(String path, Callback callback) {
121
160
}
122
161
123
162
@ 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 );
136
182
}
137
- }
138
- new RNFetchBlobFS ( this . getReactApplicationContext ()). scanFile ( p , m , callback );
183
+ });
184
+
139
185
}
140
186
141
187
@ ReactMethod
0 commit comments