@@ -35,15 +35,27 @@ sealed interface DnsDialogSideEffect {
35
35
data class DnsDialogViewState (
36
36
val input : String ,
37
37
val validationError : ValidationError ? ,
38
- val isLocal : Boolean ,
39
38
val isAllowLanEnabled : Boolean ,
40
- val isIpv6 : Boolean ,
41
39
val isIpv6Enabled : Boolean ,
42
40
val index : Int? ,
43
41
) {
44
42
val isNewEntry = index == null
43
+ val isIpv6: Boolean = input.isIpv6()
44
+ val isLocal: Boolean = input.isLocalAddress()
45
45
46
46
fun isValid () = validationError == null
47
+
48
+ private fun String.isLocalAddress (): Boolean {
49
+ return isValid() && InetAddress .getByName(this ).isLocalAddress()
50
+ }
51
+
52
+ private fun String.isIpv6 (): Boolean {
53
+ return isValid() && InetAddress .getByName(this ) is Inet6Address
54
+ }
55
+
56
+ private fun InetAddress.isLocalAddress (): Boolean {
57
+ return isLinkLocalAddress || isSiteLocalAddress
58
+ }
47
59
}
48
60
49
61
sealed class ValidationError {
@@ -74,8 +86,6 @@ class DnsDialogViewModel(
74
86
input = input,
75
87
validationError =
76
88
input.validateDnsEntry(currentIndex, settings.addresses()).leftOrNull(),
77
- isLocal = input.isLocalAddress(),
78
- isIpv6 = input.isIpv6(),
79
89
isAllowLanEnabled = settings.allowLan,
80
90
isIpv6Enabled = settings.tunnelOptions.genericOptions.enableIpv6,
81
91
index = currentIndex,
@@ -87,8 +97,6 @@ class DnsDialogViewModel(
87
97
DnsDialogViewState (
88
98
input = _ipAddressInput .value,
89
99
validationError = null ,
90
- isLocal = _ipAddressInput .value.isLocalAddress(),
91
- isIpv6 = _ipAddressInput .value.isIpv6(),
92
100
isAllowLanEnabled = false ,
93
101
isIpv6Enabled = false ,
94
102
index = null ,
@@ -153,18 +161,6 @@ class DnsDialogViewModel(
153
161
return inetAddressValidator.isValid(this )
154
162
}
155
163
156
- private fun String.isLocalAddress (): Boolean {
157
- return isValidIp() && InetAddress .getByName(this ).isLocalAddress()
158
- }
159
-
160
- private fun String.isIpv6 (): Boolean {
161
- return isValidIp() && InetAddress .getByName(this ) is Inet6Address
162
- }
163
-
164
- private fun InetAddress.isLocalAddress (): Boolean {
165
- return isLinkLocalAddress || isSiteLocalAddress
166
- }
167
-
168
164
private fun InetAddress.isDuplicateDnsEntry (
169
165
currentIndex : Int? = null,
170
166
dnsList : List <InetAddress >,
0 commit comments