Skip to content

Commit 2435708

Browse files
committed
Refactor to use nullIfBlank
1 parent 6cf6057 commit 2435708

File tree

6 files changed

+54
-61
lines changed

6 files changed

+54
-61
lines changed

V2rayNG/app/src/main/java/com/v2ray/ang/fmt/FmtBase.kt

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.v2ray.ang.fmt
33
import com.v2ray.ang.AppConfig
44
import com.v2ray.ang.dto.NetworkType
55
import com.v2ray.ang.dto.ProfileItem
6-
import com.v2ray.ang.extension.isNotNullEmpty
6+
import com.v2ray.ang.extension.nullIfBlank
77
import com.v2ray.ang.handler.MmkvManager
88
import com.v2ray.ang.util.HttpUtil
99
import com.v2ray.ang.util.Utils
@@ -100,16 +100,16 @@ open class FmtBase {
100100
fun getQueryDic(config: ProfileItem): HashMap<String, String> {
101101
val dicQuery = HashMap<String, String>()
102102
dicQuery["security"] = config.security?.ifEmpty { "none" }.orEmpty()
103-
config.sni.let { if (it.isNotNullEmpty()) dicQuery["sni"] = it.orEmpty() }
104-
config.alpn.let { if (it.isNotNullEmpty()) dicQuery["alpn"] = it.orEmpty() }
105-
config.echConfigList.let { if (it.isNotNullEmpty()) dicQuery["ech"] = it.orEmpty() }
106-
config.pinnedCA256.let { if (it.isNotNullEmpty()) dicQuery["pcs"] = it.orEmpty() }
107-
config.fingerPrint.let { if (it.isNotNullEmpty()) dicQuery["fp"] = it.orEmpty() }
108-
config.publicKey.let { if (it.isNotNullEmpty()) dicQuery["pbk"] = it.orEmpty() }
109-
config.shortId.let { if (it.isNotNullEmpty()) dicQuery["sid"] = it.orEmpty() }
110-
config.spiderX.let { if (it.isNotNullEmpty()) dicQuery["spx"] = it.orEmpty() }
111-
config.mldsa65Verify.let { if (it.isNotNullEmpty()) dicQuery["pqv"] = it.orEmpty() }
112-
config.flow.let { if (it.isNotNullEmpty()) dicQuery["flow"] = it.orEmpty() }
103+
config.sni?.nullIfBlank()?.let { dicQuery["sni"] = it }
104+
config.alpn?.nullIfBlank()?.let { dicQuery["alpn"] = it }
105+
config.echConfigList?.nullIfBlank()?.let { dicQuery["ech"] = it }
106+
config.pinnedCA256?.nullIfBlank()?.let { dicQuery["pcs"] = it }
107+
config.fingerPrint?.nullIfBlank()?.let { dicQuery["fp"] = it }
108+
config.publicKey?.nullIfBlank()?.let { dicQuery["pbk"] = it }
109+
config.shortId?.nullIfBlank()?.let { dicQuery["sid"] = it }
110+
config.spiderX?.nullIfBlank()?.let { dicQuery["spx"] = it }
111+
config.mldsa65Verify?.nullIfBlank()?.let { dicQuery["pqv"] = it }
112+
config.flow?.nullIfBlank()?.let { dicQuery["flow"] = it }
113113
// Add two keys for compatibility: "insecure" and "allowInsecure"
114114
if (config.security == AppConfig.TLS) {
115115
val insecureFlag = if (config.insecure == true) "1" else "0"
@@ -123,42 +123,42 @@ open class FmtBase {
123123
when (networkType) {
124124
NetworkType.TCP -> {
125125
dicQuery["headerType"] = config.headerType?.ifEmpty { "none" }.orEmpty()
126-
config.host.let { if (it.isNotNullEmpty()) dicQuery["host"] = it.orEmpty() }
126+
config.host?.nullIfBlank()?.let { dicQuery["host"] = it }
127127
}
128128

129129
NetworkType.KCP -> {
130130
dicQuery["headerType"] = config.headerType?.ifEmpty { "none" }.orEmpty()
131-
config.seed.let { if (it.isNotNullEmpty()) dicQuery["seed"] = it.orEmpty() }
131+
config.seed?.nullIfBlank()?.let { dicQuery["seed"] = it }
132132
}
133133

134134
NetworkType.WS, NetworkType.HTTP_UPGRADE -> {
135-
config.host.let { if (it.isNotNullEmpty()) dicQuery["host"] = it.orEmpty() }
136-
config.path.let { if (it.isNotNullEmpty()) dicQuery["path"] = it.orEmpty() }
135+
config.host?.nullIfBlank()?.let { dicQuery["host"] = it }
136+
config.path?.nullIfBlank()?.let { dicQuery["path"] = it }
137137
}
138138

139139
NetworkType.XHTTP -> {
140-
config.host.let { if (it.isNotNullEmpty()) dicQuery["host"] = it.orEmpty() }
141-
config.path.let { if (it.isNotNullEmpty()) dicQuery["path"] = it.orEmpty() }
142-
config.xhttpMode.let { if (it.isNotNullEmpty()) dicQuery["mode"] = it.orEmpty() }
143-
config.xhttpExtra.let { if (it.isNotNullEmpty()) dicQuery["extra"] = it.orEmpty() }
140+
config.host?.nullIfBlank()?.let { dicQuery["host"] = it }
141+
config.path?.nullIfBlank()?.let { dicQuery["path"] = it }
142+
config.xhttpMode?.nullIfBlank()?.let { dicQuery["mode"] = it }
143+
config.xhttpExtra?.nullIfBlank()?.let { dicQuery["extra"] = it }
144144
}
145145

146146
NetworkType.HTTP, NetworkType.H2 -> {
147147
dicQuery["type"] = "http"
148-
config.host.let { if (it.isNotNullEmpty()) dicQuery["host"] = it.orEmpty() }
149-
config.path.let { if (it.isNotNullEmpty()) dicQuery["path"] = it.orEmpty() }
148+
config.host?.nullIfBlank()?.let { dicQuery["host"] = it }
149+
config.path?.nullIfBlank()?.let { dicQuery["path"] = it }
150150
}
151151

152152
// NetworkType.QUIC -> {
153153
// dicQuery["headerType"] = config.headerType?.ifEmpty { "none" }.orEmpty()
154-
// config.quicSecurity.let { if (it.isNotNullEmpty()) dicQuery["quicSecurity"] = it.orEmpty() }
155-
// config.quicKey.let { if (it.isNotNullEmpty()) dicQuery["key"] = it.orEmpty() }
154+
// config.quicSecurity?.nullIfBlank()?.let { dicQuery["quicSecurity"] = it }
155+
// config.quicKey?.nullIfBlank()?.let { dicQuery["key"] = it }
156156
// }
157157

158158
NetworkType.GRPC -> {
159-
config.mode.let { if (it.isNotNullEmpty()) dicQuery["mode"] = it.orEmpty() }
160-
config.authority.let { if (it.isNotNullEmpty()) dicQuery["authority"] = it.orEmpty() }
161-
config.serviceName.let { if (it.isNotNullEmpty()) dicQuery["serviceName"] = it.orEmpty() }
159+
config.mode?.nullIfBlank()?.let { dicQuery["mode"] = it }
160+
config.authority?.nullIfBlank()?.let { dicQuery["authority"] = it }
161+
config.serviceName?.nullIfBlank()?.let { dicQuery["serviceName"] = it }
162162
}
163163

164164
else -> {}

V2rayNG/app/src/main/java/com/v2ray/ang/fmt/Hysteria2Fmt.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.v2ray.ang.dto.V2rayConfig.OutboundBean.StreamSettingsBean
99
import com.v2ray.ang.dto.V2rayConfig.OutboundBean.StreamSettingsBean.UdpMasksBean.UdpMasksSettingsBean
1010
import com.v2ray.ang.extension.idnHost
1111
import com.v2ray.ang.extension.isNotNullEmpty
12+
import com.v2ray.ang.extension.nullIfBlank
1213
import com.v2ray.ang.handler.MmkvManager
1314
import com.v2ray.ang.handler.V2rayConfigManager
1415
import com.v2ray.ang.util.Utils
@@ -61,8 +62,8 @@ object Hysteria2Fmt : FmtBase() {
6162
val dicQuery = HashMap<String, String>()
6263

6364
config.security.let { if (it != null) dicQuery["security"] = it }
64-
config.sni.let { if (it.isNotNullEmpty()) dicQuery["sni"] = it.orEmpty() }
65-
config.alpn.let { if (it.isNotNullEmpty()) dicQuery["alpn"] = it.orEmpty() }
65+
config.sni?.nullIfBlank()?.let { dicQuery["sni"] = it }
66+
config.alpn?.nullIfBlank()?.let { dicQuery["alpn"] = it }
6667
config.insecure.let { dicQuery["insecure"] = if (it == true) "1" else "0" }
6768

6869
if (config.obfsPassword.isNotNullEmpty()) {

V2rayNG/app/src/main/java/com/v2ray/ang/fmt/VmessFmt.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.v2ray.ang.dto.V2rayConfig.OutboundBean
1010
import com.v2ray.ang.dto.VmessQRCode
1111
import com.v2ray.ang.extension.idnHost
1212
import com.v2ray.ang.extension.isNotNullEmpty
13+
import com.v2ray.ang.extension.nullIfBlank
1314
import com.v2ray.ang.handler.MmkvManager
1415
import com.v2ray.ang.handler.V2rayConfigManager
1516
import com.v2ray.ang.util.JsonUtil
@@ -132,8 +133,8 @@ object VmessFmt : FmtBase() {
132133
else -> {}
133134
}
134135

135-
config.host.let { if (it.isNotNullEmpty()) vmessQRCode.host = it.orEmpty() }
136-
config.path.let { if (it.isNotNullEmpty()) vmessQRCode.path = it.orEmpty() }
136+
config.host?.nullIfBlank()?.let { vmessQRCode.host = it }
137+
config.path?.nullIfBlank()?.let { vmessQRCode.path = it }
137138

138139
vmessQRCode.tls = config.security.orEmpty()
139140
vmessQRCode.sni = config.sni.orEmpty()

V2rayNG/app/src/main/java/com/v2ray/ang/fmt/WireguardFmt.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.v2ray.ang.dto.EConfigType
66
import com.v2ray.ang.dto.ProfileItem
77
import com.v2ray.ang.dto.V2rayConfig.OutboundBean
88
import com.v2ray.ang.extension.idnHost
9+
import com.v2ray.ang.extension.nullIfBlank
910
import com.v2ray.ang.extension.removeWhiteSpace
1011
import com.v2ray.ang.handler.V2rayConfigManager
1112
import com.v2ray.ang.util.Utils
@@ -32,7 +33,7 @@ object WireguardFmt : FmtBase() {
3233
config.secretKey = uri.userInfo.orEmpty()
3334
config.localAddress = queryParam["address"] ?: WIREGUARD_LOCAL_ADDRESS_V4
3435
config.publicKey = queryParam["publickey"].orEmpty()
35-
config.preSharedKey = queryParam["presharedkey"]?.takeIf { it.isNotEmpty() }
36+
config.preSharedKey = queryParam["presharedkey"]?.nullIfBlank()
3637
config.mtu = Utils.parseInt(queryParam["mtu"] ?: AppConfig.WIREGUARD_LOCAL_MTU)
3738
config.reserved = queryParam["reserved"] ?: "0,0,0"
3839

@@ -84,7 +85,7 @@ object WireguardFmt : FmtBase() {
8485
config.localAddress = interfaceParams["address"] ?: WIREGUARD_LOCAL_ADDRESS_V4
8586
config.mtu = Utils.parseInt(interfaceParams["mtu"] ?: AppConfig.WIREGUARD_LOCAL_MTU)
8687
config.publicKey = peerParams["publickey"].orEmpty()
87-
config.preSharedKey = peerParams["presharedkey"]?.takeIf { it.isNotEmpty() }
88+
config.preSharedKey = peerParams["presharedkey"]?.nullIfBlank()
8889
val endpoint = peerParams["endpoint"].orEmpty()
8990
val endpointParts = endpoint.split(":", limit = 2)
9091
if (endpointParts.size == 2) {
@@ -113,7 +114,7 @@ object WireguardFmt : FmtBase() {
113114
wireguard.address = (profileItem.localAddress ?: WIREGUARD_LOCAL_ADDRESS_V4).split(",")
114115
wireguard.peers?.firstOrNull()?.let { peer ->
115116
peer.publicKey = profileItem.publicKey.orEmpty()
116-
peer.preSharedKey = profileItem.preSharedKey?.takeIf { it.isNotEmpty() }
117+
peer.preSharedKey = profileItem.preSharedKey?.nullIfBlank()
117118
peer.endpoint = Utils.getIpv6Address(profileItem.server) + ":${profileItem.serverPort}"
118119
}
119120
wireguard.mtu = profileItem.mtu

V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1297,29 +1297,21 @@ object V2rayConfigManager {
12971297
} else {
12981298
profileItem.sni
12991299
}
1300-
val fingerprint = profileItem.fingerPrint
1301-
val alpns = profileItem.alpn
1302-
val echConfigList = profileItem.echConfigList
1303-
val echForceQuery = profileItem.echForceQuery
1304-
val publicKey = profileItem.publicKey
1305-
val shortId = profileItem.shortId
1306-
val spiderX = profileItem.spiderX
1307-
val mldsa65Verify = profileItem.mldsa65Verify
1308-
1309-
streamSettings.security = if (streamSecurity.isEmpty()) null else streamSecurity
1300+
1301+
streamSettings.security = streamSecurity.nullIfBlank()
13101302
if (streamSettings.security == null) return
13111303
val tlsSetting = StreamSettingsBean.TlsSettingsBean(
13121304
allowInsecure = allowInsecure,
1313-
serverName = if (sni.isNullOrEmpty()) null else sni,
1314-
fingerprint = if (fingerprint.isNullOrEmpty()) null else fingerprint,
1315-
alpn = if (alpns.isNullOrEmpty()) null else alpns.split(",").map { it.trim() }.filter { it.isNotEmpty() },
1316-
echConfigList = if (echConfigList.isNullOrEmpty()) null else echConfigList,
1317-
echForceQuery = if (echForceQuery.isNullOrEmpty()) null else echForceQuery,
1318-
pinnedPeerCertSha256 = profileItem.pinnedCA256?.nullIfBlank(),
1319-
publicKey = if (publicKey.isNullOrEmpty()) null else publicKey,
1320-
shortId = if (shortId.isNullOrEmpty()) null else shortId,
1321-
spiderX = if (spiderX.isNullOrEmpty()) null else spiderX,
1322-
mldsa65Verify = if (mldsa65Verify.isNullOrEmpty()) null else mldsa65Verify,
1305+
serverName = sni.nullIfBlank(),
1306+
fingerprint = profileItem.fingerPrint.nullIfBlank(),
1307+
alpn = profileItem.alpn?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() }.takeIf { !it.isNullOrEmpty() },
1308+
echConfigList = profileItem.echConfigList.nullIfBlank(),
1309+
echForceQuery = profileItem.echForceQuery.nullIfBlank(),
1310+
pinnedPeerCertSha256 = profileItem.pinnedCA256.nullIfBlank(),
1311+
publicKey = profileItem.publicKey.nullIfBlank(),
1312+
shortId = profileItem.shortId.nullIfBlank(),
1313+
spiderX = profileItem.spiderX.nullIfBlank(),
1314+
mldsa65Verify = profileItem.mldsa65Verify.nullIfBlank(),
13231315
)
13241316
if (streamSettings.security == AppConfig.TLS) {
13251317
streamSettings.tlsSettings = tlsSetting

V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingEditActivity.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.lifecycle.lifecycleScope
88
import com.v2ray.ang.R
99
import com.v2ray.ang.databinding.ActivityRoutingEditBinding
1010
import com.v2ray.ang.dto.RulesetItem
11+
import com.v2ray.ang.extension.nullIfBlank
1112
import com.v2ray.ang.extension.toast
1213
import com.v2ray.ang.extension.toastSuccess
1314
import com.v2ray.ang.handler.SettingsManager
@@ -62,14 +63,11 @@ class RoutingEditActivity : BaseActivity() {
6263
rulesetItem.apply {
6364
remarks = binding.etRemarks.text.toString()
6465
locked = binding.chkLocked.isChecked
65-
domain = binding.etDomain.text.toString().takeIf { it.isNotEmpty() }
66-
?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() }
67-
ip = binding.etIp.text.toString().takeIf { it.isNotEmpty() }
68-
?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() }
69-
protocol = binding.etProtocol.text.toString().takeIf { it.isNotEmpty() }
70-
?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() }
71-
port = binding.etPort.text.toString().takeIf { it.isNotEmpty() }
72-
network = binding.etNetwork.text.toString().takeIf { it.isNotEmpty() }
66+
domain = binding.etDomain.text.toString().nullIfBlank()?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() }
67+
ip = binding.etIp.text.toString().nullIfBlank()?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() }
68+
protocol = binding.etProtocol.text.toString().nullIfBlank()?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() }
69+
port = binding.etPort.text.toString().nullIfBlank()
70+
network = binding.etNetwork.text.toString().nullIfBlank()
7371
outboundTag = outbound_tag[binding.spOutboundTag.selectedItemPosition]
7472
}
7573

0 commit comments

Comments
 (0)