diff --git a/app/src/main/java/com/github/kr328/clash/ProxyActivity.kt b/app/src/main/java/com/github/kr328/clash/ProxyActivity.kt index 9ae92f7..0f2fd63 100644 --- a/app/src/main/java/com/github/kr328/clash/ProxyActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/ProxyActivity.kt @@ -101,7 +101,7 @@ class ProxyActivity : BaseActivity() { { it.value.type != ProxyPacket.Type.SELECT }, { - it.value.name + it.value.order }) ) .flatMap { diff --git a/core/src/main/golang/server/proxies.go b/core/src/main/golang/server/proxies.go index 1497290..fdc9776 100644 --- a/core/src/main/golang/server/proxies.go +++ b/core/src/main/golang/server/proxies.go @@ -76,6 +76,8 @@ func handleQueryProxies(client *net.UnixConn) { root.Mode = tunnel.Instance().Mode().String() root.Proxies = make(map[string]interface{}) + var order int = 0 + for k, p := range proxies { inner, err := p.MarshalJSON() @@ -86,6 +88,11 @@ func handleQueryProxies(client *net.UnixConn) { mapping := map[string]interface{}{} json.Unmarshal(inner, &mapping) + + mapping["order"] = order + + order += 1 + root.Proxies[k] = mapping } diff --git a/core/src/main/java/com/github/kr328/clash/core/model/ProxyPacket.kt b/core/src/main/java/com/github/kr328/clash/core/model/ProxyPacket.kt index c9fdb2c..6f632b8 100644 --- a/core/src/main/java/com/github/kr328/clash/core/model/ProxyPacket.kt +++ b/core/src/main/java/com/github/kr328/clash/core/model/ProxyPacket.kt @@ -8,7 +8,7 @@ import kotlinx.serialization.Serializable @Serializable data class ProxyPacket(val mode: String, val proxies: Map): Parcelable { @Serializable - data class Proxy(val name: String, val type: Type, val now: Int, val all: Set, val delay: Long) + data class Proxy(val name: String, val type: Type, val order: Int, val now: Int, val all: Set, val delay: Long) enum class Type { SELECT, @@ -81,7 +81,7 @@ data class ProxyPacket(val mode: String, val proxies: Map): Parcelab val all = entry.value.second.all.mapNotNull { hashed[it]?.first }.toSet() val delay = entry.value.second.history.firstOrNull()?.delay ?: 0 - entry.value.first to Proxy(entry.key, type, now, all, delay) + entry.value.first to Proxy(entry.key, type,entry.value.second.order, now, all, delay) } return ProxyPacket(rawProxy.mode, proxies.toMap()) diff --git a/core/src/main/java/com/github/kr328/clash/core/model/RawProxyPacket.kt b/core/src/main/java/com/github/kr328/clash/core/model/RawProxyPacket.kt index ac581ca..d531da3 100644 --- a/core/src/main/java/com/github/kr328/clash/core/model/RawProxyPacket.kt +++ b/core/src/main/java/com/github/kr328/clash/core/model/RawProxyPacket.kt @@ -7,6 +7,7 @@ data class RawProxyPacket(val mode: String, val proxies: Map) @Serializable data class RawProxy(val type: String, val all: List = emptyList(), + val order: Int = 0, val now: String = "", val history: List = emptyList()) { @Serializable