Skip to content

Commit 438e3ef

Browse files
RSNarafacebook-github-bot
authored andcommitted
Migrate IntersectionObserverManager to shadow node family
Summary: IntersectionObserverManager now uses families to manage IntersectionObservers. This diff just migrates its apis to family too. Changelog: [Internal] Reviewed By: yungsters Differential Revision: D74263375
1 parent a96aeab commit 438e3ef

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

packages/react-native/ReactCommon/react/nativemodule/intersectionobserver/NativeIntersectionObserver.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void NativeIntersectionObserver::observe(
3737

3838
intersectionObserverManager_.observe(
3939
intersectionObserverId,
40-
shadowNode,
40+
shadowNode->getFamilyShared(),
4141
thresholds,
4242
rootThresholds,
4343
uiManager);
@@ -48,7 +48,8 @@ void NativeIntersectionObserver::unobserve(
4848
IntersectionObserverObserverId intersectionObserverId,
4949
jsi::Object targetShadowNode) {
5050
auto shadowNode = shadowNodeFromValue(runtime, std::move(targetShadowNode));
51-
intersectionObserverManager_.unobserve(intersectionObserverId, *shadowNode);
51+
intersectionObserverManager_.unobserve(
52+
intersectionObserverId, shadowNode->getFamilyShared());
5253
}
5354

5455
void NativeIntersectionObserver::connect(

packages/react-native/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.cpp

+6-9
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,13 @@ IntersectionObserverManager::IntersectionObserverManager() = default;
1717

1818
void IntersectionObserverManager::observe(
1919
IntersectionObserverObserverId intersectionObserverId,
20-
const ShadowNode::Shared& shadowNode,
20+
const ShadowNodeFamily::Shared& shadowNodeFamily,
2121
std::vector<Float> thresholds,
2222
std::optional<std::vector<Float>> rootThresholds,
2323
const UIManager& uiManager) {
2424
TraceSection s("IntersectionObserverManager::observe");
2525

26-
auto surfaceId = shadowNode->getSurfaceId();
27-
auto shadowNodeFamily = shadowNode->getFamilyShared();
26+
auto surfaceId = shadowNodeFamily->getSurfaceId();
2827

2928
// The actual observer lives in the array, so we need to create it there and
3029
// then get a reference. Otherwise we only update its state in a copy.
@@ -78,15 +77,13 @@ void IntersectionObserverManager::observe(
7877

7978
void IntersectionObserverManager::unobserve(
8079
IntersectionObserverObserverId intersectionObserverId,
81-
const ShadowNode& shadowNode) {
80+
const ShadowNodeFamily::Shared& shadowNodeFamily) {
8281
TraceSection s("IntersectionObserverManager::unobserve");
8382

84-
auto& shadowNodeFamily = shadowNode.getFamily();
85-
8683
{
8784
std::unique_lock lock(observersMutex_);
8885

89-
auto surfaceId = shadowNode.getSurfaceId();
86+
auto surfaceId = shadowNodeFamily->getSurfaceId();
9087

9188
auto observersIt = observersBySurfaceId_.find(surfaceId);
9289
if (observersIt == observersBySurfaceId_.end()) {
@@ -102,7 +99,7 @@ void IntersectionObserverManager::unobserve(
10299
[intersectionObserverId, &shadowNodeFamily](const auto& observer) {
103100
return observer.getIntersectionObserverId() ==
104101
intersectionObserverId &&
105-
observer.isTargetShadowNodeFamily(shadowNodeFamily);
102+
observer.isTargetShadowNodeFamily(*shadowNodeFamily);
106103
}),
107104
observers.end());
108105

@@ -120,7 +117,7 @@ void IntersectionObserverManager::unobserve(
120117
pendingEntries_.end(),
121118
[intersectionObserverId, &shadowNodeFamily](const auto& entry) {
122119
return entry.intersectionObserverId == intersectionObserverId &&
123-
entry.sameShadowNodeFamily(shadowNodeFamily);
120+
entry.sameShadowNodeFamily(*shadowNodeFamily);
124121
}),
125122
pendingEntries_.end());
126123
}

packages/react-native/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ class IntersectionObserverManager final : public UIManagerMountHook {
2222

2323
void observe(
2424
IntersectionObserverObserverId intersectionObserverId,
25-
const ShadowNode::Shared& shadowNode,
25+
const ShadowNodeFamily::Shared& shadowNode,
2626
std::vector<Float> thresholds,
2727
std::optional<std::vector<Float>> rootThresholds,
2828
const UIManager& uiManager);
2929

3030
void unobserve(
3131
IntersectionObserverObserverId intersectionObserverId,
32-
const ShadowNode& shadowNode);
32+
const ShadowNodeFamily::Shared& shadowNode);
3333

3434
void connect(
3535
UIManager& uiManager,

0 commit comments

Comments
 (0)