Refactor rule provider selection (#547)

This commit is contained in:
Artur Khusainov 2024-02-08 07:24:31 +03:00 committed by GitHub
parent fb55430f67
commit 89ef91cebe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -249,25 +249,25 @@ class AssetsActivity : ThemedActivity() {
}
private val rulesProviders = listOf(
RuleAssetsProvider(
"SagerNet/sing-geoip",
"SagerNet/sing-geosite",
),
RuleAssetsProvider(
"soffchen/sing-geoip",
"soffchen/sing-geosite",
),
RuleAssetsProvider(
"Chocolate4U/Iran-sing-box-rules"
),
)
suspend fun updateAsset(file: File, versionFile: File, localVersion: String) {
val repo: String
var fileName = file.name
if (DataStore.rulesProvider == 0) {
if (file.name == assetNames[0]) {
repo = "SagerNet/sing-geoip"
} else {
repo = "SagerNet/sing-geosite"
}
} else if (DataStore.rulesProvider == 1) {
if (file.name == assetNames[0]) {
repo = "soffchen/sing-geoip"
} else {
repo = "soffchen/sing-geosite"
}
} else {
repo = "Chocolate4U/Iran-sing-box-rules"
}
val ruleProvider = rulesProviders[DataStore.rulesProvider]
val repo = ruleProvider.repoByFileName[fileName]
val client = Libcore.newHttpClient().apply {
modernTLS()
@ -340,5 +340,17 @@ class AssetsActivity : ThemedActivity() {
}
}
private data class RuleAssetsProvider(
val repoByFileName: Map<String, String>
) {
constructor(
geoipRepo: String,
geositeRepo: String = geoipRepo,
) : this(
mapOf(
"geoip.db" to geoipRepo,
"geosite.db" to geositeRepo,
)
)
}
}