Skip to content

Commit f4542ac

Browse files
zeyapfacebook-github-bot
authored andcommitted
UIManager::add/RemoveEventListener
Summary: ## Changelog: [General] [Added] - add UIManager::add/RemoveEventListener Differential Revision: D72200640
1 parent b4e6454 commit f4542ac

File tree

5 files changed

+49
-0
lines changed

5 files changed

+49
-0
lines changed

packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,16 @@ void Scheduler::uiManagerShouldSynchronouslyUpdateViewOnUIThread(
328328
}
329329
}
330330

331+
void Scheduler::uiManagerShouldAddEventListener(
332+
std::shared_ptr<const EventListener> listener) {
333+
addEventListener(listener);
334+
}
335+
336+
void Scheduler::uiManagerShouldRemoveEventListener(
337+
const std::shared_ptr<const EventListener>& listener) {
338+
removeEventListener(listener);
339+
}
340+
331341
void Scheduler::reportMount(SurfaceId surfaceId) const {
332342
uiManager_->reportMount(surfaceId);
333343
}

packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ class Scheduler final : public UIManagerDelegate {
9797
void uiManagerShouldSynchronouslyUpdateViewOnUIThread(
9898
Tag tag,
9999
const folly::dynamic& props) override;
100+
void uiManagerShouldAddEventListener(
101+
std::shared_ptr<const EventListener> listener) override final;
102+
void uiManagerShouldRemoveEventListener(
103+
const std::shared_ptr<const EventListener>& listener) override final;
100104

101105
#pragma mark - ContextContainer
102106
ContextContainer::Shared getContextContainer() const;

packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,4 +698,20 @@ void UIManager::synchronouslyUpdateViewOnUIThread(
698698
}
699699
}
700700

701+
#pragma mark - Add & Remove event listener
702+
703+
void UIManager::addEventListener(
704+
std::shared_ptr<const EventListener> listener) {
705+
if (delegate_ != nullptr) {
706+
delegate_->uiManagerShouldAddEventListener(listener);
707+
}
708+
}
709+
710+
void UIManager::removeEventListener(
711+
const std::shared_ptr<const EventListener>& listener) {
712+
if (delegate_ != nullptr) {
713+
delegate_->uiManagerShouldRemoveEventListener(listener);
714+
}
715+
}
716+
701717
} // namespace facebook::react

packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,13 @@ class UIManager final : public ShadowTreeDelegate {
206206
void updateShadowTree(
207207
const std::unordered_map<Tag, folly::dynamic>& tagToProps);
208208

209+
#pragma mark - Add & Remove event listener
210+
211+
void addEventListener(std::shared_ptr<const EventListener> listener);
212+
213+
void removeEventListener(
214+
const std::shared_ptr<const EventListener>& listener);
215+
209216
private:
210217
friend class UIManagerBinding;
211218
friend class Scheduler;

packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,18 @@ class UIManagerDelegate {
6565
Tag tag,
6666
const folly::dynamic& props) = 0;
6767

68+
/*
69+
* Add event listener.
70+
*/
71+
virtual void uiManagerShouldAddEventListener(
72+
std::shared_ptr<const EventListener> listener) = 0;
73+
74+
/*
75+
* Remove event listener.
76+
*/
77+
virtual void uiManagerShouldRemoveEventListener(
78+
const std::shared_ptr<const EventListener>& listener) = 0;
79+
6880
virtual ~UIManagerDelegate() noexcept = default;
6981
};
7082

0 commit comments

Comments
 (0)