Skip to content

Commit 3d3d866

Browse files
committed
fix: reload on new arch
1 parent 2030589 commit 3d3d866

File tree

1 file changed

+38
-7
lines changed

1 file changed

+38
-7
lines changed

ios/RCTLiveMarkdownModule.mm

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,54 @@
1414
@implementation RCTLiveMarkdownModule {
1515
BOOL installed_;
1616
std::shared_ptr<livemarkdown::MarkdownCommitHook> commitHook_;
17+
__weak RCTSurfacePresenter *surfacePresenter_;
1718
}
1819

1920
RCT_EXPORT_MODULE(@"LiveMarkdownModule")
2021

2122
- (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];
2825

2926
commitHook_ =
30-
std::make_shared<livemarkdown::MarkdownCommitHook>(scheduler.uiManager);
27+
std::make_shared<livemarkdown::MarkdownCommitHook>(scheduler.uiManager);
28+
installed_ = YES;
3129
}
3230
return @1;
3331
}
3432

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+
3565
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
3666
(const facebook::react::ObjCTurboModule::InitParams &)params {
3767
return std::make_shared<facebook::react::NativeLiveMarkdownModuleSpecJSI>(
@@ -40,6 +70,7 @@ - (NSNumber *)install {
4070

4171
- (void)invalidate {
4272
MarkdownShadowFamilyRegistry::reset();
73+
[[NSNotificationCenter defaultCenter] removeObserver:self];
4374
[super invalidate];
4475
}
4576

0 commit comments

Comments
 (0)