[MediaWiki-commits] [Gerrit] Fetch site info to get main page - change (apps...wikipedia)

2015-06-04 Thread Fjalapeno (Code Review)
Fjalapeno has submitted this change and it was merged.

Change subject: Fetch site info to get main page
..


Fetch site info to get main page

Prevents a crash in the app when we don't know the main page for a given
language code.  This is done by fetching the site's "siteinfo" metadata,
and extracting the "mainpage" field from it.

The diff is large because:

- I added new fetcher
- I replaced "isMain" logic, which was quite pervasive
- I refactored some stuff along the way.

Also removes a lot of cruft:
- Using SessionSingleton to check main pages (now checked directly on
  MWKArticle, using prexisting data from mobileview)
- Removed hard-coded JSON file mapping language codes to main pages (as
  language codes did not match to ISO language codes used for iOS
  preferences)
- Removed "default" NSUserDefault for current article, which was
  previously "Main_Page" (now we just load the default site's main page
  using aforementioned approach)
- Moved setting of "default" NSUserDefaults to AppDelegate, to ensure
  they're registered deterministically at launch time—preventing race
  conditions between SessionSingleton init and default access
- Cleaned up setting of search language/site (now a proper, settable
  property & computed property pair)
- Refactored "wikipedia.org" into WMFDefaultSiteDOmain constant
- Refactored API networking utilities for easier reuse
  (WMFApiJsonResponseSerializer)

Bug: T100687
Change-Id: Ie5b7bb2194212edce46349abc550404e0b71725d
---
M MediaWikiKit/MediaWikiKit/MWKArticle.h
M MediaWikiKit/MediaWikiKit/MWKArticle.m
M MediaWikiKit/MediaWikiKit/MWKSite.h
M MediaWikiKit/MediaWikiKit/MWKSite.m
A MediaWikiKit/MediaWikiKit/MWKSiteInfo.h
A MediaWikiKit/MediaWikiKit/MWKSiteInfo.m
M Wikipedia.xcodeproj/project.pbxproj
M Wikipedia/AppDelegate.m
M Wikipedia/AssetsFile/WMFAssetsFile.h
M Wikipedia/AssetsFile/WMFAssetsFile.m
D Wikipedia/Categories/Alerts/AlertWebView.h
D Wikipedia/Categories/Alerts/AlertWebView.m
M Wikipedia/Categories/MWKArticle+WMFSharing.m
D Wikipedia/Categories/MWKArticle+isMain.h
D Wikipedia/Categories/MWKArticle+isMain.m
M Wikipedia/Categories/MWKSection+DisplayHtml.m
M Wikipedia/Networking/Fetchers/ArticleFetcher.m
A Wikipedia/Networking/Fetchers/MWKSiteInfoFetcher.h
A Wikipedia/Networking/Fetchers/MWKSiteInfoFetcher.m
M Wikipedia/Networking/Serializers/MWKImageInfoResponseSerializer.h
M Wikipedia/Networking/Serializers/MWKImageInfoResponseSerializer.m
A Wikipedia/Networking/Serializers/WMFApiJsonResponseSerializer.h
A Wikipedia/Networking/Serializers/WMFApiJsonResponseSerializer.m
M Wikipedia/Networking/WMFNetworkUtilities.h
M Wikipedia/Networking/WMFNetworkUtilities.m
M Wikipedia/Protocols/WMFArticleProtocol.m
M Wikipedia/Session/SessionSingleton.h
M Wikipedia/Session/SessionSingleton.m
M Wikipedia/View Controllers/Languages/LanguagesViewController.h
M Wikipedia/View Controllers/Navigation/Center/CenterNavController.m
M Wikipedia/View Controllers/Navigation/Secondary/SecondaryMenuViewController.m
M Wikipedia/View Controllers/Navigation/Top/TopMenuViewController.m
M Wikipedia/View 
Controllers/WebView/Footer/SubFooters/Options/WMFOptionsFooterViewController.m
M Wikipedia/View Controllers/WebView/WebViewController.m
A WikipediaUnitTests/Fixtures/ENWikiSiteInfo.json
A WikipediaUnitTests/Fixtures/NOWikiSiteInfo.json
M WikipediaUnitTests/MWKArticle+WMFSharingTests.m
A WikipediaUnitTests/MWKSiteInfoFetcherTests.m
M WikipediaUnitTests/Utilities/NSBundle+TestAssets.m
A WikipediaUnitTests/Utilities/XCTestCase+WMFLocaleTesting.h
A WikipediaUnitTests/Utilities/XCTestCase+WMFLocaleTesting.m
M WikipediaUnitTests/WMFAsyncTestCase.h
M WikipediaUnitTests/WMFAsyncTestCase.m
M WikipediaUnitTests/WMFDateFormatterTests.m
44 files changed, 777 insertions(+), 444 deletions(-)

Approvals:
  Fjalapeno: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/MediaWikiKit/MediaWikiKit/MWKArticle.h 
b/MediaWikiKit/MediaWikiKit/MWKArticle.h
index 01733fc..3b10a39 100644
--- a/MediaWikiKit/MediaWikiKit/MWKArticle.h
+++ b/MediaWikiKit/MediaWikiKit/MWKArticle.h
@@ -40,6 +40,9 @@
 @property (readonly, strong, nonatomic) MWKProtectionStatus* protection; 
// required
 @property (readonly, assign, nonatomic) BOOL editable;   
// required
 
+/// Whether or not the receiver is the main page for its @c site.
+@property (readonly, assign, nonatomic, getter = isMain) BOOL main;
+
 @property (readwrite, copy, nonatomic) NSString* thumbnailURL;   // optional; 
pulled separately via search
 @property (readwrite, copy, nonatomic) NSString* imageURL;   // optional; 
pulled in article request
 
diff --git a/MediaWikiKit/MediaWikiKit/MWKArticle.m 
b/MediaWikiKit/MediaWikiKit/MWKArticle.m
index efca10f..bf266db 100644
--- a/MediaWikiKit/MediaWikiKit/MWKArticle.m
+++ b/MediaWikiKit/MediaWikiKit/MWKArticle.m
@@ -10,6 +10,15 @@
 #import 
 #import "WikipediaAppUtils.h"
 
+typedef NS_ENUM (NSUInteger, MWKArticle

[MediaWiki-commits] [Gerrit] Fetch site info to get main page - change (apps...wikipedia)

2015-06-02 Thread Bgerstle (Code Review)
Bgerstle has uploaded a new change for review.

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

Change subject: Fetch site info to get main page
..

Fetch site info to get main page

Prevents a crash in the app when we don't know the main page for a given
language code.  This is done by fetching the site's "siteinfo" metadata,
and extracting the "mainpage" field from it.

The diff is large because:

- I added new fetcher
- I replaced "isMain" logic, which was quite pervasive
- I refactored some stuff along the way.

Also removes a lot of cruft:
- Using SessionSingleton to check main pages (now checked directly on
  MWKArticle, using prexisting data from mobileview)
- Removed hard-coded JSON file mapping language codes to main pages (as
  language codes did not match to ISO language codes used for iOS
  preferences)
- Removed "default" NSUserDefault for current article, which was
  previously "Main_Page" (now we just load the default site's main page
  using aforementioned approach)
- Moved setting of "default" NSUserDefaults to AppDelegate, to ensure
  they're registered deterministically at launch time—preventing race
  conditions between SessionSingleton init and default access
- Cleaned up setting of search language/site (now a proper, settable
  property & computed property pair)
- Refactored "wikipedia.org" into WMFDefaultSiteDOmain constant
- Refactored API networking utilities for easier reuse
  (WMFApiJsonResponseSerializer)

Bug: T100687
Change-Id: Ie5b7bb2194212edce46349abc550404e0b71725d
---
M MediaWikiKit/MediaWikiKit/MWKArticle.h
M MediaWikiKit/MediaWikiKit/MWKArticle.m
M MediaWikiKit/MediaWikiKit/MWKSite.h
M MediaWikiKit/MediaWikiKit/MWKSite.m
A MediaWikiKit/MediaWikiKit/MWKSiteInfo.h
A MediaWikiKit/MediaWikiKit/MWKSiteInfo.m
M MediaWikiKit/MediaWikiKit/MWKTitle.m
M Wikipedia.xcodeproj/project.pbxproj
M Wikipedia/AppDelegate.m
M Wikipedia/AssetsFile/WMFAssetsFile.h
M Wikipedia/AssetsFile/WMFAssetsFile.m
D Wikipedia/Categories/Alerts/AlertWebView.h
D Wikipedia/Categories/Alerts/AlertWebView.m
M Wikipedia/Categories/MWKArticle+WMFSharing.m
D Wikipedia/Categories/MWKArticle+isMain.h
D Wikipedia/Categories/MWKArticle+isMain.m
M Wikipedia/Categories/MWKSection+DisplayHtml.m
M Wikipedia/Networking/Fetchers/ArticleFetcher.m
A Wikipedia/Networking/Fetchers/MWKSiteInfoFetcher.h
A Wikipedia/Networking/Fetchers/MWKSiteInfoFetcher.m
M Wikipedia/Networking/Serializers/MWKImageInfoResponseSerializer.h
M Wikipedia/Networking/Serializers/MWKImageInfoResponseSerializer.m
A Wikipedia/Networking/Serializers/WMFApiJsonResponseSerializer.h
A Wikipedia/Networking/Serializers/WMFApiJsonResponseSerializer.m
M Wikipedia/Networking/WMFNetworkUtilities.h
M Wikipedia/Networking/WMFNetworkUtilities.m
M Wikipedia/Protocols/WMFArticleProtocol.m
M Wikipedia/Session/SessionSingleton.h
M Wikipedia/Session/SessionSingleton.m
M Wikipedia/View Controllers/Languages/LanguagesViewController.h
M Wikipedia/View Controllers/Navigation/Center/CenterNavController.m
M Wikipedia/View Controllers/Navigation/Secondary/SecondaryMenuViewController.m
M Wikipedia/View Controllers/Navigation/Top/TopMenuViewController.m
M Wikipedia/View 
Controllers/WebView/Footer/SubFooters/Options/WMFOptionsFooterViewController.m
M Wikipedia/View Controllers/WebView/WebViewController.m
M Wikipedia/mw-utils/WMFPageUtilities.h
M Wikipedia/mw-utils/WMFPageUtilities.m
A WikipediaUnitTests/MWKSiteInfoFetcherTests.m
A WikipediaUnitTests/Utilities/XCTestCase+WMFLocaleTesting.h
A WikipediaUnitTests/Utilities/XCTestCase+WMFLocaleTesting.m
M WikipediaUnitTests/WMFAsyncTestCase.h
M WikipediaUnitTests/WMFAsyncTestCase.m
M WikipediaUnitTests/WMFDateFormatterTests.m
43 files changed, 725 insertions(+), 436 deletions(-)


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

diff --git a/MediaWikiKit/MediaWikiKit/MWKArticle.h 
b/MediaWikiKit/MediaWikiKit/MWKArticle.h
index 136b6fe..9798813 100644
--- a/MediaWikiKit/MediaWikiKit/MWKArticle.h
+++ b/MediaWikiKit/MediaWikiKit/MWKArticle.h
@@ -40,6 +40,9 @@
 @property (readonly, strong, nonatomic) MWKProtectionStatus* protection; 
// required
 @property (readonly, assign, nonatomic) BOOL editable;   
// required
 
+/// Whether or not the receiver is the main page for its @c site.
+@property (readonly, assign, nonatomic, getter = isMain) BOOL main;
+
 @property (readwrite, copy, nonatomic) NSString* thumbnailURL;   // optional; 
pulled separately via search
 @property (readwrite, copy, nonatomic) NSString* imageURL;   // optional; 
pulled in article request
 
diff --git a/MediaWikiKit/MediaWikiKit/MWKArticle.m 
b/MediaWikiKit/MediaWikiKit/MWKArticle.m
index 424da87..889ebcd 100644
--- a/MediaWikiKit/MediaWikiKit/MWKArticle.m
+++ b/MediaWikiKit/MediaWikiKit/MWKArticle.m
@@ -9,6 +9,16 @@
 #import "MediaWikiKit.h"
 #import 
 
+typedef NS_ENUM (NSUInteger, MWKArticleSchemaVersion) {
+MWKArticleSchemaVersion_