Augusto пре 6 година
родитељ
комит
c66788ff23
1 измењених фајлова са 46 додато и 34 уклоњено
  1. 46
    34
      android/src/main/java/com/RNFetchBlob/RNFetchBlob.java

+ 46
- 34
android/src/main/java/com/RNFetchBlob/RNFetchBlob.java Прегледај датотеку

@@ -7,6 +7,7 @@ import android.content.pm.PackageManager;
7 7
 import android.net.Uri;
8 8
 import android.os.Build;
9 9
 import android.support.v4.content.FileProvider;
10
+import android.util.SparseArray;
10 11
 
11 12
 import com.facebook.react.bridge.ActivityEventListener;
12 13
 import com.facebook.react.bridge.Callback;
@@ -38,26 +39,23 @@ import static com.RNFetchBlob.RNFetchBlobConst.GET_CONTENT_INTENT;
38 39
 
39 40
 public class RNFetchBlob extends ReactContextBaseJavaModule {
40 41
 
41
-    // Cookies
42
-    private final ForwardingCookieHandler mCookieHandler;
43
-    private final CookieJarContainer mCookieJarContainer;
44 42
     private final OkHttpClient mClient;
45 43
 
46 44
     static ReactApplicationContext RCTContext;
47
-    static LinkedBlockingQueue<Runnable> taskQueue = new LinkedBlockingQueue<>();
48
-    static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5, 10, 5000, TimeUnit.MILLISECONDS, taskQueue);
45
+    private static LinkedBlockingQueue<Runnable> taskQueue = new LinkedBlockingQueue<>();
46
+    private static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5, 10, 5000, TimeUnit.MILLISECONDS, taskQueue);
49 47
     static LinkedBlockingQueue<Runnable> fsTaskQueue = new LinkedBlockingQueue<>();
50
-    static ThreadPoolExecutor fsThreadPool = new ThreadPoolExecutor(2, 10, 5000, TimeUnit.MILLISECONDS, taskQueue);
51
-    static public boolean ActionViewVisible = false;
52
-    static HashMap<Integer, Promise> promiseTable = new HashMap<>();
48
+    private static ThreadPoolExecutor fsThreadPool = new ThreadPoolExecutor(2, 10, 5000, TimeUnit.MILLISECONDS, taskQueue);
49
+    private static boolean ActionViewVisible = false;
50
+    private static SparseArray<Promise> promiseTable = new SparseArray<>();
53 51
 
54 52
     public RNFetchBlob(ReactApplicationContext reactContext) {
55 53
 
56 54
         super(reactContext);
57 55
 
58 56
         mClient = OkHttpClientProvider.getOkHttpClient();
59
-        mCookieHandler = new ForwardingCookieHandler(reactContext);
60
-        mCookieJarContainer = (CookieJarContainer) mClient.cookieJar();
57
+        ForwardingCookieHandler mCookieHandler = new ForwardingCookieHandler(reactContext);
58
+        CookieJarContainer mCookieJarContainer = (CookieJarContainer) mClient.cookieJar();
61 59
         mCookieJarContainer.setCookieJar(new JavaNetCookieJar(mCookieHandler));
62 60
 
63 61
         RCTContext = reactContext;
@@ -89,14 +87,23 @@ public class RNFetchBlob extends ReactContextBaseJavaModule {
89 87
     }
90 88
 
91 89
     @ReactMethod
92
-    public void createFile(final String path, final String content, final String encode, final Callback callback) {
90
+    public void createFile(final String path, final String content, final String encode, final Promise promise) {
93 91
         threadPool.execute(new Runnable() {
94 92
             @Override
95 93
             public void run() {
96
-                RNFetchBlobFS.createFile(path, content, encode, callback);
94
+                RNFetchBlobFS.createFile(path, content, encode, promise);
97 95
             }
98 96
         });
97
+    }
99 98
 
99
+    @ReactMethod
100
+    public void createFileASCII(final String path, final ReadableArray dataArray, final Promise promise) {
101
+        threadPool.execute(new Runnable() {
102
+            @Override
103
+            public void run() {
104
+                RNFetchBlobFS.createFileASCII(path, dataArray, promise);
105
+            }
106
+        });
100 107
     }
101 108
 
102 109
     @ReactMethod
@@ -147,21 +154,10 @@ public class RNFetchBlob extends ReactContextBaseJavaModule {
147 154
             };
148 155
             RCTContext.addLifecycleEventListener(listener);
149 156
         } catch(Exception ex) {
150
-            promise.reject(ex.getLocalizedMessage());
157
+            promise.reject("EUNSPECIFIED", ex.getLocalizedMessage());
151 158
         }
152 159
     }
153 160
 
154
-    @ReactMethod
155
-    public void createFileASCII(final String path, final ReadableArray dataArray, final Callback callback) {
156
-        threadPool.execute(new Runnable() {
157
-            @Override
158
-            public void run() {
159
-                RNFetchBlobFS.createFileASCII(path, dataArray, callback);
160
-            }
161
-        });
162
-
163
-    }
164
-
165 161
     @ReactMethod
166 162
     public void writeArrayChunk(final String streamId, final ReadableArray dataArray, final Callback callback) {
167 163
         RNFetchBlobFS.writeArrayChunk(streamId, dataArray, callback);
@@ -173,8 +169,8 @@ public class RNFetchBlob extends ReactContextBaseJavaModule {
173 169
     }
174 170
 
175 171
     @ReactMethod
176
-    public void mkdir(String path, Callback callback) {
177
-        RNFetchBlobFS.mkdir(path, callback);
172
+    public void mkdir(String path, Promise promise) {
173
+        RNFetchBlobFS.mkdir(path, promise);
178 174
     }
179 175
 
180 176
     @ReactMethod
@@ -190,7 +186,6 @@ public class RNFetchBlob extends ReactContextBaseJavaModule {
190 186
                 RNFetchBlobFS.cp(path, dest, callback);
191 187
             }
192 188
         });
193
-
194 189
     }
195 190
 
196 191
     @ReactMethod
@@ -199,8 +194,8 @@ public class RNFetchBlob extends ReactContextBaseJavaModule {
199 194
     }
200 195
 
201 196
     @ReactMethod
202
-    public void ls(String path, Callback callback) {
203
-        RNFetchBlobFS.ls(path, callback);
197
+    public void ls(String path, Promise promise) {
198
+        RNFetchBlobFS.ls(path, promise);
204 199
     }
205 200
 
206 201
     @ReactMethod
@@ -251,7 +246,6 @@ public class RNFetchBlob extends ReactContextBaseJavaModule {
251 246
                 RNFetchBlobFS.writeFile(path, encoding, data, append, promise);
252 247
             }
253 248
         });
254
-
255 249
     }
256 250
 
257 251
     @ReactMethod
@@ -286,15 +280,24 @@ public class RNFetchBlob extends ReactContextBaseJavaModule {
286 280
                 new RNFetchBlobFS(ctx).scanFile(p, m, callback);
287 281
             }
288 282
         });
289
-
290 283
     }
291 284
 
292 285
     @ReactMethod
286
+    public void hash(final String path, final String algorithm, final Promise promise) {
287
+        threadPool.execute(new Runnable() {
288
+            @Override
289
+            public void run() {
290
+                RNFetchBlobFS.hash(path, algorithm, promise);
291
+            }
292
+        });
293
+    }
294
+
293 295
     /**
294 296
      * @param path Stream file path
295 297
      * @param encoding Stream encoding, should be one of `base64`, `ascii`, and `utf8`
296 298
      * @param bufferSize Stream buffer size, default to 4096 or 4095(base64).
297 299
      */
300
+    @ReactMethod
298 301
     public void readStream(final String path, final String encoding, final int bufferSize, final int tick, final String streamId) {
299 302
         final ReactApplicationContext ctx = this.getReactApplicationContext();
300 303
         fsThreadPool.execute(new Runnable() {
@@ -368,10 +371,10 @@ public class RNFetchBlob extends ReactContextBaseJavaModule {
368 371
 
369 372
     @ReactMethod
370 373
     public void addCompleteDownload (ReadableMap config, Promise promise) {
371
-        DownloadManager dm = (DownloadManager) RNFetchBlob.RCTContext.getSystemService(RNFetchBlob.RCTContext.DOWNLOAD_SERVICE);
374
+        DownloadManager dm = (DownloadManager) RCTContext.getSystemService(RCTContext.DOWNLOAD_SERVICE);
372 375
         String path = RNFetchBlobFS.normalizePath(config.getString("path"));
373 376
         if(path == null) {
374
-            promise.reject("RNFetchblob.addCompleteDownload can not resolve URI:" + config.getString("path"), "RNFetchblob.addCompleteDownload can not resolve URI:" + path);
377
+            promise.reject("EINVAL", "RNFetchblob.addCompleteDownload can not resolve URI:" + config.getString("path"));
375 378
             return;
376 379
         }
377 380
         try {
@@ -388,9 +391,18 @@ public class RNFetchBlob extends ReactContextBaseJavaModule {
388 391
             promise.resolve(null);
389 392
         }
390 393
         catch(Exception ex) {
391
-            promise.reject("RNFetchblob.addCompleteDownload failed", ex.getStackTrace().toString());
394
+            promise.reject("EUNSPECIFIED", ex.getLocalizedMessage());
392 395
         }
393 396
 
394 397
     }
395 398
 
399
+    @ReactMethod
400
+    public void getSDCardDir(Promise promise) {
401
+        RNFetchBlobFS.getSDCardDir(promise);
402
+    }
403
+
404
+    @ReactMethod
405
+    public void getSDCardApplicationDir(Promise promise) {
406
+        RNFetchBlobFS.getSDCardApplicationDir(this.getReactApplicationContext(), promise);
407
+    }
396 408
 }