Fabric: Introducing `RawEvent`

Summary:
@public
RawEvent represents ready-to-dispatch event data, an event that can be processed uniformly.

Reviewed By: mdvacca

Differential Revision: D8886235

fbshipit-source-id: 1c905517814330c5ecbf39f0ebc95ff2b576d1f2
This commit is contained in:
Valentin Shergin 2018-08-27 07:21:09 -07:00 коммит произвёл Facebook Github Bot
Родитель 26d0b05c80
Коммит 504c7694c4
2 изменённых файлов: 77 добавлений и 0 удалений

Просмотреть файл

@ -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<bool()> &isDispatchable
):
type(type),
payload(payload),
eventTarget(eventTarget),
isDispachable_(isDispatchable) {}
bool RawEvent::isDispachable() const {
return isDispachable_();
}
} // namespace react
} // namespace facebook

Просмотреть файл

@ -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 <memory>
#include <folly/dynamic.h>
#include <fabric/events/primitives.h>
namespace facebook {
namespace react {
/*
* Represents ready-to-dispatch event data.
*/
class RawEvent {
public:
using RawEventDispatchable = std::function<bool()>;
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