Safe checked casting

This commit is contained in:
David Kaspar
2025-04-25 15:52:30 +02:00
parent 97290cea48
commit 96436912bb
2 changed files with 15 additions and 3 deletions
@@ -926,7 +926,14 @@ open class Note(
}
}
fun <T : Event> toEventHint() = (event as? T)?.let { EventHintBundle(it, relayHintUrl(), author?.bestRelayHint()) }
inline fun <reified T : Event> toEventHint(): EventHintBundle<T>? {
val safeEvent = event
return if (safeEvent is T) {
EventHintBundle(safeEvent, relayHintUrl(), author?.bestRelayHint())
} else {
null
}
}
fun toMarkedETag(marker: MarkedETag.MARKER): MarkedETag {
val noteEvent = event
@@ -31,7 +31,12 @@ class HiddenAccountsFeedViewModel(
class Factory(
val account: Account,
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T = HiddenAccountsFeedViewModel(account) as T
override fun <T : ViewModel> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(HiddenAccountsFeedViewModel::class.java)) {
@Suppress("UNCHECKED_CAST")
return HiddenAccountsFeedViewModel(account) as T
}
throw IllegalArgumentException("Unknown ViewModel class: ${modelClass.name}")
}
}
}