📄 Update year in file headers
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / notification / NewRemotePostHandler.kt
index acf9980..91eaae0 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * Sone - NewRemotePostHandler.kt - Copyright © 2019 David ‘Bombe’ Roden
+ * Sone - NewRemotePostHandler.kt - Copyright © 2019–2020 David ‘Bombe’ Roden
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,19 +22,32 @@ import net.pterodactylus.sone.core.event.*
 import net.pterodactylus.sone.data.*
 import net.pterodactylus.sone.notify.*
 import net.pterodactylus.util.notify.*
+import javax.inject.*
 
 /**
  * Handler for [NewPostFoundEvent]s that adds the new post to the “new posts” notification and
  * displays the notification if the “first start” notification is not being shown.
  */
-class NewRemotePostHandler(private val notificationManager: NotificationManager, private val notification: ListNotification<Post>) {
+class NewRemotePostHandler @Inject constructor(private val notificationManager: NotificationManager, @Named("newRemotePost") private val notification: ListNotification<Post>) {
 
        @Subscribe
        fun newPostFound(newPostFoundEvent: NewPostFoundEvent) {
-               notification.add(newPostFoundEvent.post)
-               if (!notificationManager.hasFirstStartNotification()) {
-                       notificationManager.addNotification(notification)
+               if (!newPostFoundEvent.post.sone.isLocal) {
+                       notification.add(newPostFoundEvent.post)
+                       if (!notificationManager.hasFirstStartNotification()) {
+                               notificationManager.addNotification(notification)
+                       }
                }
        }
 
+       @Subscribe
+       fun postRemoved(event: PostRemovedEvent) {
+               notification.remove(event.post)
+       }
+
+       @Subscribe
+       fun postMarkedKnown(event: MarkPostKnownEvent) {
+               notification.remove(event.post)
+       }
+
 }