diff --git a/ReactCommon/fabric/events/RawEvent.cpp b/ReactCommon/fabric/events/RawEvent.cpp new file mode 100644 index 000000000..5195bcdbe --- /dev/null +++ b/ReactCommon/fabric/events/RawEvent.cpp @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include "RawEvent.h" + +namespace facebook { +namespace react { + +RawEvent::RawEvent( + const std::string &type, + const folly::dynamic &payload, + const EventTarget &eventTarget, + const std::function &isDispatchable +): + type(type), + payload(payload), + eventTarget(eventTarget), + isDispachable_(isDispatchable) {} + +bool RawEvent::isDispachable() const { + return isDispachable_(); +} + +} // namespace react +} // namespace facebook diff --git a/ReactCommon/fabric/events/RawEvent.h b/ReactCommon/fabric/events/RawEvent.h new file mode 100644 index 000000000..cecec268e --- /dev/null +++ b/ReactCommon/fabric/events/RawEvent.h @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +#pragma once + +#include + +#include +#include + +namespace facebook { +namespace react { + +/* + * Represents ready-to-dispatch event data. + */ +class RawEvent { + +public: + using RawEventDispatchable = std::function; + + RawEvent( + const std::string &type, + const folly::dynamic &payload, + const EventTarget &eventTarget, + const RawEventDispatchable &isDispachable + ); + + const std::string type; + const folly::dynamic payload; + const EventTarget eventTarget; + + /* + * Returns `true` if event can be dispatched to `eventTarget`. + * Events that associated with unmounted or deallocated `ShadowNode`s + * must not be dispatched. + */ + bool isDispachable() const; + +private: + const RawEventDispatchable isDispachable_; +}; + +} // namespace react +} // namespace facebook