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
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.EditText

View File

@ -6,5 +6,5 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties
data class ChapterSegment(
var title: String? = null,
var image: String? = null,
var start: Long? = null
var start: Long? = null
)

View File

@ -16,7 +16,7 @@ data class SearchItem(
var uploadedDate: String? = null,
var duration: Long? = null,
var views: Long? = null,
var uploaderVerified: Boolean? = null,
var uploaderVerified: Boolean? = null,
// Channel and Playlist attributes
var name: String? = null,
var description: String? = null,

View File

@ -7,4 +7,4 @@ data class Segment(
val actionType: String? = null,
val category: String? = null,
val segment: List<Float>? = arrayListOf()
)
)

View File

@ -16,4 +16,4 @@ data class StreamItem(
var uploaderVerified: Boolean? = null,
var uploaded: Long? = null,
var shortDescription: String? = null
)
)

View File

@ -9,4 +9,4 @@ data class Subtitle(
val name: String? = null,
val code: String? = null,
val autoGenerated: Boolean? = null
)
)

View File

@ -4,7 +4,6 @@ import android.content.ContentResolver
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher
@ -211,27 +210,43 @@ class InstanceSettings : PreferenceFragmentCompat() {
}
private fun initCustomInstances(instancePref: ListPreference) {
val customInstances = PreferenceHelper.getCustomInstances()
lifecycleScope.launchWhenCreated {
val customInstances = PreferenceHelper.getCustomInstances()
var instanceNames = resources.getStringArray(R.array.instances)
var instanceValues = resources.getStringArray(R.array.instancesValue)
customInstances.forEach { instance ->
instanceNames += instance.name
instanceValues += instance.apiUrl
}
var instanceNames = arrayListOf<String>()
var instanceValues = arrayListOf<String>()
// add custom instances to the list preference
instancePref.entries = instanceNames
instancePref.entryValues = instanceValues
instancePref.summaryProvider =
Preference.SummaryProvider<ListPreference> { preference ->
val text = preference.entry
if (TextUtils.isEmpty(text)) {
"kavin.rocks (Official)"
} else {
text
// 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 ->
instanceNames += instance.name
instanceValues += instance.apiUrl
}
runOnUiThread {
// add custom instances to the list preference
instancePref.entries = instanceNames.toTypedArray()
instancePref.entryValues = instanceValues.toTypedArray()
instancePref.summaryProvider =
Preference.SummaryProvider<ListPreference> { preference ->
preference.entry
}
}
}
}
private fun logout() {
@ -239,49 +254,6 @@ class InstanceSettings : PreferenceFragmentCompat() {
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) {
this ?: return
if (!isAdded) return // Fragment not attached to an Activity

View File

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