diff --git a/app/src/main/java/com/wireguard/config/Config.java b/app/src/main/java/com/wireguard/config/Config.java index 8f61dbdd..7745d4e5 100644 --- a/app/src/main/java/com/wireguard/config/Config.java +++ b/app/src/main/java/com/wireguard/config/Config.java @@ -76,6 +76,7 @@ public class Config extends BaseObservable name = null; peers.clear(); } + notifyChange(); } public Interface getInterface() { @@ -116,9 +117,9 @@ public class Config extends BaseObservable } else if ("[Peer]".equals(line)) { currentPeer = addPeer(); } else if (currentPeer == null) { - iface.parseFrom(line); + iface.parse(line); } else { - currentPeer.parseFrom(line); + currentPeer.parse(line); } } } diff --git a/app/src/main/java/com/wireguard/config/Interface.java b/app/src/main/java/com/wireguard/config/Interface.java index b81b6d99..a4ea4b81 100644 --- a/app/src/main/java/com/wireguard/config/Interface.java +++ b/app/src/main/java/com/wireguard/config/Interface.java @@ -42,6 +42,7 @@ public class Interface extends BaseObservable implements Copyable, Ob mtu = null; setPrivateKey(null); } + notifyChange(); } public void generateKeypair() { @@ -81,16 +82,16 @@ public class Interface extends BaseObservable implements Copyable, Ob return keypair != null ? keypair.getPublicKey() : null; } - public void parseFrom(final String line) { + public void parse(final String line) { final Attribute key = Attribute.match(line); if (key == Attribute.ADDRESS) - address = key.parseFrom(line); + setAddress(key.parseFrom(line)); else if (key == Attribute.DNS) - dns = key.parseFrom(line); + setDns(key.parseFrom(line)); else if (key == Attribute.LISTEN_PORT) - listenPort = key.parseFrom(line); + setListenPort(key.parseFrom(line)); else if (key == Attribute.MTU) - mtu = key.parseFrom(line); + setMtu(key.parseFrom(line)); else if (key == Attribute.PRIVATE_KEY) setPrivateKey(key.parseFrom(line)); else diff --git a/app/src/main/java/com/wireguard/config/Peer.java b/app/src/main/java/com/wireguard/config/Peer.java index f0e24162..912e8bf5 100644 --- a/app/src/main/java/com/wireguard/config/Peer.java +++ b/app/src/main/java/com/wireguard/config/Peer.java @@ -12,7 +12,7 @@ import com.android.databinding.library.baseAdapters.BR; public class Peer extends BaseObservable implements Copyable, Observable { private String allowedIPs; - private Config config; + private final Config config; private String endpoint; private String persistentKeepalive; private String publicKey; @@ -38,6 +38,7 @@ public class Peer extends BaseObservable implements Copyable, Observable { endpoint = source.endpoint; persistentKeepalive = source.persistentKeepalive; publicKey = source.publicKey; + notifyChange(); } @Bindable @@ -60,23 +61,23 @@ public class Peer extends BaseObservable implements Copyable, Observable { return publicKey; } - public void parseFrom(final String line) { + public void parse(final String line) { final Attribute key = Attribute.match(line); if (key == Attribute.ALLOWED_IPS) - allowedIPs = key.parseFrom(line); + setAllowedIPs(key.parseFrom(line)); else if (key == Attribute.ENDPOINT) - endpoint = key.parseFrom(line); + setEndpoint(key.parseFrom(line)); else if (key == Attribute.PERSISTENT_KEEPALIVE) - persistentKeepalive = key.parseFrom(line); + setPersistentKeepalive(key.parseFrom(line)); else if (key == Attribute.PUBLIC_KEY) - publicKey = key.parseFrom(line); + setPublicKey(key.parseFrom(line)); else throw new IllegalArgumentException(line); } public void removeSelf() { - config.getPeers().remove(this); - config = null; + if (!config.getPeers().remove(this)) + throw new IllegalStateException("This peer was already removed from its config"); } public void setAllowedIPs(String allowedIPs) {