mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	@@ -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
 | 
			
		||||
@@ -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(),
 | 
			
		||||
@@ -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)),
 | 
			
		||||
            ),
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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.
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +0,0 @@
 | 
			
		||||
package eu.kanade.tachiyomi.data.track
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A TrackService that doesn't need explicit login.
 | 
			
		||||
 */
 | 
			
		||||
interface NoLoginTrackService {
 | 
			
		||||
    fun loginNoop()
 | 
			
		||||
}
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,6 @@ 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
 | 
			
		||||
@@ -15,7 +14,7 @@ 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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user