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")
|
||||
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
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import androidx.preference.PreferenceManager
|
||||
import kotlinx.coroutines.withContext
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.jackson.JacksonConverterFactory
|
||||
import kotlin.coroutines.coroutineContext
|
||||
|
||||
object RetrofitInstance {
|
||||
lateinit var url: String
|
||||
val api: PipedApi by lazy {
|
||||
val lazyMgr = resettableManager()
|
||||
val api: PipedApi by resettableLazy(lazyMgr) {
|
||||
Retrofit.Builder()
|
||||
.baseUrl(url)
|
||||
.addConverterFactory(JacksonConverterFactory.create())
|
||||
.build()
|
||||
.create(PipedApi::class.java)
|
||||
}
|
||||
|
||||
}
|
@ -6,6 +6,9 @@ import androidx.preference.ListPreference
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.SwitchPreferenceCompat
|
||||
import okhttp3.HttpUrl
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.jackson.JacksonConverterFactory
|
||||
|
||||
class Settings : PreferenceFragmentCompat() {
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
@ -13,6 +16,7 @@ class Settings : PreferenceFragmentCompat() {
|
||||
val instance = findPreference<ListPreference>("instance")
|
||||
instance?.setOnPreferenceChangeListener { preference, newValue ->
|
||||
RetrofitInstance.url=newValue.toString()
|
||||
RetrofitInstance.lazyMgr.reset()
|
||||
true
|
||||
}
|
||||
val login = findPreference<Preference>("login_register")
|
||||
|
@ -77,6 +77,11 @@ class CustomViewHolder1(private val v: View): RecyclerView.ViewHolder(v){
|
||||
.replace(R.id.container, frag)
|
||||
.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) {
|
||||
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