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