0
0
Fork 0
mirror of https://github.com/YTVanced/VancedManager synced 2024-11-26 13:12:59 +00:00

json array improvements

This commit is contained in:
X1nto 2020-08-03 13:01:25 +04:00
parent ecaf591100
commit e77314c658
2 changed files with 17 additions and 25 deletions

View file

@ -11,14 +11,11 @@ import androidx.core.content.res.ResourcesCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.navigation.findNavController import androidx.navigation.findNavController
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import com.beust.klaxon.JsonObject
import com.beust.klaxon.Parser
import com.github.kittinunf.fuel.coroutines.awaitString
import com.github.kittinunf.fuel.httpGet
import com.google.android.material.button.MaterialButton import com.google.android.material.button.MaterialButton
import com.google.android.material.checkbox.MaterialCheckBox import com.google.android.material.checkbox.MaterialCheckBox
import com.vanced.manager.R import com.vanced.manager.R
import com.vanced.manager.utils.InternetTools.baseUrl import com.vanced.manager.utils.InternetTools.baseUrl
import com.vanced.manager.utils.JsonHelper.getJsonArray
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -27,7 +24,7 @@ import java.util.*
class VancedLanguageSelectionFragment : Fragment() { class VancedLanguageSelectionFragment : Fragment() {
private val langs: Array<String>? = runBlocking { getLangs() } private val langs: MutableList<String?> = runBlocking { getJsonArray("${PreferenceManager.getDefaultSharedPreferences(activity).getString("install_url", baseUrl)}/vanced.json").string("langs").value }
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
@ -42,9 +39,9 @@ class VancedLanguageSelectionFragment : Fragment() {
loadBoxes(view.findViewById(R.id.lang_button_ll)) loadBoxes(view.findViewById(R.id.lang_button_ll))
view.findViewById<MaterialButton>(R.id.vanced_install_finish).setOnClickListener { view.findViewById<MaterialButton>(R.id.vanced_install_finish).setOnClickListener {
val chosenLangs = mutableListOf("en") val chosenLangs = mutableListOf("en")
if (langs != null) {
for (lang in langs) { for (lang in langs) {
if (view.findViewWithTag<MaterialCheckBox>(lang).isChecked) { if (view.findViewWithTag<MaterialCheckBox>(lang).isChecked) {
if (lang != null) {
chosenLangs.add(lang) chosenLangs.add(lang)
} }
} }
@ -54,18 +51,11 @@ class VancedLanguageSelectionFragment : Fragment() {
} }
} }
private suspend fun getLangs(): Array<String>? {
val langObj = Parser.default().parse(
StringBuilder(
"https://${PreferenceManager.getDefaultSharedPreferences(activity).getString("install_url", baseUrl)}/vanced.json".httpGet().awaitString()
)
) as JsonObject
return langObj.array<String>("langs")?.toTypedArray()
}
private fun loadBoxes(ll: LinearLayout) = CoroutineScope(Dispatchers.Main).launch { private fun loadBoxes(ll: LinearLayout) = CoroutineScope(Dispatchers.Main).launch {
if (langs != null) {
for (lang in langs) { for (lang in langs) {
if (lang != null) {
val box: MaterialCheckBox = MaterialCheckBox(activity).apply { val box: MaterialCheckBox = MaterialCheckBox(activity).apply {
tag = lang tag = lang
text = Locale(lang).displayLanguage text = Locale(lang).displayLanguage

View file

@ -1,5 +1,6 @@
package com.vanced.manager.utils package com.vanced.manager.utils
import com.beust.klaxon.JsonArray
import com.beust.klaxon.JsonObject import com.beust.klaxon.JsonObject
import com.beust.klaxon.Parser import com.beust.klaxon.Parser
import com.github.kittinunf.fuel.coroutines.awaitString import com.github.kittinunf.fuel.coroutines.awaitString
@ -7,13 +8,14 @@ import com.github.kittinunf.fuel.httpGet
object JsonHelper { object JsonHelper {
suspend fun getJson(url: String): JsonObject { suspend fun getJson(url: String): JsonObject =
val result = url.httpGet().awaitString() Parser.default().parse(
StringBuilder(url.httpGet().awaitString())
) as JsonObject
val parser: Parser = Parser.default() suspend fun getJsonArray(url: String): JsonArray<*> =
val stringBuilder: StringBuilder = StringBuilder(result) Parser.default().parse(
StringBuilder(url.httpGet().awaitString())
return parser.parse(stringBuilder) as JsonObject ) as JsonArray<*>
}
} }