[MediaWiki-commits] [Gerrit] Fetch site info to get main page - change (apps...wikipedia)
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)
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_