Code to retrive unknown notification and UI (#2340)

* request change, changed notification icon

* Completed task 1 of the work

* commit changes

* commit changes

* updated notification class

* before notification id

* gradle reverted

* Minor changes to mark notifications as read

* commit changes

* delete on swipe

* notification count

* sipe to delete

* changes

* worked on changes requested

* commit changes

* Fix notification count

* reviewed changes

* round icon, swipe with icon

* Fix pending NPE issues with notifications

* final commit

* graddle changes

* removed changes for testing
This commit is contained in:
Vanshika Arora 2019-02-02 19:21:58 +05:30 committed by Vivek Maskara
parent 9451b00a15
commit 1b62ac4d2d
22 changed files with 381 additions and 195 deletions

View file

@ -54,6 +54,7 @@ import fr.free.nrw.commons.notification.Notification;
import fr.free.nrw.commons.notification.NotificationUtils;
import fr.free.nrw.commons.utils.ConfigUtils;
import fr.free.nrw.commons.utils.DateUtils;
import fr.free.nrw.commons.utils.StringUtils;
import fr.free.nrw.commons.utils.ViewUtil;
import in.yuvi.http.fluent.Http;
import io.reactivex.Observable;
@ -82,7 +83,7 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi {
private Gson gson;
private final OkHttpClient okHttpClient;
private final String WIKIMEDIA_CAMPAIGNS_BASE_URL =
"https://raw.githubusercontent.com/commons-app/campaigns/master/campaigns.json";
"https://raw.githubusercontent.com/commons-app/campaigns/master/campaigns.json";
private final String ERROR_CODE_BAD_TOKEN = "badtoken";
@ -587,6 +588,7 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi {
.param("meta", "notifications")
.param("notformat", "model")
.param("notwikis", "wikidatawiki|commonswiki|enwiki")
.param("notfilter","!read")
.get()
.getNode("/api/query/notifications/list");
} catch (IOException e) {
@ -599,11 +601,26 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi {
|| notificationNode.getDocument().getChildNodes().getLength() == 0) {
return new ArrayList<>();
}
NodeList childNodes = notificationNode.getDocument().getChildNodes();
return NotificationUtils.getNotificationsFromList(context, childNodes);
}
@Override
public boolean markNotificationAsRead(Notification notification) throws IOException {
Timber.d("Trying to mark notification as read: %s", notification.toString());
String result = api.action("echomarkread")
.param("token", getEditToken())
.param("list", notification.notificationId)
.post()
.getString("/api/query/echomarkread/@result");
if (StringUtils.isNullOrWhiteSpace(result)) {
return false;
}
return result.equals("success");
}
/**
* The method takes categoryName as input and returns a List of Subcategories
* It uses the generator query API to get the subcategories in a category, 500 at a time.

View file

@ -84,6 +84,9 @@ public interface MediaWikiApi {
@NonNull
List<Notification> getNotifications() throws IOException;
@NonNull
boolean markNotificationAsRead(Notification notification) throws IOException;
@NonNull
Observable<String> searchTitles(String title, int searchCatsLimit);