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