Observe tracker login state instead of fetching once (#987)
* Observe tracker login state instead of fetching once * Review changes
This commit is contained in:
@@ -8,6 +8,8 @@ import eu.kanade.domain.track.service.TrackPreferences
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
import eu.kanade.tachiyomi.util.system.toast
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import logcat.LogPriority
|
||||
import okhttp3.OkHttpClient
|
||||
import tachiyomi.core.common.util.lang.withIOContext
|
||||
@@ -53,6 +55,15 @@ abstract class BaseTracker(
|
||||
get() = getUsername().isNotEmpty() &&
|
||||
getPassword().isNotEmpty()
|
||||
|
||||
override val isLoggedInFlow: Flow<Boolean> by lazy {
|
||||
combine(
|
||||
trackPreferences.trackUsername(this).changes(),
|
||||
trackPreferences.trackPassword(this).changes(),
|
||||
) { username, password ->
|
||||
username.isNotEmpty() && password.isNotEmpty()
|
||||
}
|
||||
}
|
||||
|
||||
override fun getUsername() = trackPreferences.trackUsername(this).get()
|
||||
|
||||
override fun getPassword() = trackPreferences.trackPassword(this).get()
|
||||
|
||||
@@ -7,6 +7,7 @@ import dev.icerock.moko.resources.StringResource
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import okhttp3.OkHttpClient
|
||||
import tachiyomi.domain.track.model.Track as DomainTrack
|
||||
|
||||
@@ -61,6 +62,8 @@ interface Tracker {
|
||||
|
||||
val isLoggedIn: Boolean
|
||||
|
||||
val isLoggedInFlow: Flow<Boolean>
|
||||
|
||||
fun getUsername(): String
|
||||
|
||||
fun getPassword(): String
|
||||
|
||||
@@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.data.track.mangaupdates.MangaUpdates
|
||||
import eu.kanade.tachiyomi.data.track.myanimelist.MyAnimeList
|
||||
import eu.kanade.tachiyomi.data.track.shikimori.Shikimori
|
||||
import eu.kanade.tachiyomi.data.track.suwayomi.Suwayomi
|
||||
import kotlinx.coroutines.flow.combine
|
||||
|
||||
class TrackerManager {
|
||||
|
||||
@@ -32,5 +33,13 @@ class TrackerManager {
|
||||
|
||||
fun loggedInTrackers() = trackers.filter { it.isLoggedIn }
|
||||
|
||||
fun loggedInTrackersFlow() = combine(trackers.map { it.isLoggedInFlow }) {
|
||||
it.mapIndexedNotNull { index, isLoggedIn ->
|
||||
if (isLoggedIn) trackers[index] else null
|
||||
}
|
||||
}
|
||||
|
||||
fun get(id: Long) = trackers.find { it.id == id }
|
||||
|
||||
fun getAll(ids: Set<Long>) = trackers.filter { it.id in ids }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user