Skip to content

Commit 0daea33

Browse files
2dustAnGgIt886
authored andcommitted
Optimize MmkvManager
1 parent ce91437 commit 0daea33

File tree

3 files changed

+34
-37
lines changed

3 files changed

+34
-37
lines changed

app/src/main/kotlin/com/neko/v2ray/util/AngConfigManager.kt

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@ import com.neko.v2ray.R
1515
import com.neko.v2ray.dto.*
1616
import com.neko.v2ray.util.MmkvManager.serverRawStorage
1717
import com.neko.v2ray.util.MmkvManager.settingsStorage
18+
import com.neko.v2ray.util.MmkvManager.subStorage
1819
import com.neko.v2ray.util.fmt.ShadowsocksFmt
1920
import com.neko.v2ray.util.fmt.SocksFmt
2021
import com.neko.v2ray.util.fmt.TrojanFmt
2122
import com.neko.v2ray.util.fmt.VlessFmt
2223
import com.neko.v2ray.util.fmt.VmessFmt
2324
import com.neko.v2ray.util.fmt.WireguardFmt
2425
import java.lang.reflect.Type
26+
import java.net.URI
2527
import java.util.*
2628

2729
object AngConfigManager {
@@ -396,7 +398,7 @@ object AngConfigManager {
396398
servers.lines()
397399
.forEach { str ->
398400
if (str.startsWith(AppConfig.PROTOCOL_HTTP) || str.startsWith(AppConfig.PROTOCOL_HTTPS)) {
399-
count += MmkvManager.importUrlAsSubscription(str)
401+
count += importUrlAsSubscription(str)
400402
}
401403
}
402404
return count
@@ -576,4 +578,19 @@ object AngConfigManager {
576578
}
577579
return count
578580
}
581+
582+
private fun importUrlAsSubscription(url: String): Int {
583+
val subscriptions = MmkvManager.decodeSubscriptions()
584+
subscriptions.forEach {
585+
if (it.second.url == url) {
586+
return 0
587+
}
588+
}
589+
val uri = URI(Utils.fixIllegalUrl(url))
590+
val subItem = SubscriptionItem()
591+
subItem.remarks = uri.fragment ?: "import sub"
592+
subItem.url = url
593+
subStorage.encode(Utils.getUuid(), Gson().toJson(subItem))
594+
return 1
595+
}
579596
}

app/src/main/kotlin/com/neko/v2ray/util/MmkvManager.kt

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.neko.v2ray.dto.ProfileItem
77
import com.neko.v2ray.dto.ServerAffiliationInfo
88
import com.neko.v2ray.dto.ServerConfig
99
import com.neko.v2ray.dto.SubscriptionItem
10-
import java.net.URI
1110

1211
object MmkvManager {
1312
private const val ID_MAIN = "MAIN"
@@ -152,21 +151,6 @@ object MmkvManager {
152151
}
153152
}
154153

155-
fun importUrlAsSubscription(url: String): Int {
156-
val subscriptions = decodeSubscriptions()
157-
subscriptions.forEach {
158-
if (it.second.url == url) {
159-
return 0
160-
}
161-
}
162-
val uri = URI(Utils.fixIllegalUrl(url))
163-
val subItem = SubscriptionItem()
164-
subItem.remarks = uri.fragment ?: "import sub"
165-
subItem.url = url
166-
subStorage.encode(Utils.getUuid(), Gson().toJson(subItem))
167-
return 1
168-
}
169-
170154
fun decodeSubscriptions(): List<Pair<String, SubscriptionItem>> {
171155
val subscriptions = mutableListOf<Pair<String, SubscriptionItem>>()
172156
subStorage.allKeys()?.forEach { key ->
@@ -228,25 +212,6 @@ object MmkvManager {
228212
}
229213
}
230214

231-
fun sortByTestResults() {
232-
data class ServerDelay(var guid: String, var testDelayMillis: Long)
233-
234-
val serverDelays = mutableListOf<ServerDelay>()
235-
val serverList = decodeServerList()
236-
serverList.forEach { key ->
237-
val delay = decodeServerAffiliationInfo(key)?.testDelayMillis ?: 0L
238-
serverDelays.add(ServerDelay(key, if (delay <= 0L) 999999 else delay))
239-
}
240-
serverDelays.sortBy { it.testDelayMillis }
241-
242-
serverDelays.forEach {
243-
serverList.remove(it.guid)
244-
serverList.add(it.guid)
245-
}
246-
247-
encodeServerList(serverList)
248-
}
249-
250215
fun getServerViaRemarks(remarks: String?): ServerConfig? {
251216
if (remarks == null) {
252217
return null

app/src/main/kotlin/com/neko/v2ray/viewmodel/MainViewModel.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,22 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
311311
}
312312

313313
fun sortByTestResults() {
314-
MmkvManager.sortByTestResults()
314+
data class ServerDelay(var guid: String, var testDelayMillis: Long)
315+
316+
val serverDelays = mutableListOf<ServerDelay>()
317+
val serverList = MmkvManager.decodeServerList()
318+
serverList.forEach { key ->
319+
val delay = MmkvManager.decodeServerAffiliationInfo(key)?.testDelayMillis ?: 0L
320+
serverDelays.add(ServerDelay(key, if (delay <= 0L) 999999 else delay))
321+
}
322+
serverDelays.sortBy { it.testDelayMillis }
323+
324+
serverDelays.forEach {
325+
serverList.remove(it.guid)
326+
serverList.add(it.guid)
327+
}
328+
329+
MmkvManager.encodeServerList(serverList)
315330
}
316331

317332

0 commit comments

Comments
 (0)