diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-09-26 13:34:20 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-09-26 13:49:14 +0200 |
commit | 938399d881aa6b365be131ffb3a517d64be427bb (patch) | |
tree | 818d6d25c5394d0f7af15cf7ed130b48992d0154 /ui/src/main/java/com/wireguard/android/fragment/ConfigNamingDialogFragment.kt | |
parent | ui: print proper exception trace from log viewer (diff) | |
download | wireguard-android-938399d881aa6b365be131ffb3a517d64be427bb.tar.xz wireguard-android-938399d881aa6b365be131ffb3a517d64be427bb.zip |
ui: queue up tunnel mutating on activity scope instead of fragment scope
Fragment scopes get cancelled when the fragment goes away, but we don't
actually want to cancel an in-flight transition in that case. Also,
before when the fragment would cancel, there'd be an exception, and the
exception handler would call Fragment::getString, which in turn called
requireContext, which caused an exception. Work around this by using the
`activity ?: Application.get()` idiom to always have a context for
strings and toasts.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
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 | 18 |
1 files changed, 9 insertions, 9 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 cd2431c9..0919f5ea 100644 --- a/ui/src/main/java/com/wireguard/android/fragment/ConfigNamingDialogFragment.kt +++ b/ui/src/main/java/com/wireguard/android/fragment/ConfigNamingDialogFragment.kt @@ -29,15 +29,15 @@ class ConfigNamingDialogFragment : DialogFragment() { private var imm: InputMethodManager? = null private fun createTunnelAndDismiss() { - binding?.let { - val name = it.tunnelNameText.text.toString() - lifecycleScope.launch { - try { - Application.getTunnelManager().create(name, config) - dismiss() - } catch (e: Throwable) { - it.tunnelNameTextLayout.error = e.message - } + val binding = binding ?: return + val activity = activity ?: return + val name = binding.tunnelNameText.text.toString() + activity.lifecycleScope.launch { + try { + Application.getTunnelManager().create(name, config) + dismiss() + } catch (e: Throwable) { + binding.tunnelNameTextLayout.error = e.message } } } |