diff options
Diffstat (limited to 'ui/src/main/java/com/wireguard/android/fragment/ConfigNamingDialogFragment.kt')
-rw-r--r-- | ui/src/main/java/com/wireguard/android/fragment/ConfigNamingDialogFragment.kt | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/ui/src/main/java/com/wireguard/android/fragment/ConfigNamingDialogFragment.kt b/ui/src/main/java/com/wireguard/android/fragment/ConfigNamingDialogFragment.kt index d1b01944..12406df2 100644 --- a/ui/src/main/java/com/wireguard/android/fragment/ConfigNamingDialogFragment.kt +++ b/ui/src/main/java/com/wireguard/android/fragment/ConfigNamingDialogFragment.kt @@ -16,6 +16,9 @@ import com.wireguard.android.R import com.wireguard.android.databinding.ConfigNamingDialogFragmentBinding import com.wireguard.config.BadConfigException import com.wireguard.config.Config +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch import java.io.ByteArrayInputStream import java.io.IOException import java.nio.charset.StandardCharsets @@ -28,11 +31,12 @@ class ConfigNamingDialogFragment : DialogFragment() { private fun createTunnelAndDismiss() { binding?.let { val name = it.tunnelNameText.text.toString() - Application.getTunnelManager().create(name, config).whenComplete { tunnel, throwable -> - if (tunnel != null) { + GlobalScope.launch(Dispatchers.Main.immediate) { + try { + Application.getTunnelManager().create(name, config) dismiss() - } else { - it.tunnelNameTextLayout.error = throwable.message + } catch (e: Throwable) { + it.tunnelNameTextLayout.error = e.message } } } @@ -49,7 +53,7 @@ class ConfigNamingDialogFragment : DialogFragment() { val configBytes = configText!!.toByteArray(StandardCharsets.UTF_8) config = try { Config.parse(ByteArrayInputStream(configBytes)) - } catch (e: Exception) { + } catch (e: Throwable) { when (e) { is BadConfigException, is IOException -> throw IllegalArgumentException("Invalid config passed to ${javaClass.simpleName}", e) else -> throw e |