mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
refactor metrics for ScrollViewEventEmitter (#43532)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/43532 changelog: [internal] - use designated initializers. - make ScrollViewMetrics a struct. - move ScrollViewMetrics inside of ScrollViewEventEmitter. This is to be more consistent with other event emitters. Reviewed By: rubennorte Differential Revision: D54896331 fbshipit-source-id: 01aecd1835b23bdaccff1355d33eb7b4c5ba8d92
This commit is contained in:
committed by
Facebook GitHub Bot
parent
1c52d385de
commit
c574ca59dc
+8
-7
@@ -386,14 +386,15 @@ static void RCTSendScrollEventForNativeAnimations_DEPRECATED(UIScrollView *scrol
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (ScrollViewMetrics)_scrollViewMetrics
|
||||
- (ScrollViewEventEmitter::Metrics)_scrollViewMetrics
|
||||
{
|
||||
ScrollViewMetrics metrics;
|
||||
metrics.contentSize = RCTSizeFromCGSize(_scrollView.contentSize);
|
||||
metrics.contentOffset = RCTPointFromCGPoint(_scrollView.contentOffset);
|
||||
metrics.contentInset = RCTEdgeInsetsFromUIEdgeInsets(_scrollView.contentInset);
|
||||
metrics.containerSize = RCTSizeFromCGSize(_scrollView.bounds.size);
|
||||
metrics.zoomScale = _scrollView.zoomScale;
|
||||
auto metrics = ScrollViewEventEmitter::Metrics{
|
||||
.contentSize = RCTSizeFromCGSize(_scrollView.contentSize),
|
||||
.contentOffset = RCTPointFromCGPoint(_scrollView.contentOffset),
|
||||
.contentInset = RCTEdgeInsetsFromUIEdgeInsets(_scrollView.contentInset),
|
||||
.containerSize = RCTSizeFromCGSize(_scrollView.bounds.size),
|
||||
.zoomScale = _scrollView.zoomScale,
|
||||
};
|
||||
|
||||
if (_layoutMetrics.layoutDirection == LayoutDirection::RightToLeft) {
|
||||
metrics.contentOffset.x = metrics.contentSize.width - metrics.containerSize.width - metrics.contentOffset.x;
|
||||
|
||||
+8
-9
@@ -11,7 +11,7 @@ namespace facebook::react {
|
||||
|
||||
static jsi::Value scrollViewMetricsPayload(
|
||||
jsi::Runtime& runtime,
|
||||
const ScrollViewMetrics& scrollViewMetrics) {
|
||||
const ScrollViewEventEmitter::Metrics& scrollViewMetrics) {
|
||||
auto payload = jsi::Object(runtime);
|
||||
|
||||
{
|
||||
@@ -57,15 +57,14 @@ static jsi::Value scrollViewMetricsPayload(
|
||||
return payload;
|
||||
}
|
||||
|
||||
void ScrollViewEventEmitter::onScroll(
|
||||
const ScrollViewMetrics& scrollViewMetrics) const {
|
||||
void ScrollViewEventEmitter::onScroll(const Metrics& scrollViewMetrics) const {
|
||||
dispatchUniqueEvent("scroll", [scrollViewMetrics](jsi::Runtime& runtime) {
|
||||
return scrollViewMetricsPayload(runtime, scrollViewMetrics);
|
||||
});
|
||||
}
|
||||
|
||||
void ScrollViewEventEmitter::onScrollToTop(
|
||||
const ScrollViewMetrics& scrollViewMetrics) const {
|
||||
const Metrics& scrollViewMetrics) const {
|
||||
dispatchUniqueEvent(
|
||||
"scrollToTop", [scrollViewMetrics](jsi::Runtime& runtime) {
|
||||
return scrollViewMetricsPayload(runtime, scrollViewMetrics);
|
||||
@@ -73,28 +72,28 @@ void ScrollViewEventEmitter::onScrollToTop(
|
||||
}
|
||||
|
||||
void ScrollViewEventEmitter::onScrollBeginDrag(
|
||||
const ScrollViewMetrics& scrollViewMetrics) const {
|
||||
const Metrics& scrollViewMetrics) const {
|
||||
dispatchScrollViewEvent("scrollBeginDrag", scrollViewMetrics);
|
||||
}
|
||||
|
||||
void ScrollViewEventEmitter::onScrollEndDrag(
|
||||
const ScrollViewMetrics& scrollViewMetrics) const {
|
||||
const Metrics& scrollViewMetrics) const {
|
||||
dispatchScrollViewEvent("scrollEndDrag", scrollViewMetrics);
|
||||
}
|
||||
|
||||
void ScrollViewEventEmitter::onMomentumScrollBegin(
|
||||
const ScrollViewMetrics& scrollViewMetrics) const {
|
||||
const Metrics& scrollViewMetrics) const {
|
||||
dispatchScrollViewEvent("momentumScrollBegin", scrollViewMetrics);
|
||||
}
|
||||
|
||||
void ScrollViewEventEmitter::onMomentumScrollEnd(
|
||||
const ScrollViewMetrics& scrollViewMetrics) const {
|
||||
const Metrics& scrollViewMetrics) const {
|
||||
dispatchScrollViewEvent("momentumScrollEnd", scrollViewMetrics);
|
||||
}
|
||||
|
||||
void ScrollViewEventEmitter::dispatchScrollViewEvent(
|
||||
std::string name,
|
||||
const ScrollViewMetrics& scrollViewMetrics) const {
|
||||
const Metrics& scrollViewMetrics) const {
|
||||
dispatchEvent(std::move(name), [scrollViewMetrics](jsi::Runtime& runtime) {
|
||||
return scrollViewMetricsPayload(runtime, scrollViewMetrics);
|
||||
});
|
||||
|
||||
+15
-16
@@ -15,30 +15,29 @@
|
||||
|
||||
namespace facebook::react {
|
||||
|
||||
class ScrollViewMetrics {
|
||||
public:
|
||||
Size contentSize;
|
||||
Point contentOffset;
|
||||
EdgeInsets contentInset;
|
||||
Size containerSize;
|
||||
Float zoomScale;
|
||||
};
|
||||
|
||||
class ScrollViewEventEmitter : public ViewEventEmitter {
|
||||
public:
|
||||
using ViewEventEmitter::ViewEventEmitter;
|
||||
|
||||
void onScroll(const ScrollViewMetrics& scrollViewMetrics) const;
|
||||
void onScrollBeginDrag(const ScrollViewMetrics& scrollViewMetrics) const;
|
||||
void onScrollEndDrag(const ScrollViewMetrics& scrollViewMetrics) const;
|
||||
void onMomentumScrollBegin(const ScrollViewMetrics& scrollViewMetrics) const;
|
||||
void onMomentumScrollEnd(const ScrollViewMetrics& scrollViewMetrics) const;
|
||||
void onScrollToTop(const ScrollViewMetrics& scrollViewMetrics) const;
|
||||
struct Metrics {
|
||||
Size contentSize;
|
||||
Point contentOffset;
|
||||
EdgeInsets contentInset;
|
||||
Size containerSize;
|
||||
Float zoomScale{};
|
||||
};
|
||||
|
||||
void onScroll(const Metrics& scrollViewMetrics) const;
|
||||
void onScrollBeginDrag(const Metrics& scrollViewMetrics) const;
|
||||
void onScrollEndDrag(const Metrics& scrollViewMetrics) const;
|
||||
void onMomentumScrollBegin(const Metrics& scrollViewMetrics) const;
|
||||
void onMomentumScrollEnd(const Metrics& scrollViewMetrics) const;
|
||||
void onScrollToTop(const Metrics& scrollViewMetrics) const;
|
||||
|
||||
private:
|
||||
void dispatchScrollViewEvent(
|
||||
std::string name,
|
||||
const ScrollViewMetrics& scrollViewMetrics) const;
|
||||
const Metrics& scrollViewMetrics) const;
|
||||
};
|
||||
|
||||
} // namespace facebook::react
|
||||
|
||||
Reference in New Issue
Block a user