Mhurd has uploaded a new change for review.

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

Change subject: Prefix and full-text delayed searching.
......................................................................

Prefix and full-text delayed searching.

0.3 seconds for prefix and 1 second for full text.

Change-Id: I81115585fb798ee2fb01a3c61f8955a3282d9f16
---
M wikipedia/Defines/Defines.h
M wikipedia/View Controllers/SearchResults/SearchResultsController.m
2 files changed, 37 insertions(+), 1 deletion(-)


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

diff --git a/wikipedia/Defines/Defines.h b/wikipedia/Defines/Defines.h
index 79a7956..f9716bd 100644
--- a/wikipedia/Defines/Defines.h
+++ b/wikipedia/Defines/Defines.h
@@ -61,3 +61,7 @@
     SEARCH_TYPE_TITLES,
     SEARCH_TYPE_IN_ARTCILES
 };
+
+#define SEARCH_DELAY_PREFIX 0.3
+#define SEARCH_DELAY_FULL_TEXT 1.0
+
diff --git a/wikipedia/View Controllers/SearchResults/SearchResultsController.m 
b/wikipedia/View Controllers/SearchResults/SearchResultsController.m
index 7e194a3..214488a 100644
--- a/wikipedia/View Controllers/SearchResults/SearchResultsController.m
+++ b/wikipedia/View Controllers/SearchResults/SearchResultsController.m
@@ -41,6 +41,8 @@
 @property (nonatomic, weak) IBOutlet SearchDidYouMeanButton *didYouMeanButton;
 @property (nonatomic, weak) IBOutlet SearchMessageLabel *searchMessageLabel;
 
+@property (nonatomic, strong) NSTimer *delayedSearchTimer;
+
 @end
 
 @implementation SearchResultsController
@@ -103,7 +105,7 @@
                        context: (void *)context
 {
     if ((object == self.searchTypeMenu) && [keyPath 
isEqualToString:@"searchType"]) {
-        [self refreshSearchResults];
+        [self refreshSearchResultsAfterDelay:@0.0f];
     }
 }
 
@@ -118,13 +120,43 @@
 {
     [super viewWillDisappear:animated];
 
+    [self cancelDelayedSearch];
+    
     [self.searchTypeMenu removeObserver:self forKeyPath:@"searchType"];
     
     [[QueuesSingleton sharedInstance].searchResultsFetchManager.operationQueue 
cancelAllOperations];
 }
 
+-(void)cancelDelayedSearch
+{
+    if (self.delayedSearchTimer) {
+        [self.delayedSearchTimer invalidate];
+        self.delayedSearchTimer = nil;
+    }
+}
+
 -(void)refreshSearchResults
 {
+    CGFloat delay = (self.searchTypeMenu.searchType == SEARCH_TYPE_TITLES) ? 
SEARCH_DELAY_PREFIX : SEARCH_DELAY_FULL_TEXT;
+    
+    [self refreshSearchResultsAfterDelay:@(delay)];
+}
+
+-(void)refreshSearchResultsAfterDelay:(NSNumber *)delay
+{
+    [self cancelDelayedSearch];
+
+    self.delayedSearchTimer = [NSTimer scheduledTimerWithTimeInterval: 
delay.floatValue
+                                                  target: self
+                                                selector: 
@selector(performSearch)
+                                                userInfo: nil
+                                                 repeats: NO];
+}
+
+-(void)performSearch
+{
+    if (self.navigationController.topViewController != self) return;
+
     if (ROOT.topMenuViewController.currentSearchString.length == 0) return;
     
     [self updateWordsToHighlight];

-- 
To view, visit https://gerrit.wikimedia.org/r/173351
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I81115585fb798ee2fb01a3c61f8955a3282d9f16
Gerrit-PatchSet: 1
Gerrit-Project: apps/ios/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mhurd <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to