From 96436912bb8eecd10fbe732430f2e4dffa361230 Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Fri, 25 Apr 2025 15:52:30 +0200 Subject: [PATCH] Safe checked casting --- .../main/java/com/vitorpamplona/amethyst/model/Note.kt | 9 ++++++++- .../loggedIn/settings/dal/HiddenAccountsFeedViewModel.kt | 9 +++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt index e511cd844..a79d677f2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Note.kt @@ -926,7 +926,14 @@ open class Note( } } - fun toEventHint() = (event as? T)?.let { EventHintBundle(it, relayHintUrl(), author?.bestRelayHint()) } + inline fun toEventHint(): EventHintBundle? { + val safeEvent = event + return if (safeEvent is T) { + EventHintBundle(safeEvent, relayHintUrl(), author?.bestRelayHint()) + } else { + null + } + } fun toMarkedETag(marker: MarkedETag.MARKER): MarkedETag { val noteEvent = event diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/dal/HiddenAccountsFeedViewModel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/dal/HiddenAccountsFeedViewModel.kt index 8b25172b3..0de1d2933 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/dal/HiddenAccountsFeedViewModel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/dal/HiddenAccountsFeedViewModel.kt @@ -31,7 +31,12 @@ class HiddenAccountsFeedViewModel( class Factory( val account: Account, ) : ViewModelProvider.Factory { - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T = HiddenAccountsFeedViewModel(account) as T + override fun create(modelClass: Class): T { + if (modelClass.isAssignableFrom(HiddenAccountsFeedViewModel::class.java)) { + @Suppress("UNCHECKED_CAST") + return HiddenAccountsFeedViewModel(account) as T + } + throw IllegalArgumentException("Unknown ViewModel class: ${modelClass.name}") + } } }