Skip to content

Commit bb933d3

Browse files
author
MCleinman
authored
Merge pull request #3813 from wikimedia/MoreLanguageLinkControllerCleanup
MWKLanguageLinkController Refactoring
2 parents 1147cfa + 0af1a40 commit bb933d3

26 files changed

+49
-48
lines changed

FeaturedArticleWidget/FeaturedArticleWidget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class FeaturedArticleWidget: ExtensionViewController, NCWidgetProviding {
8787
func widgetPerformUpdate(completionHandler: @escaping (NCUpdateResult) -> Void) {
8888
WidgetController.shared.startWidgetUpdateTask(completionHandler) { (dataStore, completion) in
8989
let moc = dataStore.viewContext
90-
let siteURL = dataStore.languageLinkController.appLanguage?.siteURL()
90+
let siteURL = dataStore.primarySiteURL
9191
moc.perform {
9292
guard let featuredContentGroup = moc.newestGroup(of: .featuredArticle, forSiteURL: siteURL),
9393
let articleURL = featuredContentGroup.contentPreview as? URL else {

TopReadWidget/WMFTodayTopReadWidgetViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ class WMFTodayTopReadWidgetViewController: ExtensionViewController, NCWidgetProv
159159
}
160160

161161
var language: String? = nil
162-
let siteURL = dataStore.languageLinkController.appLanguage?.siteURL()
162+
let siteURL = dataStore.primarySiteURL
163163
if let languageCode = siteURL?.wmf_language {
164164
language = Locale.current.localizedString(forLanguageCode: languageCode)
165165
}

WMF Framework/ReadingListsSyncOperation.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ internal class ReadingListsSyncOperation: ReadingListsOperation {
390390

391391
if !englishOnly {
392392
if let randomLanguage = dataStore.languageLinkController.allLanguages.randomElement() {
393-
maybeSiteURL = randomLanguage.siteURL()
393+
maybeSiteURL = randomLanguage.siteURL
394394
}
395395
}
396396

WMF Framework/WidgetController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public final class WidgetController: NSObject {
6565
private func fetchCachedWidgetContentGroup(with kind: WMFContentGroupKind, isAnyLanguageAllowed: Bool, in dataStore: MWKDataStore, completion: @escaping (WMFContentGroup?) -> Void) {
6666
assert(Thread.isMainThread, "Cached widget content group must be fetched from the main queue")
6767
let moc = dataStore.viewContext
68-
let siteURL = isAnyLanguageAllowed ? dataStore.languageLinkController.appLanguage?.siteURL() : nil
68+
let siteURL = isAnyLanguageAllowed ? dataStore.primarySiteURL : nil
6969
completion(moc.newestGroup(of: kind, forSiteURL: siteURL))
7070
}
7171

Widgets/Widgets/OnThisDayWidget.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ final class OnThisDayData {
116116
let articleSnippet = WMFLocalizedString("widget-onthisday-placeholder-article-snippet", language: language?.languageCode, value: "Free online encyclopedia that anyone can edit", comment: "Placeholder text for On This Day widget: Article description for an article about Wikipedia")
117117

118118
// It seems that projects whose article is not titled "Wikipedia" (Arabic, for instance) all redirect this URL appropriately.
119-
let articleURL = URL(string: ((language?.siteURL().absoluteString ?? "https://en.wikipedia.org") + "/wiki/Wikipedia"))
119+
let articleURL = URL(string: ((language?.siteURL.absoluteString ?? "https://en.wikipedia.org") + "/wiki/Wikipedia"))
120120

121121
let entry: OnThisDayEntry = OnThisDayEntry(isRTLLanguage: isRTL,
122122
error: nil,

Wikipedia/Code/AccountViewController.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,7 @@ class AccountViewController: SubSettingsViewController {
113113
showLogoutAlert()
114114
case .talkPage:
115115
if let username = dataStore.authenticationManager.loggedInUsername,
116-
let language = dataStore.languageLinkController.appLanguage {
117-
let siteURL = language.siteURL()
116+
let siteURL = dataStore.primarySiteURL {
118117
let title = TalkPageType.user.titleWithCanonicalNamespacePrefix(title: username, siteURL: siteURL)
119118

120119
let loadingFlowController = TalkPageContainerViewController.talkPageContainer(title: title, siteURL: siteURL, type: .user, dataStore: dataStore, theme: theme)

Wikipedia/Code/ArticleViewController+ArticleInformation.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ extension ArticleViewController {
7070
extension ArticleViewController: WMFLanguagesViewControllerDelegate {
7171
func languagesController(_ controller: WMFLanguagesViewController, didSelectLanguage language: MWKLanguageLink) {
7272
dismiss(animated: true) {
73-
self.navigate(to: language.articleURL())
73+
self.navigate(to: language.articleURL)
7474
}
7575
}
7676
}

Wikipedia/Code/BaseExploreFeedSettingsViewController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ class ExploreFeedSettingsLanguage: ExploreFeedSettingsItem {
111111
title = languageLink.localizedName
112112
subtitle = languageLink.languageCode.uppercased()
113113
self.controlTag = controlTag
114-
siteURL = languageLink.siteURL()
114+
siteURL = languageLink.siteURL
115115
updateIsOn(for: displayType)
116116
}
117117

@@ -334,7 +334,7 @@ fileprivate extension MWKLanguageLink {
334334
Returns false if there are no content sources in this language visible in the feed.
335335
*/
336336
var isInFeed: Bool {
337-
feedContentController.anyContentGroupsVisibleInTheFeed(forSiteURL: siteURL())
337+
feedContentController.anyContentGroupsVisibleInTheFeed(forSiteURL: siteURL)
338338
}
339339

340340
/**

Wikipedia/Code/EditLinkViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class EditLinkViewController: ViewController {
4242

4343
init?(link: Link, siteURL: URL?, dataStore: MWKDataStore) {
4444
guard
45-
let siteURL = siteURL ?? MWKDataStore.shared().languageLinkController.appLanguage?.siteURL() ?? NSURL.wmf_URLWithDefaultSiteAndCurrentLocale(),
45+
let siteURL = siteURL ?? MWKDataStore.shared().primarySiteURL ?? NSURL.wmf_URLWithDefaultSiteAndCurrentLocale(),
4646
let articleURL = link.articleURL(for: siteURL)
4747
else {
4848
return nil

Wikipedia/Code/MWKDataStore.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ typedef NS_OPTIONS(NSUInteger, RemoteConfigOption) {
8989
@property (nonatomic, strong, readonly) NSManagedObjectContext *viewContext;
9090
@property (nonatomic, strong, readonly) NSManagedObjectContext *feedImportContext;
9191

92+
/**
93+
* Returns the siteURL of the user's first preferred language.
94+
*/
95+
@property (readonly, copy, nonatomic, nullable) NSURL *primarySiteURL;
96+
9297
#pragma mark - Caching
9398

9499
@property (readonly, strong, nonatomic) MobileviewToMobileHTMLConverter *mobileviewConverter;

0 commit comments

Comments
 (0)