aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/android/fragment/TunnelDetailFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/wireguard/android/fragment/TunnelDetailFragment.java')
-rw-r--r--app/src/main/java/com/wireguard/android/fragment/TunnelDetailFragment.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/app/src/main/java/com/wireguard/android/fragment/TunnelDetailFragment.java b/app/src/main/java/com/wireguard/android/fragment/TunnelDetailFragment.java
index e236da71..5592c28a 100644
--- a/app/src/main/java/com/wireguard/android/fragment/TunnelDetailFragment.java
+++ b/app/src/main/java/com/wireguard/android/fragment/TunnelDetailFragment.java
@@ -10,6 +10,7 @@ import android.view.ViewGroup;
import com.wireguard.android.R;
import com.wireguard.android.databinding.TunnelDetailFragmentBinding;
import com.wireguard.android.model.Tunnel;
+import com.wireguard.config.Config;
/**
* Fragment that shows details about a specific tunnel.
@@ -18,6 +19,7 @@ import com.wireguard.android.model.Tunnel;
public class TunnelDetailFragment extends BaseFragment {
private TunnelDetailFragmentBinding binding;
private boolean isViewStateRestored;
+ private String originalName;
@Override
public void onCreate(final Bundle savedInstanceState) {
@@ -45,16 +47,34 @@ public class TunnelDetailFragment extends BaseFragment {
super.onDestroyView();
}
+ private void onConfigLoaded(Config config) {
+ binding.setConfig(new Config.Observable(config, originalName));
+ }
+
@Override
public void onSelectedTunnelChanged(final Tunnel oldTunnel, final Tunnel newTunnel) {
- if (binding != null && isViewStateRestored)
+ if (binding != null && isViewStateRestored) {
binding.setTunnel(newTunnel);
+ if (newTunnel == null)
+ binding.setConfig(null);
+ else {
+ originalName = newTunnel.getName();
+ newTunnel.getConfigAsync().thenAccept(this::onConfigLoaded);
+ }
+ }
}
@Override
public void onViewStateRestored(final Bundle savedInstanceState) {
super.onViewStateRestored(savedInstanceState);
- binding.setTunnel(getSelectedTunnel());
+ Tunnel tunnel = getSelectedTunnel();
+ binding.setTunnel(tunnel);
+ if (tunnel == null)
+ binding.setConfig(null);
+ else {
+ originalName = tunnel.getName();
+ tunnel.getConfigAsync().thenAccept(this::onConfigLoaded);
+ }
isViewStateRestored = true;
}
}