2 * Sone - SoneInsertHandler.kt - Copyright © 2020 David ‘Bombe’ Roden
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 package net.pterodactylus.sone.web.notification
20 import com.google.common.eventbus.*
21 import net.pterodactylus.sone.core.event.*
22 import net.pterodactylus.sone.data.*
23 import net.pterodactylus.util.notify.*
27 * Handler for all notifications concerning Sone-insert events.
29 class SoneInsertHandler @Inject constructor(private val notificationManager: NotificationManager, private val soneNotifications: SoneInsertNotificationSupplier) {
32 fun soneInserting(event: SoneInsertingEvent) {
33 showNotification(event.sone, "inserting")
37 fun soneInserted(event: SoneInsertedEvent) {
38 showNotification(event.sone, "inserted", "insertDuration" to event.insertDuration / 1000)
42 fun soneInsertAborted(event: SoneInsertAbortedEvent) {
43 showNotification(event.sone, "insert-aborted")
46 private fun showNotification(sone: Sone, status: String, vararg templateVariables: Pair<String, Any>) {
47 if (sone.options.isSoneInsertNotificationEnabled) {
48 soneNotifications(sone).let { notification ->
49 notification["soneStatus"] = status
50 templateVariables.forEach { notification[it.first] = it.second }
51 notificationManager.addNotification(notification)
58 typealias SoneInsertNotificationSupplier = (@JvmSuppressWildcards Sone) -> @JvmSuppressWildcards TemplateNotification