@expensify/react-native-live-markdown 0.1.73 → 0.1.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ios/RCTLiveMarkdownModule.mm +38 -7
- package/package.json +1 -1
|
@@ -14,24 +14,54 @@
|
|
|
14
14
|
@implementation RCTLiveMarkdownModule {
|
|
15
15
|
BOOL installed_;
|
|
16
16
|
std::shared_ptr<livemarkdown::MarkdownCommitHook> commitHook_;
|
|
17
|
+
__weak RCTSurfacePresenter *surfacePresenter_;
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
RCT_EXPORT_MODULE(@"LiveMarkdownModule")
|
|
20
21
|
|
|
21
22
|
- (NSNumber *)install {
|
|
22
|
-
if (!installed_) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
RCTBridge *bridge = self.bridge;
|
|
26
|
-
RCTSurfacePresenter *surfacePresenter = bridge.surfacePresenter;
|
|
27
|
-
RCTScheduler *scheduler = [surfacePresenter scheduler];
|
|
23
|
+
if (!installed_ && surfacePresenter_ != nil) {
|
|
24
|
+
RCTScheduler *scheduler = [surfacePresenter_ scheduler];
|
|
28
25
|
|
|
29
26
|
commitHook_ =
|
|
30
|
-
|
|
27
|
+
std::make_shared<livemarkdown::MarkdownCommitHook>(scheduler.uiManager);
|
|
28
|
+
installed_ = YES;
|
|
31
29
|
}
|
|
32
30
|
return @1;
|
|
33
31
|
}
|
|
34
32
|
|
|
33
|
+
- (void)handleJavaScriptDidLoadNotification:(NSNotification *)notification
|
|
34
|
+
{
|
|
35
|
+
surfacePresenter_ = self.bridge.surfacePresenter;
|
|
36
|
+
[self install];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
- (void)setBridge:(RCTBridge *)bridge
|
|
40
|
+
{
|
|
41
|
+
[super setBridge:bridge];
|
|
42
|
+
|
|
43
|
+
[[NSNotificationCenter defaultCenter] addObserver:self
|
|
44
|
+
selector:@selector(handleJavaScriptDidLoadNotification:)
|
|
45
|
+
name:RCTJavaScriptDidLoadNotification
|
|
46
|
+
object:nil];
|
|
47
|
+
|
|
48
|
+
// only within the first loading `self.bridge.surfacePresenter` exists
|
|
49
|
+
// during the reload `self.bridge.surfacePresenter` is null
|
|
50
|
+
if (self.bridge.surfacePresenter) {
|
|
51
|
+
surfacePresenter_ = self.bridge.surfacePresenter;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/*
|
|
56
|
+
* Taken from RCTNativeAnimatedTurboModule:
|
|
57
|
+
* This selector is invoked via BridgelessTurboModuleSetup.
|
|
58
|
+
*/
|
|
59
|
+
- (void)setSurfacePresenter:(id<RCTSurfacePresenterStub>)surfacePresenter
|
|
60
|
+
{
|
|
61
|
+
surfacePresenter_ = surfacePresenter;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
35
65
|
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
36
66
|
(const facebook::react::ObjCTurboModule::InitParams &)params {
|
|
37
67
|
return std::make_shared<facebook::react::NativeLiveMarkdownModuleSpecJSI>(
|
|
@@ -40,6 +70,7 @@ RCT_EXPORT_MODULE(@"LiveMarkdownModule")
|
|
|
40
70
|
|
|
41
71
|
- (void)invalidate {
|
|
42
72
|
MarkdownShadowFamilyRegistry::reset();
|
|
73
|
+
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
|
43
74
|
[super invalidate];
|
|
44
75
|
}
|
|
45
76
|
|
package/package.json
CHANGED