Brion VIBBER has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/151200

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(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/ios/wikipedia 
refs/changes/00/151200/1

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: newchange
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: Mhurd <mh...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to