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 f2a7fcca1f805fb0081535195e1bcd9efe34e4cb..1ea6c34601a06ec891ca6aa15422238ea3481551 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 @@ -43,10 +43,10 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import org.briarproject.briar.desktop.contact.add.remote.AddContactViewModel.AddContactError import org.briarproject.briar.desktop.contact.add.remote.AddContactViewModel.AliasInvalidError -import org.briarproject.briar.desktop.contact.add.remote.AddContactViewModel.ErrorContactAlreadyExists -import org.briarproject.briar.desktop.contact.add.remote.AddContactViewModel.ErrorPendingAlreadyExists +import org.briarproject.briar.desktop.contact.add.remote.AddContactViewModel.ContactAlreadyExistsError import org.briarproject.briar.desktop.contact.add.remote.AddContactViewModel.LinkInvalidError import org.briarproject.briar.desktop.contact.add.remote.AddContactViewModel.OwnLinkError +import org.briarproject.briar.desktop.contact.add.remote.AddContactViewModel.PendingAlreadyExistsError import org.briarproject.briar.desktop.contact.add.remote.AddContactViewModel.PublicKeyInvalidError import org.briarproject.briar.desktop.contact.add.remote.AddContactViewModel.RemoteInvalidError import org.briarproject.briar.desktop.dialogs.DialogType.ERROR @@ -68,7 +68,7 @@ fun main() = preview( "local link" to link, "alias" to "Alice", "error visible" to false, - "error type" to PreviewUtils.Values( + "error type" to PreviewUtils.DropDownValues( 0, listOf( OwnLinkError::class.simpleName!!, @@ -76,8 +76,8 @@ fun main() = preview( AliasInvalidError::class.simpleName!!, LinkInvalidError::class.simpleName!!, PublicKeyInvalidError::class.simpleName!!, - ErrorContactAlreadyExists::class.simpleName!!, - ErrorPendingAlreadyExists::class.simpleName!!, + ContactAlreadyExistsError::class.simpleName!!, + PendingAlreadyExistsError::class.simpleName!!, ) ), ) { @@ -96,16 +96,16 @@ fun main() = preview( ) } -fun PreviewUtils.PreviewScope.mapErrors(name: String?): AddContactError? = when (name) { +private 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( + ContactAlreadyExistsError::class.simpleName!! -> ContactAlreadyExistsError( link, "David", getStringParameter("alias") ) - ErrorPendingAlreadyExists::class.simpleName!! -> ErrorPendingAlreadyExists( + PendingAlreadyExistsError::class.simpleName!! -> PendingAlreadyExistsError( link, "Frank", getStringParameter("alias") ) else -> null @@ -248,12 +248,12 @@ fun errorMessage(error: AddContactError) = when (error) { ERROR, i18n("error"), i18nF("introduction.error.public_key_invalid", error.link) ) - is ErrorContactAlreadyExists -> { + is ContactAlreadyExistsError -> { val intro = i18nF("introduction.error.contact_already_exists", error.existingName) var explanation = i18nF("introduction.error.duplicate_contact_explainer", error.existingName, error.alias) Triple(WARNING, i18n("introduction.error.adding_failed"), (intro + "\n\n" + explanation)) } - is ErrorPendingAlreadyExists -> { + is PendingAlreadyExistsError -> { val intro = i18nF("introduction.error.pending_contact_already_exists", error.existingAlias) var explanation = i18nF("introduction.error.duplicate_contact_explainer", error.existingAlias, error.alias) Triple(WARNING, i18n("introduction.error.adding_failed"), (intro + "\n\n" + explanation)) diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactViewModel.kt b/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactViewModel.kt index 235d1cec4261fbc4d7d07fd0b5fa8b9e97da2a47..7794117494d78ee68c6300a862657d5c248f946e 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactViewModel.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactViewModel.kt @@ -56,10 +56,10 @@ constructor( data class LinkInvalidError(val link: String) : AddContactError data class PublicKeyInvalidError(val link: String) : AddContactError - data class ErrorContactAlreadyExists(val link: String, val existingName: String, val alias: String) : + data class ContactAlreadyExistsError(val link: String, val existingName: String, val alias: String) : AddContactError - data class ErrorPendingAlreadyExists(val link: String, val existingAlias: String, val alias: String) : + data class PendingAlreadyExistsError(val link: String, val existingAlias: String, val alias: String) : AddContactError override fun onInit() { @@ -150,18 +150,15 @@ constructor( _error.value = PublicKeyInvalidError(link) } /* - TODO: Warn user that the following two errors might be an attack - - Use `e.pendingContact.id.bytes` and `e.pendingContact.alias` to implement the following logic: - https://code.briarproject.org/briar/briar-gtk/-/merge_requests/97 - + TODO: Improve warnings about potential attacks implemented here. + See https://code.briarproject.org/briar/briar-desktop/-/issues/240 */ catch (e: ContactExistsException) { LOG.warn { "Contact already exists: $link" } - _error.value = ErrorContactAlreadyExists(link, e.remoteAuthor.name, alias) + _error.value = ContactAlreadyExistsError(link, e.remoteAuthor.name, alias) } catch (e: PendingContactExistsException) { LOG.warn { "Pending contact already exists: $link" } - _error.value = ErrorPendingAlreadyExists(link, e.pendingContact.alias, alias) + _error.value = PendingAlreadyExistsError(link, e.pendingContact.alias, alias) } } } 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 cbe270a48448d283db5a339c59574bd806c109f1..6e5bc55029bbf847d37683e64f283e69b256bd6f 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/utils/PreviewUtils.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/utils/PreviewUtils.kt @@ -162,7 +162,7 @@ object PreviewUtils { @Composable private fun PreviewScope.addDropDownParameter( name: String, - initial: Values, + initial: DropDownValues, ) { var expanded by remember { mutableStateOf(false) } val items = initial.values @@ -220,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 DropDownValues -> scope.addDropDownParameter(name, initial) else -> throw IllegalArgumentException("Type ${initial::class.simpleName} is not supported for previewing.") } } @@ -244,7 +244,7 @@ object PreviewUtils { val max: Float, ) - data class Values( + data class DropDownValues( val initial: Int, val values: List<String>, )