From 7272dc67b74c0e36177222a15c3cbd20ea34bd5b Mon Sep 17 00:00:00 2001 From: Cloudburst <18114966+C10udburst@users.noreply.github.com> Date: Mon, 31 Oct 2022 12:33:09 +0100 Subject: [PATCH] fix chip tint and make adding repos by url easier --- .../cloudstream3/plugins/RepositoryManager.kt | 22 +++++++++++ .../settings/extensions/ExtensionsFragment.kt | 38 +++++++------------ app/src/main/res/values/styles.xml | 13 ++++--- 3 files changed, 43 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/plugins/RepositoryManager.kt b/app/src/main/java/com/lagradost/cloudstream3/plugins/RepositoryManager.kt index 2564abd0..542e2136 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/plugins/RepositoryManager.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/plugins/RepositoryManager.kt @@ -70,6 +70,28 @@ object RepositoryManager { getKey("PREBUILT_REPOSITORIES") ?: emptyArray() } + suspend fun parseRepoUrl(url: String): String? { + val fixedUrl = url.trim() + return if (fixedUrl.contains("^https?://".toRegex())) { + fixedUrl + } else if (fixedUrl.contains("^(cloudstreamrepo://)|(https://cs\\.repo/)".toRegex())) { + fixedUrl.replace("^(cloudstreamrepo://)|(https://cs\\.repo/)".toRegex(), "").let { + return@let if (!it.contains("^https?://".toRegex())) + "https://${it}" + else fixedUrl + } + } else if (fixedUrl.matches("^[a-zA-Z0-9!_-]+$".toRegex())) { + suspendSafeApiCall { + app.get("https://l.cloudstream.cf/${fixedUrl}").let { + return@let if (it.isSuccessful && !it.url.startsWith("https://cutt.ly/branded-domains")) it.url + else app.get("https://cutt.ly/${fixedUrl}").let let2@{ it2 -> + return@let2 if (it2.isSuccessful) it2.url else null + } + } + } + } else null + } + suspend fun parseRepository(url: String): Repository? { return suspendSafeApiCall { // Take manifestVersion and such into account later diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/ExtensionsFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/ExtensionsFragment.kt index 418519e2..49f40879 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/ExtensionsFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/ExtensionsFragment.kt @@ -33,8 +33,6 @@ import com.lagradost.cloudstream3.widget.LinearRecycleViewLayoutManager import kotlinx.android.synthetic.main.add_repo_input.* import kotlinx.android.synthetic.main.fragment_extensions.* -const val PUBLIC_REPOSITORIES_LIST = "https://recloudstream.github.io/repos/" - class ExtensionsFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, @@ -186,15 +184,7 @@ class ExtensionsFragment : Fragment() { (activity?.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager?)?.primaryClip?.getItemAt( 0 )?.text?.toString()?.let { copy -> - // Fix our own repo links and only paste the text if it's a link. - if (copy.startsWith("http")) { - val fixedUrl = if (copy.startsWith("https://cs.repo")) { - "https://" + copy.substringAfter("?") - } else { - copy - } - dialog.repo_url_input?.setText(fixedUrl) - } + dialog.repo_url_input?.setText(copy) } // dialog.list_repositories?.setOnClickListener { @@ -206,21 +196,21 @@ class ExtensionsFragment : Fragment() { // dialog.text2?.text = provider.name dialog.apply_btt?.setOnClickListener secondListener@{ val name = dialog.repo_name_input?.text?.toString() - val url = dialog.repo_url_input?.text?.toString() - if (url.isNullOrBlank()) { - showToast(activity, R.string.error_invalid_data, Toast.LENGTH_SHORT) - return@secondListener - } - ioSafe { - val fixedName = if (!name.isNullOrBlank()) name - else RepositoryManager.parseRepository(url)?.name ?: "No name" + val url = dialog.repo_url_input?.text?.toString() + ?.let { it1 -> RepositoryManager.parseRepoUrl(it1) } + if (url.isNullOrBlank()) { + showToast(activity, R.string.error_invalid_data, Toast.LENGTH_SHORT) + } else { + val fixedName = if (!name.isNullOrBlank()) name + else RepositoryManager.parseRepository(url)?.name ?: "No name" - val newRepo = RepositoryData(fixedName, url) - RepositoryManager.addRepository(newRepo) - extensionViewModel.loadStats() - extensionViewModel.loadRepositories() - this@ExtensionsFragment.activity?.downloadAllPluginsDialog(url, fixedName) + val newRepo = RepositoryData(fixedName, url) + RepositoryManager.addRepository(newRepo) + extensionViewModel.loadStats() + extensionViewModel.loadRepositories() + this@ExtensionsFragment.activity?.downloadAllPluginsDialog(url, fixedName) + } } dialog.dismissSafe(activity) } diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 70ac7516..f0bb2214 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -81,6 +81,7 @@ @color/transparent @color/chip_color_text @color/chip_color_text + @color/chip_color_text