Skip to content

Commit 4640459

Browse files
mdvaccafacebook-github-bot
authored andcommitted
[skip ci] Implement prop diffing for event props in <View> (facebook#48830)
Summary: This diff implements the diffing for event props of <View> changelog: [internal] internal Reviewed By: javache Differential Revision: D59972038
1 parent 06a640f commit 4640459

File tree

1 file changed

+193
-25
lines changed
  • packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view

1 file changed

+193
-25
lines changed

packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp

Lines changed: 193 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,18 @@ SharedDebugStringConvertibleList HostPlatformViewProps::getDebugProps() const {
135135

136136
#ifdef ANDROID
137137

138+
inline static void updateEventProp(
139+
folly::dynamic& result,
140+
const ViewEvents& newEvents,
141+
const ViewEvents& oldEvents,
142+
const ViewEvents::Offset& offset,
143+
const std::string& name) {
144+
if (newEvents[offset] != oldEvents[offset]) {
145+
auto value = newEvents[offset];
146+
result[name] = value;
147+
}
148+
}
149+
138150
folly::dynamic HostPlatformViewProps::getDiffProps(
139151
const Props* prevProps) const {
140152
folly::dynamic result = folly::dynamic::object();
@@ -222,39 +234,195 @@ folly::dynamic HostPlatformViewProps::getDiffProps(
222234
result["pointerEvents"] = "auto";
223235
break;
224236
}
237+
}
225238

226-
if (nativeId != oldProps->nativeId) {
227-
result["nativeId"] = nativeId;
228-
}
239+
if (nativeId != oldProps->nativeId) {
240+
result["nativeId"] = nativeId;
241+
}
229242

230-
if (testId != oldProps->testId) {
231-
result["testId"] = testId;
232-
}
243+
if (testId != oldProps->testId) {
244+
result["testId"] = testId;
245+
}
233246

234-
if (accessible != oldProps->accessible) {
235-
result["accessible"] = accessible;
236-
}
247+
if (accessible != oldProps->accessible) {
248+
result["accessible"] = accessible;
249+
}
237250

238-
if (getClipsContentToBounds() != oldProps->getClipsContentToBounds()) {
239-
result["overflow"] = getClipsContentToBounds() ? "hidden" : "visible";
240-
result["scroll"] = result["overflow"];
241-
}
251+
if (getClipsContentToBounds() != oldProps->getClipsContentToBounds()) {
252+
result["overflow"] = getClipsContentToBounds() ? "hidden" : "visible";
253+
result["scroll"] = result["overflow"];
254+
}
242255

243-
if (backfaceVisibility != oldProps->backfaceVisibility) {
244-
switch (backfaceVisibility) {
245-
case BackfaceVisibility::Auto:
246-
result["backfaceVisibility"] = "auto";
247-
break;
248-
case BackfaceVisibility::Visible:
249-
result["backfaceVisibility"] = "visible";
250-
break;
251-
case BackfaceVisibility::Hidden:
252-
result["backfaceVisibility"] = "hidden";
253-
break;
254-
}
256+
if (backfaceVisibility != oldProps->backfaceVisibility) {
257+
switch (backfaceVisibility) {
258+
case BackfaceVisibility::Auto:
259+
result["backfaceVisibility"] = "auto";
260+
break;
261+
case BackfaceVisibility::Visible:
262+
result["backfaceVisibility"] = "visible";
263+
break;
264+
case BackfaceVisibility::Hidden:
265+
result["backfaceVisibility"] = "hidden";
266+
break;
255267
}
256268
}
257269

270+
// TODO T212662692: pass events as std::bitset<64> to java
271+
if (events != oldProps->events) {
272+
updateEventProp(
273+
result,
274+
events,
275+
oldProps->events,
276+
ViewEvents::Offset::PointerEnter,
277+
"onPointerEnter");
278+
updateEventProp(
279+
result,
280+
events,
281+
oldProps->events,
282+
ViewEvents::Offset::PointerEnterCapture,
283+
"onPointerEnterCapture");
284+
updateEventProp(
285+
result,
286+
events,
287+
oldProps->events,
288+
ViewEvents::Offset::PointerMove,
289+
"onPointerMove");
290+
updateEventProp(
291+
result,
292+
events,
293+
oldProps->events,
294+
ViewEvents::Offset::PointerMoveCapture,
295+
"onPointerMoveCapture");
296+
updateEventProp(
297+
result,
298+
events,
299+
oldProps->events,
300+
ViewEvents::Offset::PointerLeave,
301+
"onPointerLeave");
302+
updateEventProp(
303+
result,
304+
events,
305+
oldProps->events,
306+
ViewEvents::Offset::PointerLeaveCapture,
307+
"onPointerLeaveCapture");
308+
updateEventProp(
309+
result,
310+
events,
311+
oldProps->events,
312+
ViewEvents::Offset::PointerOver,
313+
"onPointerOver");
314+
updateEventProp(
315+
result,
316+
events,
317+
oldProps->events,
318+
ViewEvents::Offset::PointerOut,
319+
"onPointerOut");
320+
updateEventProp(
321+
result, events, oldProps->events, ViewEvents::Offset::Click, "onClick");
322+
updateEventProp(
323+
result,
324+
events,
325+
oldProps->events,
326+
ViewEvents::Offset::MoveShouldSetResponder,
327+
"onMoveShouldSetResponder");
328+
updateEventProp(
329+
result,
330+
events,
331+
oldProps->events,
332+
ViewEvents::Offset::MoveShouldSetResponderCapture,
333+
"onMoveShouldSetResponderCapture");
334+
updateEventProp(
335+
result,
336+
events,
337+
oldProps->events,
338+
ViewEvents::Offset::StartShouldSetResponder,
339+
"onStartShouldSetResponder");
340+
updateEventProp(
341+
result,
342+
events,
343+
oldProps->events,
344+
ViewEvents::Offset::StartShouldSetResponderCapture,
345+
"onStartShouldSetResponderCapture");
346+
updateEventProp(
347+
result,
348+
events,
349+
oldProps->events,
350+
ViewEvents::Offset::ResponderGrant,
351+
"onResponderGrant");
352+
updateEventProp(
353+
result,
354+
events,
355+
oldProps->events,
356+
ViewEvents::Offset::ResponderReject,
357+
"onResponderReject");
358+
updateEventProp(
359+
result,
360+
events,
361+
oldProps->events,
362+
ViewEvents::Offset::ResponderStart,
363+
"onResponderStart");
364+
updateEventProp(
365+
result,
366+
events,
367+
oldProps->events,
368+
ViewEvents::Offset::ResponderEnd,
369+
"onResponderEnd");
370+
updateEventProp(
371+
result,
372+
events,
373+
oldProps->events,
374+
ViewEvents::Offset::ResponderRelease,
375+
"onResponderRelease");
376+
updateEventProp(
377+
result,
378+
events,
379+
oldProps->events,
380+
ViewEvents::Offset::ResponderMove,
381+
"onResponderMove");
382+
updateEventProp(
383+
result,
384+
events,
385+
oldProps->events,
386+
ViewEvents::Offset::ResponderTerminate,
387+
"onResponderTerminate");
388+
updateEventProp(
389+
result,
390+
events,
391+
oldProps->events,
392+
ViewEvents::Offset::ResponderTerminationRequest,
393+
"onResponderTerminationRequest");
394+
updateEventProp(
395+
result,
396+
events,
397+
oldProps->events,
398+
ViewEvents::Offset::ShouldBlockNativeResponder,
399+
"onShouldBlockNativeResponder");
400+
updateEventProp(
401+
result,
402+
events,
403+
oldProps->events,
404+
ViewEvents::Offset::TouchStart,
405+
"onTouchStart");
406+
updateEventProp(
407+
result,
408+
events,
409+
oldProps->events,
410+
ViewEvents::Offset::TouchMove,
411+
"onTouchMove");
412+
updateEventProp(
413+
result,
414+
events,
415+
oldProps->events,
416+
ViewEvents::Offset::TouchEnd,
417+
"onTouchEnd");
418+
updateEventProp(
419+
result,
420+
events,
421+
oldProps->events,
422+
ViewEvents::Offset::TouchCancel,
423+
"onTouchCancel");
424+
}
425+
258426
return result;
259427
}
260428

0 commit comments

Comments
 (0)