X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FGetStatusAjaxPage.java;h=a358fb1df4fa65b9eed1b0068bdaecfb94c1611b;hb=3ea1ec9e8259fe2808fcaadcf7db2e22fd81ad2b;hp=831bb6f44bbdf454fb8ffca39ffd3c0e455540de;hpb=80822a0b544648746b293b562eed1da88e439991;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/web/ajax/GetStatusAjaxPage.java b/src/main/java/net/pterodactylus/sone/web/ajax/GetStatusAjaxPage.java index 831bb6f..a358fb1 100644 --- a/src/main/java/net/pterodactylus/sone/web/ajax/GetStatusAjaxPage.java +++ b/src/main/java/net/pterodactylus/sone/web/ajax/GetStatusAjaxPage.java @@ -22,9 +22,12 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; +import java.util.HashSet; import java.util.List; import java.util.Set; +import net.pterodactylus.sone.data.Post; +import net.pterodactylus.sone.data.Reply; import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.template.SoneAccessor; import net.pterodactylus.sone.web.WebInterface; @@ -50,7 +53,7 @@ public class GetStatusAjaxPage extends JsonPage { * The Sone web interface */ public GetStatusAjaxPage(WebInterface webInterface) { - super("ajax/getStatus.ajax", webInterface); + super("getStatus.ajax", webInterface); } /** @@ -60,9 +63,15 @@ public class GetStatusAjaxPage extends JsonPage { protected JsonObject createJsonObject(Request request) { /* load Sones. */ boolean loadAllSones = Boolean.parseBoolean(request.getHttpRequest().getParam("loadAllSones", "true")); - Set sones = loadAllSones ? webInterface.getCore().getSones() : Collections.singleton(getCurrentSone(request.getToadletContext())); + Set sones = new HashSet(Collections.singleton(getCurrentSone(request.getToadletContext(), false))); + if (loadAllSones) { + sones.addAll(webInterface.getCore().getSones()); + } JsonArray jsonSones = new JsonArray(); for (Sone sone : sones) { + if (sone == null) { + continue; + } JsonObject jsonSone = createJsonSone(sone); jsonSones.add(jsonSone); } @@ -78,7 +87,29 @@ public class GetStatusAjaxPage extends JsonPage { for (Notification notification : removedNotifications) { jsonRemovedNotifications.add(createJsonNotification(notification)); } - return createSuccessJsonObject().put("sones", jsonSones).put("notifications", jsonNotifications).put("removedNotifications", jsonRemovedNotifications); + /* load new posts. */ + Set newPosts = webInterface.getNewPosts(); + JsonArray jsonPosts = new JsonArray(); + for (Post post : newPosts) { + JsonObject jsonPost = new JsonObject(); + jsonPost.put("id", post.getId()); + jsonPost.put("sone", post.getSone().getId()); + jsonPost.put("recipient", (post.getRecipient() != null) ? post.getRecipient().getId() : null); + jsonPost.put("time", post.getTime()); + jsonPosts.add(jsonPost); + } + /* load new replies. */ + Set newReplies = webInterface.getNewReplies(); + JsonArray jsonReplies = new JsonArray(); + for (Reply reply : newReplies) { + JsonObject jsonReply = new JsonObject(); + jsonReply.put("id", reply.getId()); + jsonReply.put("sone", reply.getSone().getId()); + jsonReply.put("post", reply.getPost().getId()); + jsonReply.put("postSone", reply.getPost().getSone().getId()); + jsonReplies.add(jsonReply); + } + return createSuccessJsonObject().put("sones", jsonSones).put("notifications", jsonNotifications).put("removedNotifications", jsonRemovedNotifications).put("newPosts", jsonPosts).put("newReplies", jsonReplies); } /**