mirror of
https://github.com/status-im/react-native.git
synced 2025-01-28 10:14:49 +00:00
Fabric: Wiring FabricUIManager with JS*FabricUIManager bindings
Summary: Now FabricUIManager is all you (or I) need to deliver an event. Reviewed By: fkgozali Differential Revision: D8086627 fbshipit-source-id: 70d783bee291f4c5d19650ac0768a5d2bd778961
This commit is contained in:
parent
b13add753b
commit
0be26092a5
@ -76,6 +76,12 @@ FabricUIManager::FabricUIManager(SharedComponentDescriptorRegistry componentDesc
|
|||||||
componentDescriptorRegistry_ = componentDescriptorRegistry;
|
componentDescriptorRegistry_ = componentDescriptorRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FabricUIManager::~FabricUIManager() {
|
||||||
|
if (eventHandler_) {
|
||||||
|
releaseEventTargetFunction_(eventHandler_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FabricUIManager::setDelegate(UIManagerDelegate *delegate) {
|
void FabricUIManager::setDelegate(UIManagerDelegate *delegate) {
|
||||||
delegate_ = delegate;
|
delegate_ = delegate;
|
||||||
}
|
}
|
||||||
@ -84,6 +90,39 @@ UIManagerDelegate *FabricUIManager::getDelegate() {
|
|||||||
return delegate_;
|
return delegate_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FabricUIManager::setCreateEventTargetFunction(std::function<CreateEventTargetFunction> createEventTargetFunction) {
|
||||||
|
createEventTargetFunction_ = createEventTargetFunction;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FabricUIManager::setDispatchEventFunction(std::function<DispatchEventFunction> dispatchEventFunction) {
|
||||||
|
dispatchEventFunction_ = dispatchEventFunction;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FabricUIManager::setReleaseEventTargetFunction(std::function<ReleaseEventTargetFunction> releaseEventTargetFunction) {
|
||||||
|
releaseEventTargetFunction_ = releaseEventTargetFunction;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FabricUIManager::setReleaseEventHandlerFunction(std::function<ReleaseEventHandlerFunction> releaseEventHandlerFunction) {
|
||||||
|
releaseEventHandlerFunction_ = releaseEventHandlerFunction;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *FabricUIManager::createEventTarget(void *instanceHandle) {
|
||||||
|
return createEventTargetFunction_(instanceHandle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FabricUIManager::dispatchEvent(void *eventTarget, const std::string &type, const folly::dynamic &payload) {
|
||||||
|
dispatchEventFunction_(
|
||||||
|
eventHandler_,
|
||||||
|
eventTarget,
|
||||||
|
const_cast<std::string &>(type),
|
||||||
|
const_cast<folly::dynamic &>(payload)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FabricUIManager::releaseEventTarget(void *eventTarget) {
|
||||||
|
releaseEventTargetFunction_(eventTarget);
|
||||||
|
}
|
||||||
|
|
||||||
SharedShadowNode FabricUIManager::createNode(int tag, std::string viewName, int rootTag, folly::dynamic props, InstanceHandle instanceHandle) {
|
SharedShadowNode FabricUIManager::createNode(int tag, std::string viewName, int rootTag, folly::dynamic props, InstanceHandle instanceHandle) {
|
||||||
isLoggingEnabled && LOG(INFO) << "FabricUIManager::createNode(tag: " << tag << ", name: " << viewName << ", rootTag" << rootTag << ", props: " << props << ")";
|
isLoggingEnabled && LOG(INFO) << "FabricUIManager::createNode(tag: " << tag << ", name: " << viewName << ", rootTag" << rootTag << ", props: " << props << ")";
|
||||||
|
|
||||||
@ -214,7 +253,7 @@ void FabricUIManager::completeRoot(int rootTag, const SharedShadowNodeUnsharedLi
|
|||||||
|
|
||||||
void FabricUIManager::registerEventHandler(void *eventHandler) {
|
void FabricUIManager::registerEventHandler(void *eventHandler) {
|
||||||
isLoggingEnabled && LOG(INFO) << "FabricUIManager::registerEventHandler(eventHandler)";
|
isLoggingEnabled && LOG(INFO) << "FabricUIManager::registerEventHandler(eventHandler)";
|
||||||
// TODO: Store eventHandler handle.
|
eventHandler_ = eventHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace react
|
} // namespace react
|
||||||
|
@ -18,12 +18,18 @@
|
|||||||
namespace facebook {
|
namespace facebook {
|
||||||
namespace react {
|
namespace react {
|
||||||
|
|
||||||
|
using CreateEventTargetFunction = void *(void *instanceHandle);
|
||||||
|
using DispatchEventFunction = void (void *eventHandler, void *eventTarget, std::string type, folly::dynamic payload);
|
||||||
|
using ReleaseEventTargetFunction = void (void *eventTarget);
|
||||||
|
using ReleaseEventHandlerFunction = void (void *eventHandler);
|
||||||
|
|
||||||
class FabricUIManager {
|
class FabricUIManager {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#pragma mark - Native-facing Interface
|
#pragma mark - Native-facing Interface
|
||||||
|
|
||||||
FabricUIManager(SharedComponentDescriptorRegistry componentDescriptorRegistry);
|
FabricUIManager(SharedComponentDescriptorRegistry componentDescriptorRegistry);
|
||||||
|
~FabricUIManager();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets and gets the UIManager's delegate.
|
* Sets and gets the UIManager's delegate.
|
||||||
@ -33,6 +39,22 @@ public:
|
|||||||
void setDelegate(UIManagerDelegate *delegate);
|
void setDelegate(UIManagerDelegate *delegate);
|
||||||
UIManagerDelegate *getDelegate();
|
UIManagerDelegate *getDelegate();
|
||||||
|
|
||||||
|
#pragma mark - Callback Functions
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Registers callback functions.
|
||||||
|
*/
|
||||||
|
void setCreateEventTargetFunction(std::function<CreateEventTargetFunction> createEventTargetFunction);
|
||||||
|
void setDispatchEventFunction(std::function<DispatchEventFunction> dispatchEventFunction);
|
||||||
|
void setReleaseEventTargetFunction(std::function<ReleaseEventTargetFunction> releaseEventTargetFunction);
|
||||||
|
void setReleaseEventHandlerFunction(std::function<ReleaseEventHandlerFunction> releaseEventHandlerFunction);
|
||||||
|
|
||||||
|
#pragma mark - Native-facing Interface
|
||||||
|
|
||||||
|
void *createEventTarget(void *instanceHandle);
|
||||||
|
void dispatchEvent(void *eventTarget, const std::string &type, const folly::dynamic &payload);
|
||||||
|
void releaseEventTarget(void *eventTarget);
|
||||||
|
|
||||||
#pragma mark - JavaScript/React-facing Interface
|
#pragma mark - JavaScript/React-facing Interface
|
||||||
|
|
||||||
SharedShadowNode createNode(Tag reactTag, std::string viewName, Tag rootTag, folly::dynamic props, InstanceHandle instanceHandle);
|
SharedShadowNode createNode(Tag reactTag, std::string viewName, Tag rootTag, folly::dynamic props, InstanceHandle instanceHandle);
|
||||||
@ -47,8 +69,14 @@ public:
|
|||||||
void registerEventHandler(void *eventHandler);
|
void registerEventHandler(void *eventHandler);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
SharedComponentDescriptorRegistry componentDescriptorRegistry_;
|
SharedComponentDescriptorRegistry componentDescriptorRegistry_;
|
||||||
UIManagerDelegate *delegate_;
|
UIManagerDelegate *delegate_;
|
||||||
|
void *eventHandler_;
|
||||||
|
std::function<CreateEventTargetFunction> createEventTargetFunction_;
|
||||||
|
std::function<DispatchEventFunction> dispatchEventFunction_;
|
||||||
|
std::function<ReleaseEventTargetFunction> releaseEventTargetFunction_;
|
||||||
|
std::function<ReleaseEventHandlerFunction> releaseEventHandlerFunction_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace react
|
} // namespace react
|
||||||
|
Loading…
x
Reference in New Issue
Block a user