| 
					
				 | 
			
			
				@@ -4,8 +4,10 @@ import android.app.Activity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.view.Menu 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.view.MenuInflater 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.view.MenuItem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import androidx.preference.PreferenceGroup 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import androidx.preference.PreferenceScreen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.R 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import eu.kanade.tachiyomi.data.track.EnhancedTrackService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.data.track.NoLoginTrackService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.data.track.TrackManager 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.data.track.TrackService 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -13,11 +15,13 @@ import eu.kanade.tachiyomi.data.track.anilist.AnilistApi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.data.track.bangumi.BangumiApi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.data.track.myanimelist.MyAnimeListApi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.data.track.shikimori.ShikimoriApi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import eu.kanade.tachiyomi.source.SourceManager 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.ui.setting.track.TrackLoginDialog 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.ui.setting.track.TrackLogoutDialog 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import eu.kanade.tachiyomi.util.preference.add 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.util.preference.defaultValue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import eu.kanade.tachiyomi.util.preference.iconRes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.util.preference.infoPreference 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import eu.kanade.tachiyomi.util.preference.initThenAdd 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.util.preference.onClick 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.util.preference.preferenceCategory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eu.kanade.tachiyomi.util.preference.switchPreference 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -33,6 +37,7 @@ class SettingsTrackingController : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     TrackLogoutDialog.Listener { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private val trackManager: TrackManager by injectLazy() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private val sourceManager: SourceManager by injectLazy() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         titleRes = R.string.pref_category_tracking 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -42,11 +47,7 @@ class SettingsTrackingController : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             titleRes = R.string.pref_auto_update_manga_sync 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             defaultValue = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        switchPreference { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            key = Keys.autoAddTrack 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            titleRes = R.string.pref_auto_add_track 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            defaultValue = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         preferenceCategory { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             titleRes = R.string.services 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -67,26 +68,37 @@ class SettingsTrackingController : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             trackPreference(trackManager.bangumi) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 activity?.openInBrowser(BangumiApi.authUrl(), trackManager.bangumi.getLogoColor()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            infoPreference(R.string.tracking_info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        preferenceCategory { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            titleRes = R.string.enhanced_services 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            switchPreference { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                key = Keys.autoAddTrack 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                titleRes = R.string.pref_auto_add_track 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                defaultValue = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             trackPreference(trackManager.komga) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 trackManager.komga.loginNoop() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 updatePreference(trackManager.komga.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        preferenceCategory { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            infoPreference(R.string.tracking_info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            infoPreference(R.string.enhanced_tracking_info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private inline fun PreferenceScreen.trackPreference( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private inline fun PreferenceGroup.trackPreference( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         service: TrackService, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         crossinline login: () -> Unit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ): LoginPreference { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return initThenAdd( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return add( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             LoginPreference(context).apply { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 key = Keys.trackUsername(service.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 titleRes = service.nameRes() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                iconRes = service.getLogo() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 onClick { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (service.isLogged) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (service is NoLoginTrackService) { 
			 |