Brion VIBBER has submitted this change and it was merged. Change subject: Made refs panel lazy loaded. Disabled refs js hook for now. ......................................................................
Made refs panel lazy loaded. Disabled refs js hook for now. Change-Id: I8237be404e271f6d37a9a22be2c33a973425ef02 (cherry picked from commit 358dd833026fb64d526d8cfe550f0e3d9a002494) --- M wikipedia/Base.lproj/Main_iPhone.storyboard M wikipedia/View Controllers/References/ReferenceVC.m M wikipedia/View Controllers/References/ReferencesVC.h M wikipedia/View Controllers/References/ReferencesVC.m M wikipedia/View Controllers/WebView/WebViewController.h M wikipedia/View Controllers/WebView/WebViewController.m M wikipedia/assets/bundle.js M www/js/listeners.js 8 files changed, 69 insertions(+), 22 deletions(-) Approvals: Brion VIBBER: Verified; Looks good to me, approved diff --git a/wikipedia/Base.lproj/Main_iPhone.storyboard b/wikipedia/Base.lproj/Main_iPhone.storyboard index f8853c8..2f9eeb3 100644 --- a/wikipedia/Base.lproj/Main_iPhone.storyboard +++ b/wikipedia/Base.lproj/Main_iPhone.storyboard @@ -1205,9 +1205,6 @@ <constraints> <constraint firstAttribute="height" constant="200" id="Z6r-VJ-hik"/> </constraints> - <connections> - <segue destination="1wG-t8-xjS" kind="embed" identifier="ReferencesVC_embed" id="fwM-jR-p9Z"/> - </connections> </containerView> </subviews> <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/> diff --git a/wikipedia/View Controllers/References/ReferenceVC.m b/wikipedia/View Controllers/References/ReferenceVC.m index f8e0d3c..c8c435c 100644 --- a/wikipedia/View Controllers/References/ReferenceVC.m +++ b/wikipedia/View Controllers/References/ReferenceVC.m @@ -18,6 +18,11 @@ @implementation ReferenceVC +-(void)dealloc +{ + NSLog(@"dealloc'ing REFERENCE VC!"); +} + - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSString *domain = [SessionSingleton sharedInstance].currentArticleDomain; diff --git a/wikipedia/View Controllers/References/ReferencesVC.h b/wikipedia/View Controllers/References/ReferencesVC.h index b413baa..ec3c79a 100644 --- a/wikipedia/View Controllers/References/ReferencesVC.h +++ b/wikipedia/View Controllers/References/ReferencesVC.h @@ -12,6 +12,8 @@ @property (weak, nonatomic) WebViewController *webVC; +@property (assign) CGFloat panelHeight; + -(void)reset; @end diff --git a/wikipedia/View Controllers/References/ReferencesVC.m b/wikipedia/View Controllers/References/ReferencesVC.m index 3c8b48b..afb76b1 100644 --- a/wikipedia/View Controllers/References/ReferencesVC.m +++ b/wikipedia/View Controllers/References/ReferencesVC.m @@ -55,6 +55,7 @@ [super viewDidLoad]; // Do any additional setup after loading the view. + self.panelHeight = 0; self.refs = @[@""]; self.linkIds = @[]; self.linkText = @[]; @@ -305,7 +306,7 @@ CGRect r = [self.webVC.webView getScreenRectForHtmlElementWithId:elementId]; if (!CGRectIsNull(r)) { - CGFloat vSpaceAboveRefsPanel = self.webVC.view.bounds.size.height - self.view.bounds.size.height; + CGFloat vSpaceAboveRefsPanel = self.webVC.view.bounds.size.height - self.panelHeight; // Only scroll up if the refs link would be below the refs panel. if ((r.origin.y + r.size.height) > (vSpaceAboveRefsPanel)) { diff --git a/wikipedia/View Controllers/WebView/WebViewController.h b/wikipedia/View Controllers/WebView/WebViewController.h index 68ca8d9..c4fe24a 100644 --- a/wikipedia/View Controllers/WebView/WebViewController.h +++ b/wikipedia/View Controllers/WebView/WebViewController.h @@ -13,7 +13,7 @@ @property (nonatomic) BOOL bottomMenuHidden; @property (nonatomic) BOOL referencesHidden; --(void)referencesShow; +-(void)referencesShow:(NSDictionary *)payload; -(void)referencesHide; // Reloads the current article from the core data cache. diff --git a/wikipedia/View Controllers/WebView/WebViewController.m b/wikipedia/View Controllers/WebView/WebViewController.m index b6cc728..18f5e7d 100644 --- a/wikipedia/View Controllers/WebView/WebViewController.m +++ b/wikipedia/View Controllers/WebView/WebViewController.m @@ -93,7 +93,7 @@ @property (nonatomic) BOOL unsafeToToggleTOC; @property (weak, nonatomic) BottomMenuViewController *bottomMenuViewController; -@property (weak, nonatomic) ReferencesVC *referencesVC; +@property (strong, nonatomic) ReferencesVC *referencesVC; @property (weak, nonatomic) IBOutlet UIView *referencesContainerView; @property (strong, nonatomic) NSLayoutConstraint *bottomBarViewBottomConstraint; @@ -145,6 +145,7 @@ [super viewDidLoad]; self.zeroStatusLabel.text = @""; + self.referencesVC = nil; self.sectionToEditId = 0; @@ -931,8 +932,7 @@ } //NSLog(@"referenceClicked: %@", payload); - weakSelf.referencesVC.payload = payload; - [weakSelf referencesShow]; + [weakSelf referencesShow:payload]; }]; @@ -1982,11 +1982,6 @@ if ([segue.identifier isEqualToString: @"BottomMenuViewController_embed2"]) { self.bottomMenuViewController = (BottomMenuViewController *) [segue destinationViewController]; } - - if ([segue.identifier isEqualToString: @"ReferencesVC_embed"]) { - self.referencesVC = (ReferencesVC *) [segue destinationViewController]; - self.referencesVC.webVC = self; - } } -(void)setBottomMenuHidden:(BOOL)bottomMenuHidden @@ -2113,12 +2108,17 @@ -(void)updateReferencesHeightAndBottomConstraints { + CGFloat refsHeight = [self getRefsPanelHeight]; + self.referencesContainerViewBottomConstraint.constant = self.referencesHidden ? refsHeight : 0.0; + self.referencesContainerViewHeightConstraint.constant = refsHeight; +} + +-(CGFloat)getRefsPanelHeight +{ CGFloat percentOfHeight = UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? 0.4 : 0.6; if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) percentOfHeight *= 0.5; NSNumber *refsHeight = @(self.view.frame.size.height * percentOfHeight); - CGFloat f = self.referencesHidden ? refsHeight.integerValue : 0; - self.referencesContainerViewBottomConstraint.constant = f; - self.referencesContainerViewHeightConstraint.constant = refsHeight.integerValue; + return (CGFloat)refsHeight.integerValue; } -(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration @@ -2126,9 +2126,39 @@ [self updateReferencesHeightAndBottomConstraints]; } --(void)referencesShow +-(void)referencesShow:(NSDictionary *)payload { - if (!self.referencesHidden) return; + if (!self.referencesHidden){ + self.referencesVC.panelHeight = [self getRefsPanelHeight]; + self.referencesVC.payload = payload; + return; + } + + self.referencesVC = [self.navigationController.storyboard instantiateViewControllerWithIdentifier:@"ReferencesVC"]; + + self.referencesVC.webVC = self; + [self addChildViewController:self.referencesVC]; + self.referencesVC.view.translatesAutoresizingMaskIntoConstraints = NO; + [self.referencesContainerView addSubview:self.referencesVC.view]; + + [self.referencesContainerView addConstraints: + [NSLayoutConstraint constraintsWithVisualFormat: @"V:|[view]|" + options: 0 + metrics: nil + views: @{@"view": self.referencesVC.view}]]; + [self.referencesContainerView addConstraints: + [NSLayoutConstraint constraintsWithVisualFormat: @"H:|[view]|" + options: 0 + metrics: nil + views: @{@"view": self.referencesVC.view}]]; + + [self.referencesVC didMoveToParentViewController:self]; + + [self.referencesContainerView layoutIfNeeded]; + + self.referencesVC.panelHeight = [self getRefsPanelHeight]; + self.referencesVC.payload = payload; + [UIView animateWithDuration: 0.16 delay: 0.0f options: UIViewAnimationOptionBeginFromCurrentState @@ -2146,8 +2176,14 @@ options: UIViewAnimationOptionBeginFromCurrentState animations: ^{ self.referencesHidden = YES; + [self.view layoutIfNeeded]; - }completion:nil]; + }completion:^(BOOL done){ + [self.referencesVC willMoveToParentViewController:nil]; + [self.referencesVC.view removeFromSuperview]; + [self.referencesVC removeFromParentViewController]; + self.referencesVC = nil; + }]; } @end diff --git a/wikipedia/assets/bundle.js b/wikipedia/assets/bundle.js index 0d5d71a..990bb7a 100644 --- a/wikipedia/assets/bundle.js +++ b/wikipedia/assets/bundle.js @@ -242,10 +242,13 @@ if ( anchorTarget && (anchorTarget.tagName === "A") ) { var href = anchorTarget.getAttribute( "href" ); +/* if ( refs.isReference( href ) ) { // Handle reference links with a popup view instead of scrolling about! refs.sendNearbyReferences( anchorTarget ); - } else if ( href[0] === "#" ) { + } else +*/ + if ( href[0] === "#" ) { // If it is a link to an anchor in the current page, just scroll to it document.getElementById( href.substring( 1 ) ).scrollIntoView(); } else { @@ -573,4 +576,4 @@ } } -},{}]},{},[1,2,3,4,5,6,7,8]) \ No newline at end of file +},{}]},{},[1,2,3,4,5,6,7,8]) diff --git a/www/js/listeners.js b/www/js/listeners.js index be833bf..aaec41f 100644 --- a/www/js/listeners.js +++ b/www/js/listeners.js @@ -146,10 +146,13 @@ if ( anchorTarget && (anchorTarget.tagName === "A") ) { var href = anchorTarget.getAttribute( "href" ); +/* if ( refs.isReference( href ) ) { // Handle reference links with a popup view instead of scrolling about! refs.sendNearbyReferences( anchorTarget ); - } else if ( href[0] === "#" ) { + } else +*/ + if ( href[0] === "#" ) { // If it is a link to an anchor in the current page, just scroll to it document.getElementById( href.substring( 1 ) ).scrollIntoView(); } else { -- To view, visit https://gerrit.wikimedia.org/r/151200 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8237be404e271f6d37a9a22be2c33a973425ef02 Gerrit-PatchSet: 1 Gerrit-Project: apps/ios/wikipedia Gerrit-Branch: v4.0.1-rc Gerrit-Owner: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: Mhurd <mh...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits