X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FGetNotificationsAjaxPage.java;h=2264b2e5e9d45201c62eb1fdd6320f4b0e72eea4;hb=728eb9dfab6b9284dbb69701fa8ba4a9b072e7ca;hp=de2f8f89612f02d56a1e9b19a6a6c1190612f472;hpb=1c8d22496d1b1c26502d0adf2daab1605fa6e7fc;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/web/ajax/GetNotificationsAjaxPage.java b/src/main/java/net/pterodactylus/sone/web/ajax/GetNotificationsAjaxPage.java index de2f8f8..2264b2e 100644 --- a/src/main/java/net/pterodactylus/sone/web/ajax/GetNotificationsAjaxPage.java +++ b/src/main/java/net/pterodactylus/sone/web/ajax/GetNotificationsAjaxPage.java @@ -20,6 +20,7 @@ package net.pterodactylus.sone.web.ajax; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Set; import net.pterodactylus.sone.web.WebInterface; import net.pterodactylus.util.json.JsonArray; @@ -34,9 +35,10 @@ import net.pterodactylus.util.notify.Notification; public class GetNotificationsAjaxPage extends JsonPage { /** - * TODO + * Creates a new “get notifications” AJAX handler. * * @param webInterface + * The Sone web interface */ public GetNotificationsAjaxPage(WebInterface webInterface) { super("ajax/getNotifications.ajax", webInterface); @@ -52,19 +54,18 @@ public class GetNotificationsAjaxPage extends JsonPage { @Override protected JsonObject createJsonObject(Request request) { List notifications = new ArrayList(webInterface.getNotifications().getChangedNotifications()); + Set removedNotifications = webInterface.getNotifications().getRemovedNotifications(); Collections.sort(notifications, Notification.LAST_UPDATED_TIME_SORTER); JsonObject result = createSuccessJsonObject(); JsonArray jsonNotifications = new JsonArray(); for (Notification notification : notifications) { - JsonObject jsonNotification = new JsonObject(); - jsonNotification.put("id", notification.getId()); - jsonNotification.put("text", notification.toString()); - jsonNotification.put("createdTime", notification.getCreatedTime()); - jsonNotification.put("lastUpdatedTime", notification.getLastUpdatedTime()); - jsonNotification.put("dismissable", notification.isDismissable()); - jsonNotifications.add(jsonNotification); + jsonNotifications.add(createJsonNotification(notification)); } - return result.put("notifications", jsonNotifications); + JsonArray jsonRemovedNotifications = new JsonArray(); + for (Notification notification : removedNotifications) { + jsonRemovedNotifications.add(createJsonNotification(notification)); + } + return result.put("notifications", jsonNotifications).put("removedNotifications", jsonRemovedNotifications); } /** @@ -75,4 +76,25 @@ public class GetNotificationsAjaxPage extends JsonPage { return false; } + // + // PRIVATE METHODS + // + + /** + * Creates a JSON object from the given notification. + * + * @param notification + * The notification to create a JSON object + * @return The JSON object + */ + private static JsonObject createJsonNotification(Notification notification) { + JsonObject jsonNotification = new JsonObject(); + jsonNotification.put("id", notification.getId()); + jsonNotification.put("text", notification.toString()); + jsonNotification.put("createdTime", notification.getCreatedTime()); + jsonNotification.put("lastUpdatedTime", notification.getLastUpdatedTime()); + jsonNotification.put("dismissable", notification.isDismissable()); + return jsonNotification; + } + }