Use POST requests for unauthenticated subscriptions

This commit is contained in:
Bnyro 2023-02-04 11:16:55 +01:00
parent 459d8f92ac
commit 4bd2d473bf
4 changed files with 17 additions and 15 deletions

View File

@ -108,8 +108,10 @@ interface PipedApi {
@GET("feed") @GET("feed")
suspend fun getFeed(@Query("authToken") token: String?): List<StreamItem> suspend fun getFeed(@Query("authToken") token: String?): List<StreamItem>
@GET("feed/unauthenticated") @POST("feed/unauthenticated")
suspend fun getUnauthenticatedFeed(@Query("channels") channels: String): List<StreamItem> suspend fun getUnauthenticatedFeed(
@Body channels: List<String>
): List<StreamItem>
@GET("subscribed") @GET("subscribed")
suspend fun isSubscribed( suspend fun isSubscribed(
@ -120,8 +122,10 @@ interface PipedApi {
@GET("subscriptions") @GET("subscriptions")
suspend fun subscriptions(@Header("Authorization") token: String): List<Subscription> suspend fun subscriptions(@Header("Authorization") token: String): List<Subscription>
@GET("subscriptions/unauthenticated") @POST("subscriptions/unauthenticated")
suspend fun unauthenticatedSubscriptions(@Query("channels") channels: String): List<Subscription> suspend fun unauthenticatedSubscriptions(
@Body channels: List<String>
): List<Subscription>
@POST("subscribe") @POST("subscribe")
suspend fun subscribe( suspend fun subscribe(

View File

@ -102,17 +102,13 @@ object SubscriptionHelper {
} }
} }
suspend fun getFormattedLocalSubscriptions(): String {
return Database.localSubscriptionDao().getAll()
.joinToString(",") { it.channelId }
}
suspend fun getSubscriptions(): List<Subscription> { suspend fun getSubscriptions(): List<Subscription> {
val token = PreferenceHelper.getToken() val token = PreferenceHelper.getToken()
return if (token.isNotEmpty()) { return if (token.isNotEmpty()) {
RetrofitInstance.authApi.subscriptions(token) RetrofitInstance.authApi.subscriptions(token)
} else { } else {
RetrofitInstance.authApi.unauthenticatedSubscriptions(getFormattedLocalSubscriptions()) val subscriptions = Database.localSubscriptionDao().getAll().map { it.channelId }
RetrofitInstance.authApi.unauthenticatedSubscriptions(subscriptions)
} }
} }
@ -121,7 +117,8 @@ object SubscriptionHelper {
return if (token.isNotEmpty()) { return if (token.isNotEmpty()) {
RetrofitInstance.authApi.getFeed(token) RetrofitInstance.authApi.getFeed(token)
} else { } else {
RetrofitInstance.authApi.getUnauthenticatedFeed(getFormattedLocalSubscriptions()) val subscriptions = Database.localSubscriptionDao().getAll().map { it.channelId }
RetrofitInstance.authApi.getUnauthenticatedFeed(subscriptions)
} }
} }
} }

View File

@ -9,6 +9,7 @@ import com.github.libretube.api.JsonHelper
import com.github.libretube.api.PlaylistsHelper import com.github.libretube.api.PlaylistsHelper
import com.github.libretube.api.RetrofitInstance import com.github.libretube.api.RetrofitInstance
import com.github.libretube.api.SubscriptionHelper import com.github.libretube.api.SubscriptionHelper
import com.github.libretube.db.DatabaseHolder.Companion.Database
import com.github.libretube.extensions.TAG import com.github.libretube.extensions.TAG
import com.github.libretube.extensions.toastFromMainThread import com.github.libretube.extensions.toastFromMainThread
import com.github.libretube.obj.ImportPlaylist import com.github.libretube.obj.ImportPlaylist
@ -83,6 +84,7 @@ class ImportHelper(
/** /**
* Write the text to the document * Write the text to the document
*/ */
@OptIn(ExperimentalSerializationApi::class)
fun exportSubscriptions(uri: Uri?) { fun exportSubscriptions(uri: Uri?) {
if (uri == null) return if (uri == null) return
runBlocking(Dispatchers.IO) { runBlocking(Dispatchers.IO) {
@ -90,9 +92,8 @@ class ImportHelper(
val subs = if (token.isNotEmpty()) { val subs = if (token.isNotEmpty()) {
RetrofitInstance.authApi.subscriptions(token) RetrofitInstance.authApi.subscriptions(token)
} else { } else {
RetrofitInstance.authApi.unauthenticatedSubscriptions( val subscriptions = Database.localSubscriptionDao().getAll().map { it.channelId }
SubscriptionHelper.getFormattedLocalSubscriptions() RetrofitInstance.authApi.unauthenticatedSubscriptions(subscriptions)
)
} }
val newPipeChannels = subs.map { val newPipeChannels = subs.map {
NewPipeSubscription(it.name, 0, "https://www.youtube.com${it.url}") NewPipeSubscription(it.name, 0, "https://www.youtube.com${it.url}")

View File

@ -22,9 +22,9 @@ import com.github.libretube.extensions.toID
import com.github.libretube.helpers.PreferenceHelper import com.github.libretube.helpers.PreferenceHelper
import com.github.libretube.ui.activities.MainActivity import com.github.libretube.ui.activities.MainActivity
import com.github.libretube.ui.views.TimePickerPreference import com.github.libretube.ui.views.TimePickerPreference
import java.time.LocalTime
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import java.time.LocalTime
/** /**
* The notification worker which checks for new streams in a certain frequency * The notification worker which checks for new streams in a certain frequency