@onekeyfe/react-native-pager-view 6.7.0-alpha.415 → 6.7.0-alpha.418

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -583,12 +583,34 @@ using namespace facebook::react;
583
583
  XCTAssertEqualObjects([pager valueForKey:@"currentIndex"], @0);
584
584
  }
585
585
  __block RNCNativeScrollerComponentView *replacement;
586
+ __block BOOL replacementFixtureActive = YES;
586
587
  int64_t replacementDelay = finalRetryPending ? 150 : 50;
587
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, replacementDelay * NSEC_PER_MSEC), dispatch_get_main_queue(), ^{
588
+ dispatch_block_t insertReplacement = dispatch_block_create((dispatch_block_flags_t)0, ^{
589
+ if (!replacementFixtureActive) return;
588
590
  replacement = [self addScrollerToPager:pager atIndex:0];
589
591
  [replacementHost addSubview:replacement];
590
592
  });
591
- [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.3]];
593
+ // LIFO teardown invalidates this callback before the pager clears its pages.
594
+ [self addTeardownBlock:^{
595
+ replacementFixtureActive = NO;
596
+ dispatch_block_cancel(insertReplacement);
597
+ }];
598
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, replacementDelay * NSEC_PER_MSEC),
599
+ dispatch_get_main_queue(), insertReplacement);
600
+ NSPredicate *hasReplacementOwners = [NSPredicate predicateWithBlock:
601
+ ^BOOL(__unused id object, __unused NSDictionary *bindings) {
602
+ return replacement != nil &&
603
+ [pager valueForKey:@"observedScrollView"] == replacement.scrollView &&
604
+ [pager valueForKey:@"sharedHeaderScrollView"] == replacement.scrollView;
605
+ }];
606
+ XCTNSPredicateExpectation *replacementReady =
607
+ [[XCTNSPredicateExpectation alloc] initWithPredicate:hasReplacementOwners object:nil];
608
+ XCTWaiterResult result = [XCTWaiter waitForExpectations:@[replacementReady] timeout:5];
609
+ replacementFixtureActive = NO;
610
+ dispatch_block_cancel(insertReplacement);
611
+ XCTAssertEqual(result, XCTWaiterResultCompleted);
612
+ XCTAssertNotNil(replacement);
613
+ if (result != XCTWaiterResultCompleted || replacement == nil) return;
592
614
  XCTAssertEqual([pager valueForKey:@"observedScrollView"], replacement.scrollView);
593
615
  XCTAssertEqual([pager valueForKey:@"sharedHeaderScrollView"], replacement.scrollView);
594
616
  XCTAssertEqualWithAccuracy(replacement.scrollView.contentOffset.y + replacement.scrollView.contentInset.top,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/react-native-pager-view",
3
- "version": "6.7.0-alpha.415",
3
+ "version": "6.7.0-alpha.418",
4
4
  "description": "React Native wrapper for Android and iOS ViewPager",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/module/index.js",
@@ -74,7 +74,7 @@
74
74
  "typescript": "^5.9.2"
75
75
  },
76
76
  "peerDependencies": {
77
- "@onekeyfe/react-native-native-logger": "6.7.0-alpha.415",
77
+ "@onekeyfe/react-native-native-logger": "6.7.0-alpha.418",
78
78
  "react": "*",
79
79
  "react-native": "*"
80
80
  },