X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebInterface.java;h=76a18f9ac5dc9504fcf3964695a2a3f5fa8af40a;hb=636395f003374b2ce296d96c65a8250bc3ea6abc;hp=75b218cbd8a01f7e19d335d6287ba6f4eb9c7d51;hpb=31b4f988a9c7cc2b36006e3249e3ba644beb99f6;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java index 75b218c..76a18f9 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -70,6 +70,7 @@ import net.pterodactylus.sone.web.page.PageToadlet; import net.pterodactylus.sone.web.page.PageToadletFactory; import net.pterodactylus.sone.web.page.StaticPage; import net.pterodactylus.util.logging.Logging; +import net.pterodactylus.util.notify.Notification; import net.pterodactylus.util.notify.NotificationManager; import net.pterodactylus.util.notify.TemplateNotification; import net.pterodactylus.util.template.DateFilter; @@ -244,6 +245,51 @@ public class WebInterface implements CoreListener { return new HashSet(newReplyNotification.getElements()); } + /** + * Sets whether the current start of the plugin is the first start. It is + * considered a first start if the configuration file does not exist. + * + * @param firstStart + * {@code true} if no configuration file existed when Sone was + * loaded, {@code false} otherwise + */ + public void setFirstStart(boolean firstStart) { + if (firstStart) { + Template firstStartNotificationTemplate = new Template(createReader("/templates/notify/firstStartNotification.html")); + Notification firstStartNotification = new TemplateNotification("first-start-notification", firstStartNotificationTemplate); + notificationManager.addNotification(firstStartNotification); + } + } + + /** + * Sets whether Sone was started with a fresh configuration file. + * + * @param newConfig + * {@code true} if Sone was started with a fresh configuration, + * {@code false} if the existing configuration could be read + */ + public void setNewConfig(boolean newConfig) { + if (newConfig && hasFirstStartNotification()) { + Template configNotReadNotificationTemplate = new Template(createReader("/templates/notify/configNotReadNotification.html")); + Notification configNotReadNotification = new TemplateNotification("config-not-read-notification", configNotReadNotificationTemplate); + notificationManager.addNotification(configNotReadNotification); + } + } + + // + // PRIVATE ACCESSORS + // + + /** + * Returns whether the first start notification is currently displayed. + * + * @return {@code true} if the first-start notification is currently + * displayed, {@code false} otherwise + */ + private boolean hasFirstStartNotification() { + return notificationManager.getNotification("first-start-notification") != null; + } + // // ACTIONS // @@ -442,7 +488,9 @@ public class WebInterface implements CoreListener { @Override public void newSoneFound(Sone sone) { newSoneNotification.add(sone); - notificationManager.addNotification(newSoneNotification); + if (!hasFirstStartNotification()) { + notificationManager.addNotification(newSoneNotification); + } } /** @@ -451,7 +499,9 @@ public class WebInterface implements CoreListener { @Override public void newPostFound(Post post) { newPostNotification.add(post); - notificationManager.addNotification(newPostNotification); + if (!hasFirstStartNotification()) { + notificationManager.addNotification(newPostNotification); + } } /** @@ -463,7 +513,9 @@ public class WebInterface implements CoreListener { return; } newReplyNotification.add(reply); - notificationManager.addNotification(newReplyNotification); + if (!hasFirstStartNotification()) { + notificationManager.addNotification(newReplyNotification); + } } /** @@ -491,6 +543,22 @@ public class WebInterface implements CoreListener { } /** + * {@inheritDoc} + */ + @Override + public void postRemoved(Post post) { + /* TODO */ + } + + /** + * {@inheritDoc} + */ + @Override + public void replyRemoved(Reply reply) { + /* TODO */ + } + + /** * Template provider implementation that uses * {@link WebInterface#createReader(String)} to load templates for * inclusion.