♻️ Extract handler for sone-locked notification
[Sone.git] / src / main / java / net / pterodactylus / sone / web / WebInterface.java
index 4ed49df..b4c5942 100644 (file)
@@ -35,6 +35,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.logging.Logger;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
+import javax.inject.Named;
 
 import net.pterodactylus.sone.core.Core;
 import net.pterodactylus.sone.core.ElementLoader;
@@ -178,9 +179,6 @@ public class WebInterface implements SessionProvider {
        /** Sone locked notification ticker objects. */
        private final Map<Sone, ScheduledFuture<?>> lockedSonesTickerObjects = Collections.synchronizedMap(new HashMap<Sone, ScheduledFuture<?>>());
 
-       /** The “Sone locked” notification. */
-       private final ListNotification<Sone> lockedSonesNotification;
-
        /** The “new version” notification. */
        private final TemplateNotification newVersionNotification;
 
@@ -205,7 +203,7 @@ public class WebInterface implements SessionProvider {
                        RenderFilter renderFilter,
                        LinkedElementRenderFilter linkedElementRenderFilter,
                        PageToadletRegistry pageToadletRegistry, MetricRegistry metricRegistry, Translation translation, L10nFilter l10nFilter,
-                       NotificationManager notificationManager) {
+                       NotificationManager notificationManager, @Named("newRemotePost") ListNotification<Post> newPostNotification) {
                this.sonePlugin = sonePlugin;
                this.loaders = loaders;
                this.listNotificationFilter = listNotificationFilter;
@@ -222,6 +220,7 @@ public class WebInterface implements SessionProvider {
                this.l10nFilter = l10nFilter;
                this.translation = translation;
                this.notificationManager = notificationManager;
+               this.newPostNotification = newPostNotification;
                formPassword = sonePlugin.pluginRespirator().getToadletContainer().getFormPassword();
                soneTextParser = new SoneTextParser(getCore(), getCore());
 
@@ -230,9 +229,6 @@ public class WebInterface implements SessionProvider {
                templateContextFactory.addTemplateObject("formPassword", formPassword);
 
                /* create notifications. */
-               Template newPostNotificationTemplate = loaders.loadTemplate("/templates/notify/newPostNotification.html");
-               newPostNotification = new ListNotification<>("new-post-notification", "posts", newPostNotificationTemplate, false);
-
                Template localPostNotificationTemplate = loaders.loadTemplate("/templates/notify/newPostNotification.html");
                localPostNotification = new ListNotification<>("local-post-notification", "posts", localPostNotificationTemplate, false);
 
@@ -245,9 +241,6 @@ public class WebInterface implements SessionProvider {
                Template mentionNotificationTemplate = loaders.loadTemplate("/templates/notify/mentionNotification.html");
                mentionNotification = new ListNotification<>("mention-notification", "posts", mentionNotificationTemplate, false);
 
-               Template lockedSonesTemplate = loaders.loadTemplate("/templates/notify/lockedSonesNotification.html");
-               lockedSonesNotification = new ListNotification<>("sones-locked-notification", "sones", lockedSonesTemplate);
-
                Template newVersionTemplate = loaders.loadTemplate("/templates/notify/newVersionNotification.html");
                newVersionNotification = new TemplateNotification("new-version-notification", newVersionTemplate);
 
@@ -396,16 +389,6 @@ public class WebInterface implements SessionProvider {
                return formPassword;
        }
 
-       /**
-        * Returns the posts that have been announced as new in the
-        * {@link #newPostNotification}.
-        *
-        * @return The new posts
-        */
-       public Set<Post> getNewPosts() {
-               return ImmutableSet.<Post> builder().addAll(newPostNotification.getElements()).addAll(localPostNotification.getElements()).build();
-       }
-
        @Nonnull
        public Collection<Post> getNewPosts(@Nullable Sone currentSone) {
                Set<Post> allNewPosts = ImmutableSet.<Post> builder()
@@ -770,39 +753,6 @@ public class WebInterface implements SessionProvider {
        }
 
        /**
-        * Notifies the web interface that a Sone was locked.
-        *
-        * @param soneLockedEvent
-        *            The event
-        */
-       @Subscribe
-       public void soneLocked(SoneLockedEvent soneLockedEvent) {
-               final Sone sone = soneLockedEvent.getSone();
-               ScheduledFuture<?> tickerObject = ticker.schedule(new Runnable() {
-
-                       @Override
-                       @SuppressWarnings("synthetic-access")
-                       public void run() {
-                               lockedSonesNotification.add(sone);
-                               notificationManager.addNotification(lockedSonesNotification);
-                       }
-               }, 5, TimeUnit.MINUTES);
-               lockedSonesTickerObjects.put(sone, tickerObject);
-       }
-
-       /**
-        * Notifies the web interface that a Sone was unlocked.
-        *
-        * @param soneUnlockedEvent
-        *            The event
-        */
-       @Subscribe
-       public void soneUnlocked(SoneUnlockedEvent soneUnlockedEvent) {
-               lockedSonesNotification.remove(soneUnlockedEvent.getSone());
-               lockedSonesTickerObjects.remove(soneUnlockedEvent.getSone()).cancel(false);
-       }
-
-       /**
         * Notifies the web interface that a {@link Sone} is being inserted.
         *
         * @param soneInsertingEvent