Mholloway has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/334397 )

Change subject: Pass the wiki from which notifications came to 
NotificationPresenter
......................................................................

Pass the wiki from which notifications came to NotificationPresenter

This will eliminate errors in EntityClient and 404s on navigation when
the user language has changed.

Bug: T154787
Change-Id: Ia035d56028c183f90d7cef6d5d2829ef77972ac7
---
M app/src/main/java/org/wikipedia/notifications/NotificationClient.java
M 
app/src/main/java/org/wikipedia/notifications/NotificationPollBroadcastReceiver.java
M app/src/main/java/org/wikipedia/notifications/NotificationPresenter.java
3 files changed, 19 insertions(+), 18 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/97/334397/1

diff --git 
a/app/src/main/java/org/wikipedia/notifications/NotificationClient.java 
b/app/src/main/java/org/wikipedia/notifications/NotificationClient.java
index 7a6ef1e..1332482 100644
--- a/app/src/main/java/org/wikipedia/notifications/NotificationClient.java
+++ b/app/src/main/java/org/wikipedia/notifications/NotificationClient.java
@@ -24,13 +24,13 @@
 import retrofit2.http.Query;
 
 public final class NotificationClient {
-    @NonNull private final WikiSite wiki;
+    @SuppressWarnings("NullableProblems") @NonNull private static WikiSite 
WIKI_SITE;
     @NonNull private final Service service;
     @NonNull private final CsrfTokenClient editTokenClient;
 
     public interface Callback {
-        void success(@NonNull List<Notification> notifications);
-        void failure(Throwable t);
+        void success(@NonNull List<Notification> notifications, @NonNull 
WikiSite wiki);
+        void failure(@NonNull Throwable t);
     }
 
     private static final NotificationClient INSTANCE
@@ -41,7 +41,7 @@
     }
 
     private NotificationClient(@NonNull WikiSite wiki) {
-        this.wiki = wiki;
+        WIKI_SITE = wiki;
         service = RetrofitFactory.newInstance(wiki).create(Service.class);
         editTokenClient = new CsrfTokenClient();
     }
@@ -57,7 +57,7 @@
         @Override public void 
onResponse(Call<MwQueryResponse<Notification.QueryNotifications>> call,
                                          
Response<MwQueryResponse<Notification.QueryNotifications>> response) {
             if (response.body() != null && response.body().query() != null) {
-                callback.success(response.body().query().get());
+                callback.success(response.body().query().get(), WIKI_SITE);
             } else {
                 callback.failure(new JsonParseException("Notification response 
is malformed."));
             }
@@ -82,7 +82,7 @@
 
     public void markRead(List<Notification> notifications) {
         final String idListStr = TextUtils.join("|", notifications);
-        editTokenClient.request(wiki, new CsrfTokenClient.Callback() {
+        editTokenClient.request(WIKI_SITE, new CsrfTokenClient.Callback() {
             @Override
             public void success(@NonNull Call<CsrfToken> call, @NonNull String 
token) {
                 requestMarkRead(service, token, idListStr).enqueue(new 
retrofit2.Callback<MwQueryResponse<MarkReadResponse.QueryMarkReadResponse>>() {
diff --git 
a/app/src/main/java/org/wikipedia/notifications/NotificationPollBroadcastReceiver.java
 
b/app/src/main/java/org/wikipedia/notifications/NotificationPollBroadcastReceiver.java
index c808fc8..c9f7904 100644
--- 
a/app/src/main/java/org/wikipedia/notifications/NotificationPollBroadcastReceiver.java
+++ 
b/app/src/main/java/org/wikipedia/notifications/NotificationPollBroadcastReceiver.java
@@ -11,6 +11,7 @@
 
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
+import org.wikipedia.dataclient.WikiSite;
 import org.wikipedia.login.User;
 import org.wikipedia.settings.Prefs;
 import org.wikipedia.util.log.L;
@@ -63,7 +64,7 @@
     private void pollNotifications(@NonNull final Context context) {
         NotificationClient.instance().getNotifications(new 
NotificationClient.Callback() {
             @Override
-            public void success(@NonNull List<Notification> notifications) {
+            public void success(@NonNull List<Notification> notifications, 
@NonNull final WikiSite wiki) {
                 if (notifications.isEmpty()) {
                     return;
                 }
@@ -76,24 +77,23 @@
                     // If the notification came from Wikidata, we need to 
resolve the Q-number
                     // title into the corresponding human-readable label.
                     if (n.isFromWikidata() && n.title().isMainNamespace()) {
-                        
EntityClient.instance().getLabelForLang(n.title().full(),
-                                
WikipediaApp.getInstance().getWikiSite().languageCode(),
+                        
EntityClient.instance().getLabelForLang(n.title().full(), wiki.languageCode(),
                                 new EntityClient.LabelCallback() {
                                     @Override
                                     public void success(@NonNull String label) 
{
                                         n.title().setFull(label);
-                                        
NotificationPresenter.showNotification(context, n);
+                                        
NotificationPresenter.showNotification(context, n, wiki);
                                     }
 
                                     @Override
                                     public void failure(Throwable t) {
                                         L.e(t);
                                         // Show the notification anyway, but 
with unresolved ID.
-                                        
NotificationPresenter.showNotification(context, n);
+                                        
NotificationPresenter.showNotification(context, n, wiki);
                                     }
                                 });
                     } else {
-                        NotificationPresenter.showNotification(context, n);
+                        NotificationPresenter.showNotification(context, n, 
wiki);
                     }
                 }
             }
diff --git 
a/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.java 
b/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.java
index e621079..6559596 100644
--- a/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.java
+++ b/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.java
@@ -16,6 +16,7 @@
 import org.wikipedia.Constants;
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
+import org.wikipedia.dataclient.WikiSite;
 import org.wikipedia.page.PageActivity;
 import org.wikipedia.util.ShareUtil;
 
@@ -24,14 +25,14 @@
     private static final int REQUEST_CODE_HISTORY = 1;
     private static final int REQUEST_CODE_AGENT = 2;
 
-    public static void showNotification(@NonNull Context context, Notification 
n) {
+    public static void showNotification(@NonNull Context context, Notification 
n, @NonNull WikiSite wiki) {
         @StringRes int title = R.string.notification_generic_title;
         String description = "";
         @DrawableRes int icon = R.mipmap.launcher;
         @ColorInt int color = ContextCompat.getColor(context, 
R.color.foundation_gray);
 
-        Uri historyUri = uriForPath(n, "Special:History/" + n.title().full());
-        Uri agentUri = uriForPath(n, "User:" + n.agent().name());
+        Uri historyUri = uriForPath(n, "Special:History/" + n.title().full(), 
wiki);
+        Uri agentUri = uriForPath(n, "User:" + n.agent().name(), wiki);
 
         Intent pageIntent = PageActivity.newIntent(context, n.title().full());
 
@@ -85,10 +86,10 @@
         manager.notify(n.id(), builder.build());
     }
 
-    private static Uri uriForPath(@NonNull Notification n, @NonNull String 
path) {
+    private static Uri uriForPath(@NonNull Notification n, @NonNull String 
path, @NonNull WikiSite wiki) {
         return new Uri.Builder()
-                .scheme(WikipediaApp.getInstance().getWikiSite().scheme())
-                .authority(n.isFromWikidata() ? "m.wikidata.org" : 
WikipediaApp.getInstance().getWikiSite().mobileHost())
+                .scheme(wiki.scheme())
+                .authority(n.isFromWikidata() ? "m.wikidata.org" : 
wiki.mobileHost())
                 .appendPath("wiki")
                 .appendPath(path)
                 .build();

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia035d56028c183f90d7cef6d5d2829ef77972ac7
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>

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

Reply via email to