Skip to content

Commit 7b5a540

Browse files
committed
RUM-9753: fix event emitter call on invalid rn bridge reference
1 parent a0d4f13 commit 7b5a540

3 files changed

Lines changed: 21 additions & 3 deletions

File tree

packages/core/ios/Sources/DdSdk.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,6 @@
2424
@property(nonatomic, strong) DdSdkImplementation *ddSdkImplementation;
2525

2626
+ (void)initFromNative;
27+
+ (RCTBridge * _Nullable)latestBridgeReference;
2728

2829
@end

packages/core/ios/Sources/DdSdk.mm

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@
1414

1515
@implementation DdSdk
1616

17-
@synthesize bridge = _bridge;
17+
static __weak RCTBridge *s_latestBridge = nil;
18+
19+
+ (RCTBridge *)latestBridgeReference {
20+
return s_latestBridge;
21+
}
22+
1823
RCT_EXPORT_MODULE()
1924

2025
RCT_REMAP_METHOD(initialize, withConfiguration:(NSDictionary*)configuration
@@ -105,7 +110,8 @@ @implementation DdSdk
105110
- (DdSdkImplementation*)ddSdkImplementation
106111
{
107112
if (_ddSdkImplementation == nil) {
108-
_ddSdkImplementation = [[DdSdkImplementation alloc] initWithBridge:_bridge];
113+
s_latestBridge = self.bridge;
114+
_ddSdkImplementation = [[DdSdkImplementation alloc] initWithBridge:self.bridge];
109115
}
110116
return _ddSdkImplementation;
111117
}

packages/core/ios/Sources/DdSdkNativeInitialization.swift

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,18 @@ public class DdSdkNativeInitialization: NSObject {
151151
}
152152
}
153153
let onSessionStart: RUM.SessionListener = { sessionId, isDiscarded in
154-
let body: [String: Any?] = ["sessionId": sessionId, "isDiscarded": isDiscarded]
154+
guard
155+
let emitter = eventEmitter,
156+
let bridge = emitter.bridge,
157+
let latestBridge = DdSdk.latestBridgeReference(),
158+
bridge === latestBridge
159+
else {
160+
return
161+
}
162+
163+
let body: [String: Any?] = [
164+
"sessionId": sessionId, "isDiscarded": isDiscarded,
165+
]
155166
eventEmitter?.sendEvent(withName: "RumSessionStarted", body: body)
156167
}
157168

0 commit comments

Comments
 (0)