1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | #include "EventTarget.h"
|
9 |
|
10 | namespace facebook {
|
11 | namespace react {
|
12 |
|
13 | using Tag = EventTarget::Tag;
|
14 |
|
15 | EventTarget::EventTarget(
|
16 | jsi::Runtime &runtime,
|
17 | const jsi::Value &instanceHandle,
|
18 | Tag tag)
|
19 | : weakInstanceHandle_(
|
20 | jsi::WeakObject(runtime, instanceHandle.asObject(runtime))),
|
21 | strongInstanceHandle_(jsi::Value::null()),
|
22 | tag_(tag) {}
|
23 |
|
24 | void EventTarget::setEnabled(bool enabled) const {
|
25 | enabled_ = enabled;
|
26 | }
|
27 |
|
28 | void EventTarget::retain(jsi::Runtime &runtime) const {
|
29 | if (!enabled_) {
|
30 | return;
|
31 | }
|
32 |
|
33 | strongInstanceHandle_ = weakInstanceHandle_.lock(runtime);
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 | assert(!strongInstanceHandle_.isNull());
|
42 | assert(!strongInstanceHandle_.isUndefined());
|
43 | }
|
44 |
|
45 | void EventTarget::release(jsi::Runtime &runtime) const {
|
46 |
|
47 |
|
48 |
|
49 | strongInstanceHandle_ = jsi::Value::null();
|
50 | }
|
51 |
|
52 | jsi::Value EventTarget::getInstanceHandle(jsi::Runtime &runtime) const {
|
53 | if (strongInstanceHandle_.isNull()) {
|
54 |
|
55 | return jsi::Value::null();
|
56 | }
|
57 |
|
58 | return jsi::Value(runtime, strongInstanceHandle_);
|
59 | }
|
60 |
|
61 | Tag EventTarget::getTag() const {
|
62 | return tag_;
|
63 | }
|
64 |
|
65 | }
|
66 | }
|