From 3037cb3acd5bd7a7208de40d007b1ac153637565 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Mon, 24 May 2021 11:06:18 +0100 Subject: [PATCH 1/7] Call into Fabric to get current event priority Fix flow errors --- .../src/ReactFabricHostConfig.js | 17 ++++++++++++++++- scripts/flow/react-native-host-hooks.js | 3 +++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/react-native-renderer/src/ReactFabricHostConfig.js b/packages/react-native-renderer/src/ReactFabricHostConfig.js index ac4a97bb4609e..2f5907505bcfa 100644 --- a/packages/react-native-renderer/src/ReactFabricHostConfig.js +++ b/packages/react-native-renderer/src/ReactFabricHostConfig.js @@ -25,7 +25,7 @@ import invariant from 'shared/invariant'; import {dispatchEvent} from './ReactFabricEventEmitter'; -import {DefaultEventPriority} from 'react-reconciler/src/ReactEventPriorities'; +import {DefaultEventPriority, DiscreteEventPriority} from 'react-reconciler/src/ReactEventPriorities'; // Modules provided by RN: import { @@ -48,6 +48,9 @@ const { measure: fabricMeasure, measureInWindow: fabricMeasureInWindow, measureLayout: fabricMeasureLayout, + unstable_DefaultEventPriority: FabricDefaultPriority, + unstable_DiscreteEventPriority: FabricDiscretePriority, + unstable_getCurrentEventPriority: fabricGetCurrentEventPriority, } = nativeFabricUIManager; const {get: getViewConfigForType} = ReactNativeViewConfigRegistry; @@ -343,6 +346,18 @@ export function shouldSetTextContent(type: string, props: Props): boolean { } export function getCurrentEventPriority(): * { + const currentEventPriority = fabricGetCurrentEventPriority(); + + if (currentEventPriority !== undefined) { + switch (currentEventPriority) { + case FabricDiscretePriority: + return DiscreteEventPriority; + case FabricDefaultPriority: + default: + return DefaultEventPriority; + } + } + return DefaultEventPriority; } diff --git a/scripts/flow/react-native-host-hooks.js b/scripts/flow/react-native-host-hooks.js index 92f766dfad415..770b77a84082e 100644 --- a/scripts/flow/react-native-host-hooks.js +++ b/scripts/flow/react-native-host-hooks.js @@ -184,6 +184,9 @@ declare var nativeFabricUIManager: { isJsResponder: boolean, blockNativeResponder: boolean, ) => void, + unstable_DefaultEventPriority: number, + unstable_DiscreteEventPriority: number, + unstable_getCurrentEventPriority: () => number, ... }; From 61d10f953897e8a6b53b6de6d1c434c8f5204937 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Tue, 25 May 2021 13:17:56 +0100 Subject: [PATCH 2/7] Prettier --- packages/react-native-renderer/src/ReactFabricHostConfig.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/react-native-renderer/src/ReactFabricHostConfig.js b/packages/react-native-renderer/src/ReactFabricHostConfig.js index 2f5907505bcfa..94cb37dd1d9b7 100644 --- a/packages/react-native-renderer/src/ReactFabricHostConfig.js +++ b/packages/react-native-renderer/src/ReactFabricHostConfig.js @@ -25,7 +25,10 @@ import invariant from 'shared/invariant'; import {dispatchEvent} from './ReactFabricEventEmitter'; -import {DefaultEventPriority, DiscreteEventPriority} from 'react-reconciler/src/ReactEventPriorities'; +import { + DefaultEventPriority, + DiscreteEventPriority, +} from 'react-reconciler/src/ReactEventPriorities'; // Modules provided by RN: import { From 4723c6bd799dfae052d8952b6c1e0dd76e98f897 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Tue, 8 Jun 2021 15:58:59 +0100 Subject: [PATCH 3/7] Better handle null and undefined cases --- packages/react-native-renderer/src/ReactFabricHostConfig.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-native-renderer/src/ReactFabricHostConfig.js b/packages/react-native-renderer/src/ReactFabricHostConfig.js index 94cb37dd1d9b7..8da83bafa97f3 100644 --- a/packages/react-native-renderer/src/ReactFabricHostConfig.js +++ b/packages/react-native-renderer/src/ReactFabricHostConfig.js @@ -349,9 +349,9 @@ export function shouldSetTextContent(type: string, props: Props): boolean { } export function getCurrentEventPriority(): * { - const currentEventPriority = fabricGetCurrentEventPriority(); + const currentEventPriority = fabricGetCurrentEventPriority?.(); - if (currentEventPriority !== undefined) { + if (currentEventPriority != null) { switch (currentEventPriority) { case FabricDiscretePriority: return DiscreteEventPriority; From c63531c4c2fbe909a7e4ac857ab759b59e5910dc Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Tue, 8 Jun 2021 16:10:58 +0100 Subject: [PATCH 4/7] Remove optional chaining and use ?? operator --- packages/react-native-renderer/src/ReactFabricHostConfig.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-renderer/src/ReactFabricHostConfig.js b/packages/react-native-renderer/src/ReactFabricHostConfig.js index 8da83bafa97f3..9a5d0509e672d 100644 --- a/packages/react-native-renderer/src/ReactFabricHostConfig.js +++ b/packages/react-native-renderer/src/ReactFabricHostConfig.js @@ -349,7 +349,7 @@ export function shouldSetTextContent(type: string, props: Props): boolean { } export function getCurrentEventPriority(): * { - const currentEventPriority = fabricGetCurrentEventPriority?.(); + const currentEventPriority = fabricGetCurrentEventPriority ?? fabricGetCurrentEventPriority(); if (currentEventPriority != null) { switch (currentEventPriority) { From 9b8d71637ac449df6cfc06ec17c3f7efdcca6303 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Tue, 8 Jun 2021 16:15:28 +0100 Subject: [PATCH 5/7] prettier-all --- packages/react-native-renderer/src/ReactFabricHostConfig.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-native-renderer/src/ReactFabricHostConfig.js b/packages/react-native-renderer/src/ReactFabricHostConfig.js index 9a5d0509e672d..0501ea80409c1 100644 --- a/packages/react-native-renderer/src/ReactFabricHostConfig.js +++ b/packages/react-native-renderer/src/ReactFabricHostConfig.js @@ -349,7 +349,8 @@ export function shouldSetTextContent(type: string, props: Props): boolean { } export function getCurrentEventPriority(): * { - const currentEventPriority = fabricGetCurrentEventPriority ?? fabricGetCurrentEventPriority(); + const currentEventPriority = + fabricGetCurrentEventPriority ?? fabricGetCurrentEventPriority(); if (currentEventPriority != null) { switch (currentEventPriority) { From 1acb6ded3af49e63029fd5883f8edcac7c47a803 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Tue, 8 Jun 2021 16:33:17 +0100 Subject: [PATCH 6/7] Use conditional ternary operator --- packages/react-native-renderer/src/ReactFabricHostConfig.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-renderer/src/ReactFabricHostConfig.js b/packages/react-native-renderer/src/ReactFabricHostConfig.js index 0501ea80409c1..512945e6f7d1b 100644 --- a/packages/react-native-renderer/src/ReactFabricHostConfig.js +++ b/packages/react-native-renderer/src/ReactFabricHostConfig.js @@ -350,7 +350,7 @@ export function shouldSetTextContent(type: string, props: Props): boolean { export function getCurrentEventPriority(): * { const currentEventPriority = - fabricGetCurrentEventPriority ?? fabricGetCurrentEventPriority(); + fabricGetCurrentEventPriority ? fabricGetCurrentEventPriority() : null; if (currentEventPriority != null) { switch (currentEventPriority) { From f170db86d8e32bdfe4182f85473221094f7afef6 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Tue, 8 Jun 2021 16:37:03 +0100 Subject: [PATCH 7/7] prettier --- packages/react-native-renderer/src/ReactFabricHostConfig.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/react-native-renderer/src/ReactFabricHostConfig.js b/packages/react-native-renderer/src/ReactFabricHostConfig.js index 512945e6f7d1b..842a33291fb07 100644 --- a/packages/react-native-renderer/src/ReactFabricHostConfig.js +++ b/packages/react-native-renderer/src/ReactFabricHostConfig.js @@ -349,8 +349,9 @@ export function shouldSetTextContent(type: string, props: Props): boolean { } export function getCurrentEventPriority(): * { - const currentEventPriority = - fabricGetCurrentEventPriority ? fabricGetCurrentEventPriority() : null; + const currentEventPriority = fabricGetCurrentEventPriority + ? fabricGetCurrentEventPriority() + : null; if (currentEventPriority != null) { switch (currentEventPriority) {