Skip to content

Commit 721553e

Browse files
authored
fix: Network Detail not updated after connection (#53)
2 parents 753bddb + a5105c0 commit 721553e

17 files changed

+515
-353
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
android:name=".ui.PrefsActivity"
4343
android:label="@string/app_name" />
4444
<activity
45-
android:name=".ui.NetworkDetailActivity"
45+
android:name=".ui.view.NetworkDetailActivity"
4646
android:label="@string/network_detail" />
4747
<activity
4848
android:name=".ui.MoonOrbitActivity"

app/src/main/java/net/kaaass/zerotierfix/events/NetworkInfoReplyEvent.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

app/src/main/java/net/kaaass/zerotierfix/events/NetworkInfoRequestEvent.java

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package net.kaaass.zerotierfix.events;
2+
3+
import com.zerotier.sdk.VirtualNetworkConfig;
4+
5+
import lombok.Data;
6+
7+
/**
8+
* 应答获取指定 ZT 网络 ID 的网络配置事件
9+
*/
10+
@Data
11+
public class VirtualNetworkConfigReplyEvent {
12+
private final VirtualNetworkConfig virtualNetworkConfig;
13+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package net.kaaass.zerotierfix.events;
2+
3+
import lombok.Data;
4+
5+
/**
6+
* 请求指定 ZT 网络 ID 的网络配置事件
7+
*/
8+
@Data
9+
public class VirtualNetworkConfigRequestEvent {
10+
private final long networkId;
11+
}

app/src/main/java/net/kaaass/zerotierfix/model/Network.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class Network {
2727
private long networkConfigId;
2828

2929
@Transient
30+
@Deprecated
3031
private boolean connected;
3132

3233
@ToOne(joinProperty = "networkConfigId")
@@ -77,10 +78,12 @@ public void setNetworkName(String networkName) {
7778
this.networkName = networkName;
7879
}
7980

81+
@Deprecated
8082
public boolean getUseDefaultRoute() {
8183
return this.useDefaultRoute;
8284
}
8385

86+
@Deprecated
8487
public void setUseDefaultRoute(boolean useDefaultRoute) {
8588
this.useDefaultRoute = useDefaultRoute;
8689
}
@@ -101,10 +104,12 @@ public void setNetworkConfigId(long networkConfigId) {
101104
this.networkConfigId = networkConfigId;
102105
}
103106

107+
@Deprecated
104108
public boolean getConnected() {
105109
return this.connected;
106110
}
107111

112+
@Deprecated
108113
public void setConnected(boolean connected) {
109114
this.connected = connected;
110115
}

app/src/main/java/net/kaaass/zerotierfix/model/NetworkConfig.java

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,51 @@
11
package net.kaaass.zerotierfix.model;
22

3-
import net.kaaass.zerotierfix.R;
43
import net.kaaass.zerotierfix.model.type.NetworkStatus;
54
import net.kaaass.zerotierfix.model.type.NetworkType;
65

76
import org.greenrobot.greendao.DaoException;
87
import org.greenrobot.greendao.annotation.Convert;
98
import org.greenrobot.greendao.annotation.Entity;
9+
import org.greenrobot.greendao.annotation.Generated;
1010
import org.greenrobot.greendao.annotation.Id;
1111
import org.greenrobot.greendao.annotation.ToMany;
1212
import org.greenrobot.greendao.converter.PropertyConverter;
1313

1414
import java.util.List;
1515

16-
import org.greenrobot.greendao.annotation.Generated;
17-
1816
@Entity
1917
public class NetworkConfig {
2018
@Id
2119
private Long id;
2220

21+
@Deprecated
2322
@Convert(converter = NetworkTypeConverter.class, columnType = Integer.class)
2423
private NetworkType type;
2524

25+
@Deprecated
2626
@Convert(converter = NetworkStatusConverter.class, columnType = Integer.class)
2727
private NetworkStatus status;
2828

29+
@Deprecated
2930
private String mac;
3031

32+
@Deprecated
3133
private String mtu;
3234

35+
@Deprecated
3336
private boolean broadcast;
3437

38+
@Deprecated
3539
private boolean bridging;
3640

3741
private boolean routeViaZeroTier;
3842

43+
@Deprecated
3944
private boolean useCustomDNS;
4045

4146
private int dnsMode;
4247

48+
@Deprecated
4349
@ToMany(referencedJoinProperty = "networkId")
4450
private List<AssignedAddress> assignedAddresses;
4551

@@ -60,8 +66,7 @@ public class NetworkConfig {
6066

6167
@Generated(hash = 1535887363)
6268
public NetworkConfig(Long id, NetworkType type, NetworkStatus status, String mac, String mtu,
63-
boolean broadcast, boolean bridging, boolean routeViaZeroTier, boolean useCustomDNS,
64-
int dnsMode) {
69+
boolean broadcast, boolean bridging, boolean routeViaZeroTier, boolean useCustomDNS, int dnsMode) {
6570
this.id = id;
6671
this.type = type;
6772
this.status = status;
@@ -74,6 +79,12 @@ public NetworkConfig(Long id, NetworkType type, NetworkStatus status, String mac
7479
this.dnsMode = dnsMode;
7580
}
7681

82+
public NetworkConfig(Long id, boolean routeViaZeroTier, int dnsMode) {
83+
this.id = id;
84+
this.routeViaZeroTier = routeViaZeroTier;
85+
this.dnsMode = dnsMode;
86+
}
87+
7788
@Generated(hash = 850630533)
7889
public NetworkConfig() {
7990
}
@@ -86,50 +97,62 @@ public void setId(Long id) {
8697
this.id = id;
8798
}
8899

100+
@Deprecated
89101
public NetworkType getType() {
90102
return this.type;
91103
}
92104

105+
@Deprecated
93106
public void setType(NetworkType type) {
94107
this.type = type;
95108
}
96109

110+
@Deprecated
97111
public NetworkStatus getStatus() {
98112
return this.status;
99113
}
100114

115+
@Deprecated
101116
public void setStatus(NetworkStatus status) {
102117
this.status = status;
103118
}
104119

120+
@Deprecated
105121
public String getMac() {
106122
return this.mac;
107123
}
108124

125+
@Deprecated
109126
public void setMac(String mac) {
110127
this.mac = mac;
111128
}
112129

130+
@Deprecated
113131
public String getMtu() {
114132
return this.mtu;
115133
}
116134

135+
@Deprecated
117136
public void setMtu(String mtu) {
118137
this.mtu = mtu;
119138
}
120139

140+
@Deprecated
121141
public boolean getBroadcast() {
122142
return this.broadcast;
123143
}
124144

145+
@Deprecated
125146
public void setBroadcast(boolean broadcast) {
126147
this.broadcast = broadcast;
127148
}
128149

150+
@Deprecated
129151
public boolean getBridging() {
130152
return this.bridging;
131153
}
132154

155+
@Deprecated
133156
public void setBridging(boolean bridging) {
134157
this.bridging = bridging;
135158
}
@@ -142,10 +165,12 @@ public void setRouteViaZeroTier(boolean routeViaZeroTier) {
142165
this.routeViaZeroTier = routeViaZeroTier;
143166
}
144167

168+
@Deprecated
145169
public boolean getUseCustomDNS() {
146170
return this.useCustomDNS;
147171
}
148172

173+
@Deprecated
149174
public void setUseCustomDNS(boolean useCustomDNS) {
150175
this.useCustomDNS = useCustomDNS;
151176
}
@@ -170,8 +195,7 @@ public List<AssignedAddress> getAssignedAddresses() {
170195
throw new DaoException("Entity is detached from DAO context");
171196
}
172197
AssignedAddressDao targetDao = daoSession.getAssignedAddressDao();
173-
List<AssignedAddress> assignedAddressesNew = targetDao
174-
._queryNetworkConfig_AssignedAddresses(id);
198+
List<AssignedAddress> assignedAddressesNew = targetDao._queryNetworkConfig_AssignedAddresses(id);
175199
synchronized (this) {
176200
if (assignedAddresses == null) {
177201
assignedAddresses = assignedAddressesNew;
@@ -181,9 +205,7 @@ public List<AssignedAddress> getAssignedAddresses() {
181205
return assignedAddresses;
182206
}
183207

184-
/**
185-
* Resets a to-many relationship, making the next get call to query for a fresh result.
186-
*/
208+
/** Resets a to-many relationship, making the next get call to query for a fresh result. */
187209
@Generated(hash = 1705851723)
188210
public synchronized void resetAssignedAddresses() {
189211
assignedAddresses = null;

app/src/main/java/net/kaaass/zerotierfix/model/type/DNSMode.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package net.kaaass.zerotierfix.model.type;
22

3+
import net.kaaass.zerotierfix.R;
4+
35
public enum DNSMode {
46
NO_DNS(0),
57
NETWORK_DNS(1),
@@ -27,4 +29,17 @@ public static DNSMode fromInt(int i) {
2729
public int toInt() {
2830
return this.id;
2931
}
32+
33+
public int toStringId() {
34+
switch (this) {
35+
case NO_DNS:
36+
return R.string.network_dns_mode_no_dns;
37+
case NETWORK_DNS:
38+
return R.string.network_dns_mode_network_dns;
39+
case CUSTOM_DNS:
40+
return R.string.network_dns_mode_custom_dns;
41+
default:
42+
throw new RuntimeException("Unhandled value: " + this);
43+
}
44+
}
3045
}

app/src/main/java/net/kaaass/zerotierfix/service/ZeroTierOneService.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,21 @@
3535
import net.kaaass.zerotierfix.events.IsServiceRunningRequestEvent;
3636
import net.kaaass.zerotierfix.events.ManualDisconnectEvent;
3737
import net.kaaass.zerotierfix.events.NetworkConfigChangedByUserEvent;
38-
import net.kaaass.zerotierfix.events.NetworkInfoReplyEvent;
3938
import net.kaaass.zerotierfix.events.NetworkListReplyEvent;
4039
import net.kaaass.zerotierfix.events.NetworkReconfigureEvent;
4140
import net.kaaass.zerotierfix.events.NodeDestroyedEvent;
4241
import net.kaaass.zerotierfix.events.NodeIDEvent;
4342
import net.kaaass.zerotierfix.events.NodeStatusEvent;
4443
import net.kaaass.zerotierfix.events.OrbitMoonEvent;
4544
import net.kaaass.zerotierfix.events.PeerInfoReplyEvent;
46-
import net.kaaass.zerotierfix.events.NetworkInfoRequestEvent;
4745
import net.kaaass.zerotierfix.events.NetworkListRequestEvent;
4846
import net.kaaass.zerotierfix.events.NodeStatusRequestEvent;
4947
import net.kaaass.zerotierfix.events.PeerInfoRequestEvent;
5048
import net.kaaass.zerotierfix.events.StopEvent;
5149
import net.kaaass.zerotierfix.events.VPNErrorEvent;
5250
import net.kaaass.zerotierfix.events.VirtualNetworkConfigChangedEvent;
51+
import net.kaaass.zerotierfix.events.VirtualNetworkConfigReplyEvent;
52+
import net.kaaass.zerotierfix.events.VirtualNetworkConfigRequestEvent;
5353
import net.kaaass.zerotierfix.model.AppNode;
5454
import net.kaaass.zerotierfix.model.MoonOrbit;
5555
import net.kaaass.zerotierfix.model.Network;
@@ -659,15 +659,6 @@ public void leaveNetwork(long networkId) {
659659
stopSelf(this.mStartID);
660660
}
661661

662-
@Subscribe(threadMode = ThreadMode.BACKGROUND)
663-
public void onNetworkInfoRequest(NetworkInfoRequestEvent networkInfoRequestEvent) {
664-
VirtualNetworkConfig networkConfig;
665-
Node node2 = this.node;
666-
if (node2 != null && (networkConfig = node2.networkConfig(networkInfoRequestEvent.getNetworkId())) != null) {
667-
this.eventBus.post(new NetworkInfoReplyEvent(networkConfig));
668-
}
669-
}
670-
671662
@Subscribe(threadMode = ThreadMode.BACKGROUND)
672663
public void onNetworkListRequest(NetworkListRequestEvent requestNetworkListEvent) {
673664
VirtualNetworkConfig[] networks;
@@ -690,6 +681,9 @@ public void onNodeStatusRequest(NodeStatusRequestEvent event) {
690681
}
691682
}
692683

684+
/**
685+
* 请求 Peer 信息事件回调
686+
*/
693687
@Subscribe(threadMode = ThreadMode.BACKGROUND)
694688
public void onRequestPeerInfo(PeerInfoRequestEvent event) {
695689
if (this.node == null) {
@@ -699,6 +693,19 @@ public void onRequestPeerInfo(PeerInfoRequestEvent event) {
699693
this.eventBus.post(new PeerInfoReplyEvent(this.node.peers()));
700694
}
701695

696+
/**
697+
* 请求网络配置事件回调
698+
*/
699+
@Subscribe(threadMode = ThreadMode.BACKGROUND)
700+
public void onVirtualNetworkConfigRequest(VirtualNetworkConfigRequestEvent event) {
701+
if (this.node == null) {
702+
this.eventBus.post(new VirtualNetworkConfigReplyEvent(null));
703+
return;
704+
}
705+
var config = this.node.networkConfig(event.getNetworkId());
706+
this.eventBus.post(new VirtualNetworkConfigReplyEvent(config));
707+
}
708+
702709
@Subscribe(threadMode = ThreadMode.ASYNC)
703710
public void onNetworkReconfigure(NetworkReconfigureEvent event) {
704711
boolean isChanged = event.isChanged();

0 commit comments

Comments
 (0)