@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.
@@ -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
- installed_ = YES;
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
- std::make_shared<livemarkdown::MarkdownCommitHook>(scheduler.uiManager);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expensify/react-native-live-markdown",
3
- "version": "0.1.73",
3
+ "version": "0.1.74",
4
4
  "description": "Drop-in replacement for React Native's TextInput component with Markdown formatting.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",