68 lines
2.6 KiB
Diff
68 lines
2.6 KiB
Diff
diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h
|
|
index 914a249..0deac55 100644
|
|
--- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h
|
|
+++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h
|
|
@@ -19,6 +19,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|
*/
|
|
@interface RCTPullToRefreshViewComponentView : RCTViewComponentView <RCTCustomPullToRefreshViewProtocol>
|
|
|
|
+- (void)beginRefreshingProgrammatically;
|
|
+
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|
|
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
|
|
index 5fbb2e0..ec5f58c 100644
|
|
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
|
|
+++ b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
|
|
@@ -17,4 +17,6 @@
|
|
@property (nonatomic, weak) UIScrollView *scrollView;
|
|
@property (nonatomic, copy) UIColor *customTintColor;
|
|
|
|
+- (void)forwarderBeginRefreshing;
|
|
+
|
|
@end
|
|
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
|
|
index e2e0c9f..ff1b1ed 100644
|
|
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
|
|
+++ b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
|
|
@@ -240,4 +240,38 @@ - (void)setTintColor:(UIColor *)tintColor
|
|
}
|
|
}
|
|
|
|
+// This method is used by Bluesky's ExpoScrollForwarder. This allows other React Native
|
|
+// libraries to perform a refresh of a scrollview and access the refresh control's onRefresh
|
|
+// function.
|
|
+- (void)forwarderBeginRefreshing
|
|
+{
|
|
+ _refreshingProgrammatically = NO;
|
|
+
|
|
+ [self sizeToFit];
|
|
+
|
|
+ if (!self.scrollView) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ UIScrollView *scrollView = (UIScrollView *)self.scrollView;
|
|
+
|
|
+ [UIView animateWithDuration:0.3
|
|
+ delay:0
|
|
+ options:UIViewAnimationOptionBeginFromCurrentState
|
|
+ animations:^(void) {
|
|
+ // Whenever we call this method, the scrollview will always be at a position of
|
|
+ // -130 or less. Scrolling back to -65 simulates the default behavior of RCTRefreshControl
|
|
+ [scrollView setContentOffset:CGPointMake(0, -65)];
|
|
+ }
|
|
+ completion:^(__unused BOOL finished) {
|
|
+ [super beginRefreshing];
|
|
+ [self setCurrentRefreshingState:super.refreshing];
|
|
+
|
|
+ if (self->_onRefresh) {
|
|
+ self->_onRefresh(nil);
|
|
+ }
|
|
+ }
|
|
+ ];
|
|
+}
|
|
+
|
|
@end
|