From: David ‘Bombe’ Roden Date: Sun, 9 Feb 2020 10:42:34 +0000 (+0100) Subject: 🔀 Merge “feature/notification-handler” into “next” X-Git-Tag: v81^2~5 X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=f98ec5222b0611a7e473c01cb6ef3a4ef73bc294;hp=4af887c75667793c197b564f16b7e95b1f63cbc7;p=Sone.git 🔀 Merge “feature/notification-handler” into “next” --- diff --git a/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt b/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt index 5222b94..843e6e3 100644 --- a/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt +++ b/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt @@ -18,6 +18,7 @@ package net.pterodactylus.sone.template import net.pterodactylus.sone.core.* import net.pterodactylus.sone.data.* +import net.pterodactylus.sone.utils.* import net.pterodactylus.util.template.* /** @@ -39,9 +40,8 @@ class PostAccessor(private val core: Core) : ReflectionAccessor() { "liked" -> templateContext.currentSone?.isLikedPostId(post.id) ?: false "new" -> !post.isKnown "bookmarked" -> core.isBookmarked(post) - "replySone" -> core.getReplies(post) - .lastOrNull { it.sone.isLocal } - ?.sone + "replySone" -> core.getReplies(post).lastOrNull { it.sone.isLocal }?.sone + ?: post.recipient.let { it.takeIf { it.isLocal } } ?: post.sone.takeIf { it.isLocal } ?: templateContext.currentSone else -> super.get(templateContext, `object`, member) diff --git a/src/main/resources/i18n/sone.de.properties b/src/main/resources/i18n/sone.de.properties index a448377..e17e995 100644 --- a/src/main/resources/i18n/sone.de.properties +++ b/src/main/resources/i18n/sone.de.properties @@ -26,6 +26,8 @@ Navigation.Menu.Sone.Item.Rescue.Name=Sonerettung Navigation.Menu.Sone.Item.Rescue.Tooltip=Rettet Ihre Sone Navigation.Menu.Sone.Item.About.Name=Über Sone Navigation.Menu.Sone.Item.About.Tooltip=Informationen über Sone +Navigation.Menu.Sone.Item.Metrics.Name=Metriken +Navigation.Menu.Sone.Item.Metrics.Tooltip=Von Sone gesammelte Metriken Page.About.Title=Über - Sone Page.About.Page.Title=Über @@ -159,7 +161,7 @@ Page.EditProfileField.Page.Title=Benutzerdefiniertes Feld bearbeiten Page.EditProfileField.Text=Bitte geben Sie einen neuen Namen für dieses benutzerdefinierte Feld ein. Page.EditProfileField.Error.DuplicateFieldName=Der von Ihnen eingegebene Feldname existiert bereits. Page.EditProfileField.Button.Save=Ändern -Page.EditProfileField.Button.Reset=Aten Namen wiederherstellen +Page.EditProfileField.Button.Reset=Alten Namen wiederherstellen Page.EditProfileField.Button.Cancel=Namen nicht ändern Page.DeleteProfileField.Title=Benutzerdefiniertes Feld löschen - Sone @@ -325,7 +327,7 @@ Page.Metrics.Title=Metriken Page.Metrics.Page.Title=Metriken Page.Metrics.SoneInsertDuration.Title=Hochladedauer einer Sone Page.Metrics.SoneParseDuration.Title=Parsdauer einer Sone -Page.Metrics.ConfigurationSavingDuration.Title=Speicherdauer der Konfiguration +Page.Metrics.ConfigurationSaveDuration.Title=Konfigurationsspeicherdauer View.Search.Button.Search=Suchen @@ -461,4 +463,4 @@ Notification.Mention.Text=Sie wurden in diesen Nachrichten erwähnt: Notification.SoneIsInserting.Text=Ihre Sone sone://{0} wird jetzt hoch geladen. Notification.SoneIsInserted.Text=Ihre Sone sone://{0} wurde in {1,number} {1,choice,0#Sekunden|1#Sekunde|1(localSone)) + } + + + @Test fun `accessor returns other properties`() { assertThat(accessor[null, post, "hashCode"], equalTo(post.hashCode())) } @@ -179,9 +188,10 @@ private val templateContext = TemplateContext().apply { this["currentSone"] = currentSone } -private fun mockPostFrom(sone: Sone) = mock().apply { +private fun mockPostFrom(sone: Sone, recipient: Sone? = null) = mock().apply { whenever(id).thenReturn("post-id") whenever(this.sone).thenReturn(sone) + whenever(this.recipient).thenReturn(recipient.asOptional()) } private fun mockReplyFrom(sone: Sone) = mock().apply { whenever(this.sone).thenReturn(sone) }