mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 16:00:31 +05:30
change instance fixed
This commit is contained in:
parent
28ec0ef24e
commit
89a6cea14b
@ -46,4 +46,11 @@ interface PipedApi {
|
|||||||
@GET("subscriptions")
|
@GET("subscriptions")
|
||||||
suspend fun subscriptions(@Header("Authorization") token: String): List<Subscription>
|
suspend fun subscriptions(@Header("Authorization") token: String): List<Subscription>
|
||||||
|
|
||||||
|
@POST("subscribe")
|
||||||
|
suspend fun subscribe(@Header("Authorization") token: String, @Body subscribe: Subscribe): String
|
||||||
|
|
||||||
|
@POST("unsubscribe")
|
||||||
|
suspend fun unsubscribe(@Header("Authorization") token: String, @Body subscribe: Subscribe): String
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
51
app/src/main/java/com/github/libretube/ResettableLazy.kt
Normal file
51
app/src/main/java/com/github/libretube/ResettableLazy.kt
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package com.github.libretube
|
||||||
|
|
||||||
|
import java.util.*
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
class ResettableLazyManager {
|
||||||
|
// we synchronize to make sure the timing of a reset() call and new inits do not collide
|
||||||
|
val managedDelegates = LinkedList<Resettable>()
|
||||||
|
|
||||||
|
fun register(managed: Resettable) {
|
||||||
|
synchronized (managedDelegates) {
|
||||||
|
managedDelegates.add(managed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun reset() {
|
||||||
|
synchronized (managedDelegates) {
|
||||||
|
managedDelegates.forEach { it.reset() }
|
||||||
|
managedDelegates.clear()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Resettable {
|
||||||
|
fun reset()
|
||||||
|
}
|
||||||
|
|
||||||
|
class ResettableLazy<PROPTYPE>(val manager: ResettableLazyManager, val init: ()->PROPTYPE): Resettable {
|
||||||
|
@Volatile var lazyHolder = makeInitBlock()
|
||||||
|
|
||||||
|
operator fun getValue(thisRef: Any?, property: KProperty<*>): PROPTYPE {
|
||||||
|
return lazyHolder.value
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun reset() {
|
||||||
|
lazyHolder = makeInitBlock()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun makeInitBlock(): Lazy<PROPTYPE> {
|
||||||
|
return lazy {
|
||||||
|
manager.register(this)
|
||||||
|
init()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <PROPTYPE> resettableLazy(manager: ResettableLazyManager, init: ()->PROPTYPE): ResettableLazy<PROPTYPE> {
|
||||||
|
return ResettableLazy(manager, init)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun resettableManager(): ResettableLazyManager = ResettableLazyManager()
|
@ -1,20 +1,17 @@
|
|||||||
package com.github.libretube
|
package com.github.libretube
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.util.Log
|
|
||||||
import androidx.preference.PreferenceManager
|
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
import retrofit2.Retrofit
|
import retrofit2.Retrofit
|
||||||
import retrofit2.converter.jackson.JacksonConverterFactory
|
import retrofit2.converter.jackson.JacksonConverterFactory
|
||||||
import kotlin.coroutines.coroutineContext
|
|
||||||
|
|
||||||
object RetrofitInstance {
|
object RetrofitInstance {
|
||||||
lateinit var url: String
|
lateinit var url: String
|
||||||
val api: PipedApi by lazy {
|
val lazyMgr = resettableManager()
|
||||||
|
val api: PipedApi by resettableLazy(lazyMgr) {
|
||||||
Retrofit.Builder()
|
Retrofit.Builder()
|
||||||
.baseUrl(url)
|
.baseUrl(url)
|
||||||
.addConverterFactory(JacksonConverterFactory.create())
|
.addConverterFactory(JacksonConverterFactory.create())
|
||||||
.build()
|
.build()
|
||||||
.create(PipedApi::class.java)
|
.create(PipedApi::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -6,6 +6,9 @@ import androidx.preference.ListPreference
|
|||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import androidx.preference.SwitchPreferenceCompat
|
import androidx.preference.SwitchPreferenceCompat
|
||||||
|
import okhttp3.HttpUrl
|
||||||
|
import retrofit2.Retrofit
|
||||||
|
import retrofit2.converter.jackson.JacksonConverterFactory
|
||||||
|
|
||||||
class Settings : PreferenceFragmentCompat() {
|
class Settings : PreferenceFragmentCompat() {
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
@ -13,6 +16,7 @@ class Settings : PreferenceFragmentCompat() {
|
|||||||
val instance = findPreference<ListPreference>("instance")
|
val instance = findPreference<ListPreference>("instance")
|
||||||
instance?.setOnPreferenceChangeListener { preference, newValue ->
|
instance?.setOnPreferenceChangeListener { preference, newValue ->
|
||||||
RetrofitInstance.url=newValue.toString()
|
RetrofitInstance.url=newValue.toString()
|
||||||
|
RetrofitInstance.lazyMgr.reset()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
val login = findPreference<Preference>("login_register")
|
val login = findPreference<Preference>("login_register")
|
||||||
|
@ -77,6 +77,11 @@ class CustomViewHolder1(private val v: View): RecyclerView.ViewHolder(v){
|
|||||||
.replace(R.id.container, frag)
|
.replace(R.id.container, frag)
|
||||||
.commitNow()
|
.commitNow()
|
||||||
}
|
}
|
||||||
|
channelImage.setOnClickListener {
|
||||||
|
val activity = v.context as MainActivity
|
||||||
|
val bundle = bundleOf("channel_id" to item.uploaderUrl)
|
||||||
|
activity.navController.navigate(R.id.channel, bundle)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private fun bindChannel(item: SearchItem) {
|
private fun bindChannel(item: SearchItem) {
|
||||||
val channelImage = v.findViewById<ImageView>(R.id.search_channel_image)
|
val channelImage = v.findViewById<ImageView>(R.id.search_channel_image)
|
||||||
|
8
app/src/main/java/com/github/libretube/obj/Subscribe.kt
Normal file
8
app/src/main/java/com/github/libretube/obj/Subscribe.kt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package com.github.libretube.obj
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
||||||
|
|
||||||
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
|
data class Subscribe(
|
||||||
|
var channelId: String? = null
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user