Skip to content

Commit

Permalink
Show available but not installed enhanced trackers
Browse files Browse the repository at this point in the history
Closes #8859
  • Loading branch information
arkon committed Jan 8, 2023
1 parent 5d9753d commit 48cab70
Show file tree
Hide file tree
Showing 7 changed files with 27 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import androidx.compose.ui.unit.dp
import eu.kanade.domain.track.service.TrackPreferences
import eu.kanade.presentation.more.settings.Preference
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.track.EnhancedTrackService
import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.data.track.anilist.AnilistApi
Expand Down Expand Up @@ -102,6 +103,23 @@ object SettingsTrackingScreen : SearchableSettings {
}
}

val enhancedTrackers = trackManager.services
.filter { it is EnhancedTrackService }
.partition { service ->
val acceptedSources = (service as EnhancedTrackService).getAcceptedSources()
sourceManager.getCatalogueSources().any { it::class.qualifiedName in acceptedSources }
}
var enhancedTrackerInfo = stringResource(R.string.enhanced_tracking_info)
if (enhancedTrackers.second.isNotEmpty()) {
val missingSourcesInfo = stringResource(
R.string.enhanced_services_not_installed,
enhancedTrackers.second
.map { stringResource(it.nameRes()) }
.joinToString(),
)
enhancedTrackerInfo += "\n\n$missingSourcesInfo"
}

return listOf(
Preference.PreferenceItem.SwitchPreference(
pref = trackPreferences.autoUpdateTrack(),
Expand Down Expand Up @@ -151,19 +169,15 @@ object SettingsTrackingScreen : SearchableSettings {
),
Preference.PreferenceGroup(
title = stringResource(R.string.enhanced_services),
preferenceItems = listOf(trackManager.komga, trackManager.kavita, trackManager.suwayomi)
.filter { service ->
val acceptedSources = service.getAcceptedSources()
sourceManager.getCatalogueSources().any { it::class.qualifiedName in acceptedSources }
}
preferenceItems = enhancedTrackers.first
.map { service ->
Preference.PreferenceItem.TrackingPreference(
title = stringResource(service.nameRes()),
service = service,
login = service::loginNoop,
login = { (service as EnhancedTrackService).loginNoop() },
logout = service::logout,
)
} + listOf(Preference.PreferenceItem.InfoPreference(stringResource(R.string.enhanced_tracking_info))),
} + listOf(Preference.PreferenceItem.InfoPreference(enhancedTrackerInfo)),
),
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ interface EnhancedTrackService {
*/
fun getAcceptedSources(): List<String>

fun loginNoop()

/**
* match is similar to TrackService.search, but only return zero or one match.
*/
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,13 @@ import eu.kanade.domain.manga.model.Manga
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.EnhancedTrackService
import eu.kanade.tachiyomi.data.track.NoLoginTrackService
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.source.Source
import java.security.MessageDigest
import eu.kanade.domain.track.model.Track as DomainTrack

class Kavita(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService, NoLoginTrackService {
class Kavita(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService {

companion object {
const val UNREAD = 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,14 @@ import eu.kanade.domain.manga.model.Manga
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.EnhancedTrackService
import eu.kanade.tachiyomi.data.track.NoLoginTrackService
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.source.Source
import okhttp3.Dns
import okhttp3.OkHttpClient
import eu.kanade.domain.track.model.Track as DomainTrack

class Komga(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService, NoLoginTrackService {
class Komga(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService {

companion object {
const val UNREAD = 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@ import androidx.annotation.StringRes
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.EnhancedTrackService
import eu.kanade.tachiyomi.data.track.NoLoginTrackService
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.source.Source
import eu.kanade.domain.manga.model.Manga as DomainManga
import eu.kanade.domain.track.model.Track as DomainTrack

class Suwayomi(private val context: Context, id: Long) : TrackService(id), NoLoginTrackService, EnhancedTrackService {
class Suwayomi(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService {
val api by lazy { TachideskApi() }

@StringRes
Expand Down
1 change: 1 addition & 0 deletions i18n/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -451,6 +451,7 @@
<string name="services">Services</string>
<string name="tracking_info">One-way sync to update the chapter progress in tracking services. Set up tracking for individual entries from their tracking button.</string>
<string name="enhanced_services">Enhanced services</string>
<string name="enhanced_services_not_installed">Available but source not installed: %s</string>
<string name="enhanced_tracking_info">Services that provide enhanced features for specific sources. Entries are automatically tracked when added to your library.</string>
<string name="action_track">Track</string>

Expand Down

0 comments on commit 48cab70

Please sign in to comment.