diff options
author | Eric Kuck <eric@bluelinelabs.com> | 2018-07-25 19:30:34 -0500 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-07-26 05:17:43 +0200 |
commit | 9652fe99df68db5c483ea8e170f6e09f06a5e0d1 (patch) | |
tree | d88fa5ef4fa4e53d605e6bce9d788960a80642de /app/src/main/java/com/wireguard/android/model | |
parent | 62d8beff9693080225fe550d82f105ba3cde5df2 (diff) |
TunnelDetailFragment now restores state correctly after process death
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/android/model')
-rw-r--r-- | app/src/main/java/com/wireguard/android/model/TunnelManager.java | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/app/src/main/java/com/wireguard/android/model/TunnelManager.java b/app/src/main/java/com/wireguard/android/model/TunnelManager.java index f7b18c07..0032724e 100644 --- a/app/src/main/java/com/wireguard/android/model/TunnelManager.java +++ b/app/src/main/java/com/wireguard/android/model/TunnelManager.java @@ -19,7 +19,6 @@ import com.wireguard.android.configStore.ConfigStore; import com.wireguard.android.model.Tunnel.State; import com.wireguard.android.model.Tunnel.Statistics; import com.wireguard.android.util.ExceptionLoggers; -import com.wireguard.android.util.ObservableKeyedList; import com.wireguard.android.util.ObservableSortedKeyedArrayList; import com.wireguard.android.util.ObservableSortedKeyedList; import com.wireguard.config.Config; @@ -47,6 +46,7 @@ public final class TunnelManager extends BaseObservable { private static final String KEY_RUNNING_TUNNELS = "enabled_configs"; private final ConfigStore configStore; + private final CompletableFuture<ObservableSortedKeyedList<String, Tunnel>> completableTunnels = new CompletableFuture<>(); private final ObservableSortedKeyedList<String, Tunnel> tunnels = new ObservableSortedKeyedArrayList<>(COMPARATOR); @Nullable private Tunnel lastUsedTunnel; private boolean haveLoaded; @@ -121,8 +121,8 @@ public final class TunnelManager extends BaseObservable { .thenApply(tunnel::onStatisticsChanged); } - public ObservableKeyedList<String, Tunnel> getTunnels() { - return tunnels; + public CompletableFuture<ObservableSortedKeyedList<String, Tunnel>> getTunnels() { + return completableTunnels; } public void onCreate() { @@ -152,6 +152,8 @@ public final class TunnelManager extends BaseObservable { f.completeExceptionally(t); } }); + + completableTunnels.complete(tunnels); } public void refreshTunnelStates() { @@ -285,10 +287,12 @@ public final class TunnelManager extends BaseObservable { final String tunnelName = intent.getStringExtra("tunnel"); if (tunnelName == null) return; - final Tunnel tunnel = manager.getTunnels().get(tunnelName); - if (tunnel == null) - return; - manager.setTunnelState(tunnel, state); + manager.getTunnels().thenAccept(tunnels -> { + final Tunnel tunnel = tunnels.get(tunnelName); + if (tunnel == null) + return; + manager.setTunnelState(tunnel, state); + }); } } } |