/** * Creates a JSON object that contains all options that are currently in effect for the given Sone * (or overall, if the given Sone is {@code null} ). * * @param currentSone The current Sone (may be {@code null}) * @return The current options */ private static JsonObject createJsonOptions(Sone currentSone) { JsonObject options = new JsonObject(); if (currentSone != null) { options.put( "ShowNotification/NewSones", currentSone.getOptions().getBooleanOption("ShowNotification/NewSones").get()); options.put( "ShowNotification/NewPosts", currentSone.getOptions().getBooleanOption("ShowNotification/NewPosts").get()); options.put( "ShowNotification/NewReplies", currentSone.getOptions().getBooleanOption("ShowNotification/NewReplies").get()); } return options; }
/** * Creates a JSON object from the given notification. * * @param request The request to load the session from * @param notification The notification to create a JSON object * @return The JSON object */ private JsonObject createJsonNotification(FreenetRequest request, Notification notification) { JsonObject jsonNotification = new JsonObject(); jsonNotification.put("id", notification.getId()); StringWriter notificationWriter = new StringWriter(); try { if (notification instanceof TemplateNotification) { TemplateContext templateContext = webInterface .getTemplateContextFactory() .createTemplateContext() .mergeContext(((TemplateNotification) notification).getTemplateContext()); templateContext.set("core", webInterface.getCore()); templateContext.set( "currentSone", webInterface.getCurrentSone(request.getToadletContext(), false)); templateContext.set("localSones", webInterface.getCore().getLocalSones()); templateContext.set("request", request); templateContext.set("currentVersion", SonePlugin.VERSION); templateContext.set( "hasLatestVersion", webInterface.getCore().getUpdateChecker().hasLatestVersion()); templateContext.set( "latestEdition", webInterface.getCore().getUpdateChecker().getLatestEdition()); templateContext.set( "latestVersion", webInterface.getCore().getUpdateChecker().getLatestVersion()); templateContext.set( "latestVersionTime", webInterface.getCore().getUpdateChecker().getLatestVersionDate()); templateContext.set("notification", notification); ((TemplateNotification) notification).render(templateContext, notificationWriter); } else { notification.render(notificationWriter); } } catch (IOException ioe1) { /* StringWriter never throws, ignore. */ } jsonNotification.put("text", notificationWriter.toString()); jsonNotification.put("createdTime", notification.getCreatedTime()); jsonNotification.put("lastUpdatedTime", notification.getLastUpdatedTime()); jsonNotification.put("dismissable", notification.isDismissable()); return jsonNotification; }