package com.github.libretube.repo import com.github.libretube.api.RetrofitInstance import com.github.libretube.api.obj.Subscribe import com.github.libretube.api.obj.Subscription import com.github.libretube.extensions.toID import com.github.libretube.helpers.PreferenceHelper class AccountSubscriptionsRepository : SubscriptionsRepository { private val token get() = PreferenceHelper.getToken() override suspend fun subscribe( channelId: String, name: String, uploaderAvatar: String?, verified: Boolean ) { runCatching { RetrofitInstance.authApi.subscribe(token, Subscribe(channelId)) } } override suspend fun unsubscribe(channelId: String) { runCatching { RetrofitInstance.authApi.unsubscribe(token, Subscribe(channelId)) } } override suspend fun isSubscribed(channelId: String): Boolean? { return runCatching { RetrofitInstance.authApi.isSubscribed(channelId, token) }.getOrNull()?.subscribed } override suspend fun importSubscriptions(newChannels: List) { RetrofitInstance.authApi.importSubscriptions(false, token, newChannels) } override suspend fun getSubscriptions(): List { return RetrofitInstance.authApi.subscriptions(token) } override suspend fun getSubscriptionChannelIds(): List { return getSubscriptions().map { it.url.toID() } } }