|
8 | 8 | #import "RCTBlobCollector.h" |
9 | 9 |
|
10 | 10 | #import <React/RCTBlobManager.h> |
11 | | -#import <React/RCTBridge+Private.h> |
12 | 11 |
|
13 | 12 | namespace facebook::react { |
14 | 13 |
|
|
26 | 25 | }); |
27 | 26 | } |
28 | 27 |
|
29 | | -void RCTBlobCollector::install(RCTBlobManager *blobManager) |
| 28 | +void RCTBlobCollector::install(jsi::Runtime &runtime, RCTBlobManager *blobManager) |
30 | 29 | { |
31 | | - __weak RCTCxxBridge *cxxBridge = (RCTCxxBridge *)blobManager.bridge; |
32 | | - [cxxBridge |
33 | | - dispatchBlock:^{ |
34 | | - if ((cxxBridge == nullptr) || cxxBridge.runtime == nullptr) { |
35 | | - return; |
36 | | - } |
37 | | - jsi::Runtime &runtime = *(jsi::Runtime *)cxxBridge.runtime; |
38 | | - runtime.global().setProperty( |
39 | | - runtime, |
40 | | - "__blobCollectorProvider", |
41 | | - jsi::Function::createFromHostFunction( |
42 | | - runtime, |
43 | | - jsi::PropNameID::forAscii(runtime, "__blobCollectorProvider"), |
44 | | - 1, |
45 | | - [blobManager](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *args, size_t count) { |
46 | | - auto blobId = args[0].asString(rt).utf8(rt); |
47 | | - auto blobCollector = std::make_shared<RCTBlobCollector>(blobManager, blobId); |
48 | | - auto blobCollectorJsObject = jsi::Object::createFromHostObject(rt, blobCollector); |
49 | | - blobCollectorJsObject.setExternalMemoryPressure( |
50 | | - rt, [blobManager lengthOfBlobWithId:[NSString stringWithUTF8String:blobId.c_str()]]); |
51 | | - return blobCollectorJsObject; |
52 | | - })); |
53 | | - } |
54 | | - queue:RCTJSThread]; |
| 30 | + auto provider = jsi::Function::createFromHostFunction( |
| 31 | + runtime, |
| 32 | + jsi::PropNameID::forAscii(runtime, "__blobCollectorProvider"), |
| 33 | + 1, |
| 34 | + [blobManager](jsi::Runtime &rt, const jsi::Value & /*thisVal*/, const jsi::Value *args, size_t /*count*/) { |
| 35 | + auto blobId = args[0].asString(rt).utf8(rt); |
| 36 | + auto blobCollector = std::make_shared<RCTBlobCollector>(blobManager, blobId); |
| 37 | + auto blobCollectorJsObject = jsi::Object::createFromHostObject(rt, blobCollector); |
| 38 | + blobCollectorJsObject.setExternalMemoryPressure( |
| 39 | + rt, [blobManager lengthOfBlobWithId:[NSString stringWithUTF8String:blobId.c_str()]]); |
| 40 | + return blobCollectorJsObject; |
| 41 | + }); |
| 42 | + runtime.global().setProperty(runtime, "__blobCollectorProvider", std::move(provider)); |
55 | 43 | } |
56 | 44 |
|
57 | 45 | } // namespace facebook::react |
0 commit comments