From: David ‘Bombe’ Roden Date: Wed, 11 Dec 2019 17:22:33 +0000 (+0100) Subject: ♻️ Move config-not-read notification into handler X-Git-Tag: v81^2~5^2~48 X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=commitdiff_plain;h=b31f0234988a509ca831785c87433ab264374d0a ♻️ Move config-not-read notification into handler --- diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java index 7189af3..cefbfa9 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -386,21 +386,6 @@ public class WebInterface implements SessionProvider { return from(allNewReplies).filter(replyVisibilityFilter.isVisible(currentSone)).toSet(); } - /** - * 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 = loaders.loadTemplate("/templates/notify/configNotReadNotification.html"); - Notification configNotReadNotification = new TemplateNotification("config-not-read-notification", configNotReadNotificationTemplate); - notificationManager.addNotification(configNotReadNotification); - } - } - // // PRIVATE ACCESSORS // diff --git a/src/main/kotlin/net/pterodactylus/sone/web/notification/ConfigNotReadHandler.kt b/src/main/kotlin/net/pterodactylus/sone/web/notification/ConfigNotReadHandler.kt index e2a1ada..46961c0 100644 --- a/src/main/kotlin/net/pterodactylus/sone/web/notification/ConfigNotReadHandler.kt +++ b/src/main/kotlin/net/pterodactylus/sone/web/notification/ConfigNotReadHandler.kt @@ -20,11 +20,12 @@ package net.pterodactylus.sone.web.notification import com.google.common.eventbus.* import net.pterodactylus.sone.core.event.* import net.pterodactylus.util.notify.* +import javax.inject.* /** * Handler for [ConfigNotRead] events. */ -class ConfigNotReadHandler(private val notificationManager: NotificationManager, private val notification: TemplateNotification) { +class ConfigNotReadHandler @Inject constructor(private val notificationManager: NotificationManager, @Named("configNotRead") private val notification: TemplateNotification) { @Subscribe fun configNotRead(configNotRead: ConfigNotRead) { diff --git a/src/main/kotlin/net/pterodactylus/sone/web/notification/NotificationHandler.kt b/src/main/kotlin/net/pterodactylus/sone/web/notification/NotificationHandler.kt index 2da6fc8..dc60079 100644 --- a/src/main/kotlin/net/pterodactylus/sone/web/notification/NotificationHandler.kt +++ b/src/main/kotlin/net/pterodactylus/sone/web/notification/NotificationHandler.kt @@ -32,5 +32,6 @@ class NotificationHandler @Inject constructor( soneLockedHandler: SoneLockedHandler, newVersionHandler: NewVersionHandler, imageInsertHandler: ImageInsertHandler, - firstStartHandler: FirstStartHandler + firstStartHandler: FirstStartHandler, + configNotReadHandler: ConfigNotReadHandler ) diff --git a/src/main/kotlin/net/pterodactylus/sone/web/notification/NotificationHandlerModule.kt b/src/main/kotlin/net/pterodactylus/sone/web/notification/NotificationHandlerModule.kt index 711d902..a3c10a6 100644 --- a/src/main/kotlin/net/pterodactylus/sone/web/notification/NotificationHandlerModule.kt +++ b/src/main/kotlin/net/pterodactylus/sone/web/notification/NotificationHandlerModule.kt @@ -45,6 +45,7 @@ class NotificationHandlerModule : AbstractModule() { bind().asSingleton() bind().asSingleton() bind().asSingleton() + bind().asSingleton() } @Provides @@ -113,6 +114,12 @@ class NotificationHandlerModule : AbstractModule() { fun getFirstStartNotification(loaders: Loaders) = TemplateNotification("first-start-notification", loaders.loadTemplate("/templates/notify/firstStartNotification.html")) + @Provides + @Singleton + @Named("configNotRead") + fun getConfigNotReadNotification(loaders: Loaders) = + TemplateNotification("config-not-read-notification", loaders.loadTemplate("/templates/notify/configNotReadNotification.html")) + private inline fun bind(): AnnotatedBindingBuilder = bind(T::class.java) private fun ScopedBindingBuilder.asSingleton() = `in`(Singleton::class.java) diff --git a/src/test/kotlin/net/pterodactylus/sone/web/notification/NotificationHandlerModuleTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/notification/NotificationHandlerModuleTest.kt index 8a4bcc9..a061230 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/notification/NotificationHandlerModuleTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/notification/NotificationHandlerModuleTest.kt @@ -343,4 +343,31 @@ class NotificationHandlerModuleTest { injector.verifySingletonInstance() } + @Test + fun `config-not-read notification is created as singleton`() { + injector.verifySingletonInstance(named("configNotRead")) + } + + @Test + fun `config-not-read notification has correct ID `() { + assertThat(injector.getInstance(named("configNotRead")).id, equalTo("config-not-read-notification")) + } + + @Test + fun `config-not-read notification is dismissable`() { + assertThat(injector.getInstance(named("configNotRead")).isDismissable, equalTo(true)) + } + + @Test + fun `config-not-read notification loads correct template`() { + loaders.templates += "/templates/notify/configNotReadNotification.html" to "1".asTemplate() + val notification = injector.getInstance(named("configNotRead")) + assertThat(notification.render(), equalTo("1")) + } + + @Test + fun `config-not-read handler is created as singleton`() { + injector.verifySingletonInstance() + } + }