From 8172696d1a1f194795b9140eeaf9dc0d443c46f3 Mon Sep 17 00:00:00 2001 From: Cloudburst <18114966+C10udburst@users.noreply.github.com> Date: Mon, 5 Sep 2022 19:09:27 +0200 Subject: [PATCH] update votes to sha256 and add github link --- .../cloudstream3/plugins/VotingApi.kt | 32 +++++++++---------- .../ui/settings/extensions/PluginAdapter.kt | 14 +++++--- .../extensions/PluginDetailsFragment.kt | 8 +++++ .../res/layout/fragment_plugin_details.xml | 9 ++++++ 4 files changed, 42 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/plugins/VotingApi.kt b/app/src/main/java/com/lagradost/cloudstream3/plugins/VotingApi.kt index d167ac07..0a7057e5 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/plugins/VotingApi.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/plugins/VotingApi.kt @@ -20,47 +20,45 @@ object VotingApi { // please do not cheat the votes lol private fun transformUrl(url: String): String = // dont touch or all votes get reset MessageDigest - .getInstance("SHA-1") + .getInstance("SHA-256") .digest("${url}#funny-salt".toByteArray()) .fold("") { str, it -> str + "%02x".format(it) } suspend fun SitePlugin.getVotes(): Int { - if (repositoryUrl == null) return 0 - return getVotes(repositoryUrl, url) + return getVotes(url) } suspend fun SitePlugin.vote(requestType: VoteType): Int { - if (repositoryUrl == null) return 0 - return vote(repositoryUrl, url, requestType) + return vote(url, requestType) } fun SitePlugin.getVoteType(): VoteType { if (repositoryUrl == null) return VoteType.NONE - return getVoteType(repositoryUrl, url) + return getVoteType(url) } - suspend fun getVotes(repositoryUrl: String, pluginUrl: String): Int { - val url = "${apiDomain}/get/cs3-votes-${transformUrl(repositoryUrl)}/${transformUrl(pluginUrl)}" + suspend fun getVotes(pluginUrl: String): Int { + val url = "${apiDomain}/get/cs3-votes/${transformUrl(pluginUrl)}" Log.d(LOGKEY, "Requesting: $url") return app.get(url).parsedSafe()?.value ?: (0.also { ioSafe { - createBucket(repositoryUrl, pluginUrl) + createBucket(pluginUrl) } }) } - fun getVoteType(repositoryUrl: String, pluginUrl: String): VoteType { - return getKey("cs3-votes-${transformUrl(repositoryUrl)}/${transformUrl(pluginUrl)}") ?: VoteType.NONE + fun getVoteType(pluginUrl: String): VoteType { + return getKey("cs3-votes/${transformUrl(pluginUrl)}") ?: VoteType.NONE } - private suspend fun createBucket(repositoryUrl: String, pluginUrl: String) { - val url = "${apiDomain}/create?namespace=cs3-votes-${transformUrl(repositoryUrl)}&key=${transformUrl(pluginUrl)}&value=0&update_lowerbound=-2&update_upperbound=2&enable_reset=0" + private suspend fun createBucket(pluginUrl: String) { + val url = "${apiDomain}/create?namespace=cs3-votes&key=${transformUrl(pluginUrl)}&value=0&update_lowerbound=-2&update_upperbound=2&enable_reset=0" Log.d(LOGKEY, "Requesting: $url") app.get(url) } - suspend fun vote(repositoryUrl: String, pluginUrl: String, requestType: VoteType): Int { - val savedType: VoteType = getKey("cs3-votes-${transformUrl(repositoryUrl)}/${transformUrl(pluginUrl)}") ?: VoteType.NONE + suspend fun vote(pluginUrl: String, requestType: VoteType): Int { + val savedType: VoteType = getKey("cs3-votes/${transformUrl(pluginUrl)}") ?: VoteType.NONE var newType: VoteType = requestType var changeValue = 0 if (requestType == savedType) { @@ -71,11 +69,11 @@ object VotingApi { // please do not cheat the votes lol } else if (savedType != requestType) { changeValue = -savedType.value + requestType.value } - val url = "${apiDomain}/update/cs3-votes-${transformUrl(repositoryUrl)}/${transformUrl(pluginUrl)}?amount=${changeValue}" + val url = "${apiDomain}/update/cs3-votes/${transformUrl(pluginUrl)}?amount=${changeValue}" Log.d(LOGKEY, "Requesting: $url") val res = app.get(url).parsedSafe()?.value if (res != null) { - setKey("cs3-votes-${transformUrl(repositoryUrl)}/${transformUrl(pluginUrl)}", newType) + setKey("cs3-votes/${transformUrl(pluginUrl)}", newType) } return res ?: 0 } diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginAdapter.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginAdapter.kt index 244e37a7..7d8cbcea 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginAdapter.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginAdapter.kt @@ -135,7 +135,7 @@ class PluginAdapter( val metadata = data.plugin.second val disabled = metadata.status == PROVIDER_STATUS_DOWN val alpha = if (disabled) 0.6f else 1f - val isLocal = data.plugin.second.repositoryUrl == null + val isLocal = !data.plugin.second.url.startsWith("http") itemView.main_text?.alpha = alpha itemView.sub_text?.alpha = alpha @@ -216,12 +216,18 @@ class PluginAdapter( itemView.lang_icon.text = fromTwoLettersToLanguage(metadata.language) } - ioSafe { - metadata.getVotes().main { - itemView.ext_votes?.setText(txt(R.string.votes_format, prettyCount(it))) + if (isLocal) { + itemView.ext_votes?.isVisible = false + } else { + itemView.ext_votes?.isVisible = true + ioSafe { + metadata.getVotes().main { + itemView.ext_votes?.setText(txt(R.string.votes_format, prettyCount(it))) + } } } + if (metadata.fileSize != null) { itemView.ext_filesize?.isVisible = true itemView.ext_filesize?.text = formatShortFileSize(itemView.context, metadata.fileSize) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginDetailsFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginDetailsFragment.kt index 6afb283b..60cfa8d7 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginDetailsFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginDetailsFragment.kt @@ -18,6 +18,7 @@ import com.lagradost.cloudstream3.plugins.VotingApi.vote import com.lagradost.cloudstream3.utils.Coroutines.ioSafe import com.lagradost.cloudstream3.utils.Coroutines.main import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute +import com.lagradost.cloudstream3.AcraApplication.Companion.openBrowser class PluginDetailsFragment(val data: PluginViewData) : BottomSheetDialogFragment() { @@ -68,6 +69,13 @@ class PluginDetailsFragment(val data: PluginViewData) : BottomSheetDialogFragmen plugin_status?.text = resources.getStringArray(R.array.extension_statuses)[metadata.status] plugin_types?.text = if ((metadata.tvTypes == null) || metadata.tvTypes.isEmpty()) getString(R.string.no_data) else metadata.tvTypes.joinToString(", ") + github_btn.setOnClickListener { + if (metadata.repositoryUrl != null) { + openBrowser(metadata.repositoryUrl) + } + + } + upvote.setOnClickListener { ioSafe { metadata.vote(VotingApi.VoteType.UPVOTE).main { diff --git a/app/src/main/res/layout/fragment_plugin_details.xml b/app/src/main/res/layout/fragment_plugin_details.xml index 400e1adf..feca832a 100644 --- a/app/src/main/res/layout/fragment_plugin_details.xml +++ b/app/src/main/res/layout/fragment_plugin_details.xml @@ -34,6 +34,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" + android:layout_weight="1" android:gravity="center_vertical" android:paddingStart="10dp" android:paddingEnd="10dp" @@ -41,6 +42,14 @@ android:textSize="20sp" android:textStyle="normal" tools:text="Hello world" /> + +