mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	Add back provider languages option (settings > providers)
If any of your favorite sites disappear check that setting
This commit is contained in:
		
							parent
							
								
									ddae2ddf3c
								
							
						
					
					
						commit
						1c494f0ce2
					
				
					 9 changed files with 75 additions and 35 deletions
				
			
		|  | @ -18,8 +18,6 @@ import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSet | |||
| import com.lagradost.cloudstream3.utils.AppUtils.toJson | ||||
| import com.lagradost.cloudstream3.utils.Coroutines.threadSafeListOf | ||||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| import com.lagradost.cloudstream3.utils.Qualities | ||||
| import com.lagradost.cloudstream3.utils.loadExtractor | ||||
| import okhttp3.Interceptor | ||||
| import java.text.SimpleDateFormat | ||||
| import java.util.* | ||||
|  | @ -32,6 +30,12 @@ const val USER_AGENT = | |||
| val mapper = JsonMapper.builder().addModule(KotlinModule()) | ||||
|     .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build()!! | ||||
| 
 | ||||
| /** | ||||
|  * Defines the constant for the all languages preference, if this is set then it is | ||||
|  * the equivalent of all languages being set | ||||
|  **/ | ||||
| const val AllLanguagesName = "universal" | ||||
| 
 | ||||
| object APIHolder { | ||||
|     val unixTime: Long | ||||
|         get() = System.currentTimeMillis() / 1000L | ||||
|  | @ -160,7 +164,8 @@ object APIHolder { | |||
| 
 | ||||
|         val hashSet = HashSet<String>() | ||||
|         val activeLangs = getApiProviderLangSettings() | ||||
|         hashSet.addAll(apis.filter { activeLangs.contains(it.lang) }.map { it.name }) | ||||
|         val hasUniversal = activeLangs.contains(AllLanguagesName) | ||||
|         hashSet.addAll(apis.filter { hasUniversal || activeLangs.contains(it.lang) }.map { it.name }) | ||||
| 
 | ||||
|         /*val set = settingsManager.getStringSet( | ||||
|             this.getString(R.string.search_providers_list_key), | ||||
|  | @ -196,11 +201,11 @@ object APIHolder { | |||
| 
 | ||||
|     fun Context.getApiProviderLangSettings(): HashSet<String> { | ||||
|         val settingsManager = PreferenceManager.getDefaultSharedPreferences(this) | ||||
|         val hashSet = HashSet<String>() | ||||
|         hashSet.add("en") // def is only en | ||||
|         val hashSet = hashSetOf(AllLanguagesName) // def is all languages | ||||
| //        hashSet.add("en") // def is only en | ||||
|         val list = settingsManager.getStringSet( | ||||
|             this.getString(R.string.provider_lang_key), | ||||
|             hashSet.toMutableSet() | ||||
|             hashSet | ||||
|         ) | ||||
| 
 | ||||
|         if (list.isNullOrEmpty()) return hashSet | ||||
|  | @ -246,7 +251,8 @@ object APIHolder { | |||
|             null | ||||
|         } ?: default | ||||
|         val langs = this.getApiProviderLangSettings() | ||||
|         val allApis = apis.filter { langs.contains(it.lang) } | ||||
|         val hasUniversal = langs.contains(AllLanguagesName) | ||||
|         val allApis = apis.filter { hasUniversal || langs.contains(it.lang) } | ||||
|             .filter { api -> api.hasMainPage || !hasHomePageIsRequired } | ||||
|         return if (currentPrefMedia.isEmpty()) { | ||||
|             allApis | ||||
|  |  | |||
|  | @ -32,6 +32,7 @@ import com.google.android.material.button.MaterialButton | |||
| import com.google.android.material.chip.Chip | ||||
| import com.google.android.material.chip.ChipGroup | ||||
| import com.lagradost.cloudstream3.* | ||||
| import com.lagradost.cloudstream3.APIHolder.allProviders | ||||
| import com.lagradost.cloudstream3.APIHolder.apis | ||||
| import com.lagradost.cloudstream3.APIHolder.filterProviderByPreferredMedia | ||||
| import com.lagradost.cloudstream3.APIHolder.getApiFromNameNull | ||||
|  | @ -349,7 +350,9 @@ class HomeFragment : Fragment() { | |||
|             builder.setContentView(R.layout.home_select_mainpage) | ||||
|             builder.show() | ||||
|             builder.let { dialog -> | ||||
|                 val isMultiLang = getApiProviderLangSettings().size > 1 | ||||
|                 val isMultiLang = getApiProviderLangSettings().let { set -> | ||||
|                     set.size > 1 || set.contains(AllLanguagesName) | ||||
|                 } | ||||
|                 //dialog.window?.setGravity(Gravity.BOTTOM) | ||||
| 
 | ||||
|                 var currentApiName = selectedApiName | ||||
|  |  | |||
|  | @ -221,7 +221,9 @@ class SearchFragment : Fragment() { | |||
|                 builder.setContentView(R.layout.home_select_mainpage) | ||||
|                 builder.show() | ||||
|                 builder.let { dialog -> | ||||
|                     val isMultiLang = ctx.getApiProviderLangSettings().size > 1 | ||||
|                     val isMultiLang = ctx.getApiProviderLangSettings().let { set -> | ||||
|                         set.size > 1 || set.contains(AllLanguagesName) | ||||
|                     } | ||||
| 
 | ||||
|                     val cancelBtt = dialog.findViewById<MaterialButton>(R.id.cancel_btt) | ||||
|                     val applyBtt = dialog.findViewById<MaterialButton>(R.id.apply_btt) | ||||
|  |  | |||
|  | @ -1,6 +1,5 @@ | |||
| package com.lagradost.cloudstream3.ui.settings | ||||
| 
 | ||||
| import android.content.Context | ||||
| import android.os.Bundle | ||||
| import android.view.View | ||||
| import androidx.preference.PreferenceFragmentCompat | ||||
|  | @ -9,17 +8,15 @@ import com.lagradost.cloudstream3.* | |||
| import com.lagradost.cloudstream3.APIHolder.getApiDubstatusSettings | ||||
| import com.lagradost.cloudstream3.APIHolder.getApiProviderLangSettings | ||||
| import com.lagradost.cloudstream3.AcraApplication.Companion.removeKey | ||||
| import com.lagradost.cloudstream3.mvvm.logError | ||||
| import com.lagradost.cloudstream3.ui.APIRepository | ||||
| import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref | ||||
| import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom | ||||
| import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar | ||||
| import com.lagradost.cloudstream3.utils.USER_SELECTED_HOMEPAGE_API | ||||
| import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog | ||||
| import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showMultiDialog | ||||
| import com.lagradost.cloudstream3.utils.SubtitleHelper | ||||
| import com.lagradost.cloudstream3.utils.UIHelper.hideKeyboard | ||||
| 
 | ||||
| import kotlin.reflect.jvm.internal.impl.descriptors.deserialization.PlatformDependentDeclarationFilter.All | ||||
| 
 | ||||
| 
 | ||||
| class SettingsProviders : PreferenceFragmentCompat() { | ||||
|  | @ -63,13 +60,17 @@ class SettingsProviders : PreferenceFragmentCompat() { | |||
| 
 | ||||
|         getPref(R.string.prefer_media_type_key)?.setOnPreferenceClickListener { | ||||
|             val names = enumValues<TvType>().sorted().map { it.name } | ||||
|             val default = enumValues<TvType>().sorted().filter { it != TvType.NSFW }.map { it.ordinal } | ||||
|             val default = | ||||
|                 enumValues<TvType>().sorted().filter { it != TvType.NSFW }.map { it.ordinal } | ||||
|             val defaultSet = default.map { it.toString() }.toSet() | ||||
|             val currentList = try { | ||||
|                 settingsManager.getStringSet(getString(R.string.prefer_media_type_key), defaultSet)?.map { | ||||
|                     it.toInt() | ||||
|                 } | ||||
|             } catch (e: Throwable) { null }  ?: default | ||||
|                 settingsManager.getStringSet(getString(R.string.prefer_media_type_key), defaultSet) | ||||
|                     ?.map { | ||||
|                         it.toInt() | ||||
|                     } | ||||
|             } catch (e: Throwable) { | ||||
|                 null | ||||
|             } ?: default | ||||
| 
 | ||||
|             activity?.showMultiDialog( | ||||
|                 names, | ||||
|  | @ -89,19 +90,22 @@ class SettingsProviders : PreferenceFragmentCompat() { | |||
| 
 | ||||
|         getPref(R.string.provider_lang_key)?.setOnPreferenceClickListener { | ||||
|             activity?.getApiProviderLangSettings()?.let { current -> | ||||
|                 val langs = APIHolder.apis.map { it.lang }.toSet() | ||||
|                     .sortedBy { SubtitleHelper.fromTwoLettersToLanguage(it) } | ||||
|                 val languages = APIHolder.apis.map { it.lang }.toSet() | ||||
|                     .sortedBy { SubtitleHelper.fromTwoLettersToLanguage(it) } + AllLanguagesName | ||||
| 
 | ||||
|                 val currentList = ArrayList<Int>() | ||||
|                 for (i in current) { | ||||
|                     currentList.add(langs.indexOf(i)) | ||||
|                 val currentList = current.map { | ||||
|                     languages.indexOf(it) | ||||
|                 } | ||||
| 
 | ||||
|                 val names = langs.map { | ||||
|                     val emoji = SubtitleHelper.getFlagFromIso(it) | ||||
|                     val name = SubtitleHelper.fromTwoLettersToLanguage(it) | ||||
|                     val fullName = "$emoji $name" | ||||
|                     Pair(it, fullName) | ||||
|                 val names = languages.map { | ||||
|                     if (it == AllLanguagesName) { | ||||
|                         Pair(it, getString(R.string.all_languages_preference)) | ||||
|                     } else { | ||||
|                         val emoji = SubtitleHelper.getFlagFromIso(it) | ||||
|                         val name = SubtitleHelper.fromTwoLettersToLanguage(it) | ||||
|                         val fullName = "$emoji $name" | ||||
|                         Pair(it, fullName) | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 activity?.showMultiDialog( | ||||
|  |  | |||
|  | @ -7,6 +7,9 @@ import android.view.ViewGroup | |||
| import androidx.core.view.isVisible | ||||
| import androidx.fragment.app.Fragment | ||||
| import androidx.navigation.fragment.findNavController | ||||
| import com.lagradost.cloudstream3.APIHolder.apis | ||||
| import com.lagradost.cloudstream3.APIHolder.getApiProviderLangSettings | ||||
| import com.lagradost.cloudstream3.AllLanguagesName | ||||
| import com.lagradost.cloudstream3.MainActivity.Companion.afterRepositoryLoadedEvent | ||||
| import com.lagradost.cloudstream3.R | ||||
| import com.lagradost.cloudstream3.plugins.RepositoryManager | ||||
|  | @ -96,7 +99,14 @@ class SetupFragmentExtensions : Fragment() { | |||
|             next_btt?.setOnClickListener { | ||||
|                 // Continue setup | ||||
|                 if (isSetup) | ||||
|                     findNavController().navigate(R.id.action_navigation_setup_extensions_to_navigation_setup_provider_languages) | ||||
|                     if ( | ||||
|                     // If any available languages | ||||
|                         apis.distinctBy { it.lang }.size > 1 | ||||
|                     ) { | ||||
|                         findNavController().navigate(R.id.action_navigation_setup_extensions_to_navigation_setup_provider_languages) | ||||
|                     } else { | ||||
|                         findNavController().navigate(R.id.action_navigation_setup_extensions_to_navigation_setup_media) | ||||
|                     } | ||||
|                 else | ||||
|                     findNavController().navigate(R.id.navigation_home) | ||||
|             } | ||||
|  |  | |||
|  | @ -15,7 +15,6 @@ import com.lagradost.cloudstream3.CommonActivity | |||
| import com.lagradost.cloudstream3.R | ||||
| import com.lagradost.cloudstream3.mvvm.normalSafeApiCall | ||||
| import com.lagradost.cloudstream3.plugins.PluginManager | ||||
| import com.lagradost.cloudstream3.plugins.RepositoryManager.PREBUILT_REPOSITORIES | ||||
| import com.lagradost.cloudstream3.ui.settings.appLanguages | ||||
| import com.lagradost.cloudstream3.ui.settings.getCurrentLocale | ||||
| import com.lagradost.cloudstream3.utils.SubtitleHelper | ||||
|  |  | |||
|  | @ -12,6 +12,7 @@ import androidx.navigation.fragment.findNavController | |||
| import androidx.preference.PreferenceManager | ||||
| import com.lagradost.cloudstream3.APIHolder | ||||
| import com.lagradost.cloudstream3.APIHolder.getApiProviderLangSettings | ||||
| import com.lagradost.cloudstream3.AllLanguagesName | ||||
| import com.lagradost.cloudstream3.R | ||||
| import com.lagradost.cloudstream3.utils.SubtitleHelper | ||||
| import com.lagradost.cloudstream3.utils.UIHelper.fixPaddingStatusbar | ||||
|  | @ -39,14 +40,21 @@ class SetupFragmentProviderLanguage : Fragment() { | |||
| 
 | ||||
|             val current = this.getApiProviderLangSettings() | ||||
|             val langs = APIHolder.apis.map { it.lang }.toSet() | ||||
|                 .sortedBy { SubtitleHelper.fromTwoLettersToLanguage(it) } | ||||
|                 .sortedBy { SubtitleHelper.fromTwoLettersToLanguage(it) } + AllLanguagesName | ||||
| 
 | ||||
|             val currentList = | ||||
|                 current.map { langs.indexOf(it) }.filter { it != -1 } // TODO LOOK INTO | ||||
| 
 | ||||
|             val currentList = current.map { langs.indexOf(it) }.filter { it != -1 } // TODO LOOK INTO | ||||
|             val languageNames = langs.map { | ||||
|                 val emoji = SubtitleHelper.getFlagFromIso(it) | ||||
|                 val name = SubtitleHelper.fromTwoLettersToLanguage(it) | ||||
|                 "$emoji $name" | ||||
|                 if (it == AllLanguagesName) { | ||||
|                     getString(R.string.all_languages_preference) | ||||
|                 } else { | ||||
|                     val emoji = SubtitleHelper.getFlagFromIso(it) | ||||
|                     val name = SubtitleHelper.fromTwoLettersToLanguage(it) | ||||
|                     "$emoji $name" | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             arrayAdapter.addAll(languageNames) | ||||
| 
 | ||||
|             listview1?.adapter = arrayAdapter | ||||
|  |  | |||
|  | @ -553,6 +553,13 @@ | |||
|             app:exitAnim="@anim/exit_anim" | ||||
|             app:popEnterAnim="@anim/enter_anim" | ||||
|             app:popExitAnim="@anim/exit_anim" /> | ||||
|         <action | ||||
|             android:id="@+id/action_navigation_setup_extensions_to_navigation_setup_media" | ||||
|             app:destination="@id/navigation_setup_media" | ||||
|             app:enterAnim="@anim/enter_anim" | ||||
|             app:exitAnim="@anim/exit_anim" | ||||
|             app:popEnterAnim="@anim/enter_anim" | ||||
|             app:popExitAnim="@anim/exit_anim" /> | ||||
|     </fragment> | ||||
| 
 | ||||
|     <fragment | ||||
|  |  | |||
|  | @ -637,4 +637,5 @@ | |||
|     <string name="player_settings_play_in_web">Web Video Cast</string> | ||||
|     <string name="player_settings_play_in_browser">Browser</string> | ||||
|     <string name="app_not_found_error">App not found</string> | ||||
|     <string name="all_languages_preference">All Languages</string> | ||||
| </resources> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue