@@ -34,29 +34,17 @@ NativeAnimatedNodesManagerProvider::NativeAnimatedNodesManagerProvider(
3434
3535std::shared_ptr<NativeAnimatedNodesManager>
3636NativeAnimatedNodesManagerProvider::getOrCreate (jsi::Runtime& runtime) {
37- if (!uiManagerBinding_.lock ()) {
38- uiManagerBinding_ = UIManagerBinding::getBinding (runtime);
39- }
40-
4137 if (nativeAnimatedNodesManager_ == nullptr ) {
38+ auto * uiManager = &UIManagerBinding::getBinding (runtime)->getUIManager ();
39+
4240 auto fabricCommitCallback =
43- [uiManagerBindingWeak = uiManagerBinding_](
44- std::unordered_map<Tag, folly::dynamic>& tagToProps) {
45- if (auto uiManagerBinding = uiManagerBindingWeak.lock ()) {
46- uiManagerBinding->getUIManager ().updateShadowTree (tagToProps);
47- } else {
48- LOG (WARNING )
49- << " UIManager is not initialized for Fabric commit callback" ;
50- }
41+ [uiManager](std::unordered_map<Tag, folly::dynamic>& tagToProps) {
42+ uiManager->updateShadowTree (tagToProps);
5143 };
5244
5345 auto directManipulationCallback =
54- [uiManagerBindingWeak = uiManagerBinding_](
55- Tag viewTag, const folly::dynamic& props) {
56- if (auto uiManagerBinding = uiManagerBindingWeak.lock ()) {
57- uiManagerBinding->getUIManager ().synchronouslyUpdateViewOnUIThread (
58- viewTag, props);
59- }
46+ [uiManager](Tag viewTag, const folly::dynamic& props) {
47+ uiManager->synchronouslyUpdateViewOnUIThread (viewTag, props);
6048 };
6149
6250 nativeAnimatedNodesManager_ = std::make_shared<NativeAnimatedNodesManager>(
@@ -68,68 +56,63 @@ NativeAnimatedNodesManagerProvider::getOrCreate(jsi::Runtime& runtime) {
6856 addEventEmitterListener (
6957 nativeAnimatedNodesManager_->getEventEmitterListener ());
7058
71- if (auto uiManagerBinding = uiManagerBinding_.lock ()) {
72- uiManagerBinding->getUIManager ().addEventListener (
73- std::make_shared<EventListener>(
74- [eventEmitterListenerContainerWeak =
75- std::weak_ptr<EventEmitterListenerContainer>(
76- eventEmitterListenerContainer_)](
77- const RawEvent& rawEvent) {
78- const auto & eventTarget = rawEvent.eventTarget ;
79- const auto & eventPayload = rawEvent.eventPayload ;
80- if (eventTarget && eventPayload) {
81- if (auto eventEmitterListenerContainer =
82- eventEmitterListenerContainerWeak.lock ();
83- eventEmitterListenerContainer != nullptr ) {
84- return eventEmitterListenerContainer->willDispatchEvent (
85- eventTarget->getTag (), rawEvent.type , *eventPayload);
86- }
87- }
88- return false ;
89- }));
90-
91- nativeAnimatedDelegate_ =
92- std::make_shared<UIManagerNativeAnimatedDelegateImpl>(
93- nativeAnimatedNodesManager_);
94-
95- uiManagerBinding->getUIManager ().setNativeAnimatedDelegate (
96- nativeAnimatedDelegate_);
97-
98- animatedMountingOverrideDelegate_ =
99- std::make_shared<AnimatedMountingOverrideDelegate>(
100- [nativeAnimatedNodesManager =
101- std::weak_ptr<NativeAnimatedNodesManager>(
102- nativeAnimatedNodesManager_)](
103- Tag tag) -> folly::dynamic {
104- if (auto nativeAnimatedNodesManagerStrong =
105- nativeAnimatedNodesManager.lock ()) {
106- return nativeAnimatedNodesManagerStrong->managedProps (tag);
107- }
108- return nullptr ;
109- },
110- uiManagerBinding_);
111-
112- // Register on existing surfaces
113- uiManagerBinding->getUIManager ().getShadowTreeRegistry ().enumerate(
114- [animatedMountingOverrideDelegate =
115- std::weak_ptr<const AnimatedMountingOverrideDelegate>(
116- animatedMountingOverrideDelegate_)](
117- const ShadowTree& shadowTree, bool & /* stop*/ ) {
118- shadowTree.getMountingCoordinator ()->setMountingOverrideDelegate (
119- animatedMountingOverrideDelegate);
120- });
121- // Register on surfaces started in the future
122- uiManagerBinding->getUIManager ().setOnSurfaceStartCallback (
123- [animatedMountingOverrideDelegate =
124- std::weak_ptr<const AnimatedMountingOverrideDelegate>(
125- animatedMountingOverrideDelegate_)](
126- const ShadowTree& shadowTree) {
127- shadowTree.getMountingCoordinator ()->setMountingOverrideDelegate (
128- animatedMountingOverrideDelegate);
129- });
130- }
59+ uiManager->addEventListener (std::make_shared<EventListener>(
60+ [eventEmitterListenerContainerWeak =
61+ std::weak_ptr<EventEmitterListenerContainer>(
62+ eventEmitterListenerContainer_)](const RawEvent& rawEvent) {
63+ const auto & eventTarget = rawEvent.eventTarget ;
64+ const auto & eventPayload = rawEvent.eventPayload ;
65+ if (eventTarget && eventPayload) {
66+ if (auto eventEmitterListenerContainer =
67+ eventEmitterListenerContainerWeak.lock ();
68+ eventEmitterListenerContainer != nullptr ) {
69+ return eventEmitterListenerContainer->willDispatchEvent (
70+ eventTarget->getTag (), rawEvent.type , *eventPayload);
71+ }
72+ }
73+ return false ;
74+ }));
75+
76+ nativeAnimatedDelegate_ =
77+ std::make_shared<UIManagerNativeAnimatedDelegateImpl>(
78+ nativeAnimatedNodesManager_);
79+
80+ uiManager->setNativeAnimatedDelegate (nativeAnimatedDelegate_);
81+
82+ // TODO: remove force casting.
83+ auto * scheduler = (Scheduler*)uiManager->getDelegate ();
84+ animatedMountingOverrideDelegate_ =
85+ std::make_shared<AnimatedMountingOverrideDelegate>(
86+ [nativeAnimatedNodesManager =
87+ std::weak_ptr<NativeAnimatedNodesManager>(
88+ nativeAnimatedNodesManager_)](Tag tag) -> folly::dynamic {
89+ if (auto nativeAnimatedNodesManagerStrong =
90+ nativeAnimatedNodesManager.lock ()) {
91+ return nativeAnimatedNodesManagerStrong->managedProps (tag);
92+ }
93+ return nullptr ;
94+ },
95+ *scheduler);
96+
97+ // Register on existing surfaces
98+ uiManager->getShadowTreeRegistry ().enumerate(
99+ [animatedMountingOverrideDelegate =
100+ std::weak_ptr<const AnimatedMountingOverrideDelegate>(
101+ animatedMountingOverrideDelegate_)](
102+ const ShadowTree& shadowTree, bool & /* stop*/ ) {
103+ shadowTree.getMountingCoordinator ()->setMountingOverrideDelegate (
104+ animatedMountingOverrideDelegate);
105+ });
106+ // Register on surfaces started in the future
107+ uiManager->setOnSurfaceStartCallback (
108+ [animatedMountingOverrideDelegate =
109+ std::weak_ptr<const AnimatedMountingOverrideDelegate>(
110+ animatedMountingOverrideDelegate_)](
111+ const ShadowTree& shadowTree) {
112+ shadowTree.getMountingCoordinator ()->setMountingOverrideDelegate (
113+ animatedMountingOverrideDelegate);
114+ });
131115 }
132-
133116 return nativeAnimatedNodesManager_;
134117}
135118
0 commit comments