Merge pull request #866 from Bnyro/master

fetch public instances again
This commit is contained in:
Bnyro 2022-07-24 12:16:07 +02:00 committed by GitHub
commit 0fead06f01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 38 additions and 68 deletions

View File

@ -1,6 +1,5 @@
package com.github.libretube.adapters package com.github.libretube.adapters
import android.content.Context
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.EditText import android.widget.EditText

View File

@ -4,7 +4,6 @@ import android.content.ContentResolver
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils
import android.util.Log import android.util.Log
import android.widget.Toast import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
@ -211,25 +210,41 @@ class InstanceSettings : PreferenceFragmentCompat() {
} }
private fun initCustomInstances(instancePref: ListPreference) { private fun initCustomInstances(instancePref: ListPreference) {
lifecycleScope.launchWhenCreated {
val customInstances = PreferenceHelper.getCustomInstances() val customInstances = PreferenceHelper.getCustomInstances()
var instanceNames = resources.getStringArray(R.array.instances) var instanceNames = arrayListOf<String>()
var instanceValues = resources.getStringArray(R.array.instancesValue) var instanceValues = arrayListOf<String>()
// fetch official public instances
val response = try {
RetrofitInstance.api.getInstances("https://instances.tokhmi.xyz/")
} catch (e: Exception) {
e.printStackTrace()
emptyList()
}
response.forEach {
if (it.name != null && it.api_url != null) {
instanceNames += it.name!!
instanceValues += it.api_url!!
}
}
customInstances.forEach { instance -> customInstances.forEach { instance ->
instanceNames += instance.name instanceNames += instance.name
instanceValues += instance.apiUrl instanceValues += instance.apiUrl
} }
runOnUiThread {
// add custom instances to the list preference // add custom instances to the list preference
instancePref.entries = instanceNames instancePref.entries = instanceNames.toTypedArray()
instancePref.entryValues = instanceValues instancePref.entryValues = instanceValues.toTypedArray()
instancePref.summaryProvider = instancePref.summaryProvider =
Preference.SummaryProvider<ListPreference> { preference -> Preference.SummaryProvider<ListPreference> { preference ->
val text = preference.entry preference.entry
if (TextUtils.isEmpty(text)) { }
"kavin.rocks (Official)"
} else {
text
} }
} }
} }
@ -239,49 +254,6 @@ class InstanceSettings : PreferenceFragmentCompat() {
Toast.makeText(context, getString(R.string.loggedout), Toast.LENGTH_SHORT).show() Toast.makeText(context, getString(R.string.loggedout), Toast.LENGTH_SHORT).show()
} }
private fun fetchInstance() {
lifecycleScope.launchWhenCreated {
val response = try {
RetrofitInstance.api.getInstances("https://instances.tokhmi.xyz/")
} catch (e: IOException) {
println(e)
Log.e("settings", "IOException, you might not have internet connection")
return@launchWhenCreated
} catch (e: HttpException) {
Log.e("settings", "HttpException, unexpected response $e")
return@launchWhenCreated
} catch (e: Exception) {
Log.e("settings", e.toString())
return@launchWhenCreated
}
val listEntries: MutableList<String> = ArrayList()
val listEntryValues: MutableList<String> = ArrayList()
for (item in response) {
listEntries.add(item.name!!)
listEntryValues.add(item.api_url!!)
}
// add custom instances to the list
val entries = listEntries.toTypedArray<CharSequence>()
val entryValues = listEntryValues.toTypedArray<CharSequence>()
runOnUiThread {
val instance = findPreference<ListPreference>("selectInstance")
instance?.entries = entries
instance?.entryValues = entryValues
instance?.summaryProvider =
Preference.SummaryProvider<ListPreference> { preference ->
val text = preference.entry
if (TextUtils.isEmpty(text)) {
"kavin.rocks (Official)"
} else {
text
}
}
}
}
}
private fun Fragment?.runOnUiThread(action: () -> Unit) { private fun Fragment?.runOnUiThread(action: () -> Unit) {
this ?: return this ?: return
if (!isAdded) return // Fragment not attached to an Activity if (!isAdded) return // Fragment not attached to an Activity

View File

@ -1,6 +1,5 @@
package com.github.libretube.update package com.github.libretube.update
import android.util.Log
import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.ObjectMapper
import com.github.libretube.GITHUB_API_URL import com.github.libretube.GITHUB_API_URL
import java.net.URL import java.net.URL