Skip to content

Commit d087209

Browse files
zeyapfacebook-github-bot
authored andcommitted
UIManager::add/RemoveEventListener (#50453)
Summary: ## Changelog: [General] [Added] - add UIManager::add/RemoveEventListener Reviewed By: rshest Differential Revision: D72200640
1 parent 26a6ae0 commit d087209

File tree

5 files changed

+49
-0
lines changed

5 files changed

+49
-0
lines changed

Diff for: packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,16 @@ void Scheduler::uiManagerShouldSynchronouslyUpdateViewOnUIThread(
326326
}
327327
}
328328

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

Diff for: packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.h

+4
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) final;
102+
void uiManagerShouldRemoveEventListener(
103+
const std::shared_ptr<const EventListener>& listener) final;
100104

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

Diff for: packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -681,4 +681,20 @@ void UIManager::synchronouslyUpdateViewOnUIThread(
681681
}
682682
}
683683

684+
#pragma mark - Add & Remove event listener
685+
686+
void UIManager::addEventListener(
687+
std::shared_ptr<const EventListener> listener) {
688+
if (delegate_ != nullptr) {
689+
delegate_->uiManagerShouldAddEventListener(listener);
690+
}
691+
}
692+
693+
void UIManager::removeEventListener(
694+
const std::shared_ptr<const EventListener>& listener) {
695+
if (delegate_ != nullptr) {
696+
delegate_->uiManagerShouldRemoveEventListener(listener);
697+
}
698+
}
699+
684700
} // namespace facebook::react

Diff for: packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h

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

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

Diff for: packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h

+12
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)