diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactDialog.kt b/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactDialog.kt
index ff5f2e959b4fb614a05e801f14c2c8eab8b63580..f2a7fcca1f805fb0081535195e1bcd9efe34e4cb 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactDialog.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactDialog.kt
@@ -71,15 +71,15 @@ fun main() = preview(
     "error type" to PreviewUtils.Values(
         0,
         listOf(
-            OwnLinkError(link),
-            RemoteInvalidError(link),
-            AliasInvalidError(link, ""),
-            LinkInvalidError(link),
-            PublicKeyInvalidError(link),
-            ErrorContactAlreadyExists(link, "David", "chuck"),
-            ErrorPendingAlreadyExists(link, "Frank", "chuck"),
+            OwnLinkError::class.simpleName!!,
+            RemoteInvalidError::class.simpleName!!,
+            AliasInvalidError::class.simpleName!!,
+            LinkInvalidError::class.simpleName!!,
+            PublicKeyInvalidError::class.simpleName!!,
+            ErrorContactAlreadyExists::class.simpleName!!,
+            ErrorPendingAlreadyExists::class.simpleName!!,
         )
-    ) { error -> error.javaClass.simpleName },
+    ),
 ) {
     val localLink = getStringParameter("local link")
     AddContactDialog(
@@ -91,11 +91,26 @@ fun main() = preview(
         setAddContactAlias = { alias -> setStringParameter("alias", alias) },
         handshakeLink = localLink,
         onSubmitAddContactDialog = { setBooleanParameter("error visible", true) },
-        error = if (getBooleanParameter("error visible")) getGenericParameter("error type") else null,
+        error = if (getBooleanParameter("error visible")) mapErrors(getStringParameter("error type")) else null,
         onErrorDialogDismissed = { setBooleanParameter("error visible", false) },
     )
 }
 
+fun PreviewUtils.PreviewScope.mapErrors(name: String?): AddContactError? = when (name) {
+    OwnLinkError::class.simpleName!! -> OwnLinkError(link)
+    RemoteInvalidError::class.simpleName!! -> RemoteInvalidError(link)
+    AliasInvalidError::class.simpleName!! -> AliasInvalidError(link, "")
+    LinkInvalidError::class.simpleName!! -> LinkInvalidError(link)
+    PublicKeyInvalidError::class.simpleName!! -> PublicKeyInvalidError(link)
+    ErrorContactAlreadyExists::class.simpleName!! -> ErrorContactAlreadyExists(
+        link, "David", getStringParameter("alias")
+    )
+    ErrorPendingAlreadyExists::class.simpleName!! -> ErrorPendingAlreadyExists(
+        link, "Frank", getStringParameter("alias")
+    )
+    else -> null
+}
+
 @Composable
 fun AddContactDialog(
     viewModel: AddContactViewModel = viewModel(),
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/PreviewUtils.kt b/src/main/kotlin/org/briarproject/briar/desktop/utils/PreviewUtils.kt
index d4337e68519e1b2e6af584b46e6c090b97496833..cbe270a48448d283db5a339c59574bd806c109f1 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/utils/PreviewUtils.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/utils/PreviewUtils.kt
@@ -65,7 +65,7 @@ object PreviewUtils {
 
         val parameters = mutableMapOf<String, MutableState<Any>>()
 
-        inline fun <reified T> getDatatype(name: String): T {
+        private inline fun <reified T> getDatatype(name: String): T {
             val state = parameters[name] ?: throw IllegalArgumentException("No parameter found with name '$name'")
             if (state.value !is T) throw IllegalArgumentException("Parameter '$name' is not of type ${T::class.simpleName}")
             return state.value as T
@@ -97,8 +97,6 @@ object PreviewUtils {
 
         fun setFloatParameter(name: String, value: Float) = setDatatype(name, value)
 
-        inline fun <reified T : Any> getGenericParameter(name: String) = getDatatype<T>(name)
-
         fun getRandomId() = random.nextBytes(UniqueId.LENGTH)
 
         @Composable
@@ -162,18 +160,18 @@ object PreviewUtils {
         }
 
     @Composable
-    private fun <T> PreviewScope.addDropDownParameter(
+    private fun PreviewScope.addDropDownParameter(
         name: String,
-        initial: Values<T>,
+        initial: Values,
     ) {
         var expanded by remember { mutableStateOf(false) }
         val items = initial.values
         val initialValue = items[initial.initial]
         var selectedIndex by remember { mutableStateOf(initial.initial) }
-        addParameter(name, initialValue!!) { value ->
+        addParameter(name, initialValue) { value ->
             Box(modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.TopStart)) {
                 Text(
-                    initial.toString(items[selectedIndex]),
+                    items[selectedIndex],
                     modifier = Modifier.fillMaxWidth().clickable(onClick = { expanded = true })
                 )
                 DropdownMenu(
@@ -186,10 +184,10 @@ object PreviewUtils {
                             onClick = {
                                 selectedIndex = index
                                 expanded = false
-                                value.value = items[index]!!
+                                value.value = items[index]
                             }
                         ) {
-                            Text(text = initial.toString(s))
+                            Text(text = s)
                         }
                     }
                 }
@@ -222,7 +220,7 @@ object PreviewUtils {
                                 is Long -> scope.addLongParameter(name, initial)
                                 is Float -> scope.addFloatParameter(name, initial)
                                 is FloatSlider -> scope.addFloatSliderParameter(name, initial)
-                                is Values<*> -> scope.addDropDownParameter(name, initial)
+                                is Values -> scope.addDropDownParameter(name, initial)
                                 else -> throw IllegalArgumentException("Type ${initial::class.simpleName} is not supported for previewing.")
                             }
                         }
@@ -246,9 +244,8 @@ object PreviewUtils {
         val max: Float,
     )
 
-    data class Values<T>(
+    data class Values(
         val initial: Int,
-        val values: List<T>,
-        val toString: (T) -> String,
+        val values: List<String>,
     )
 }