From 6b7ff824ca1af2dff5fb2cc8cdc5f36db81badbc Mon Sep 17 00:00:00 2001
From: HuanCheng65 <609486518@qq.com>
Date: Fri, 3 Jun 2022 20:05:29 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=91=E8=B4=B4/=E5=9B=9E=E8=B4=B4?=
=?UTF-8?q?=E5=89=8D=E6=8F=90=E7=A4=BA=E9=A3=8E=E9=99=A9=E3=80=81=E8=B7=B3?=
=?UTF-8?q?=E8=BD=AC=E5=AE=98=E6=96=B9=20App?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 5 ++
.../tieba/post/activities/ForumActivity.kt | 54 ++++++++++++++++---
.../tieba/post/activities/ReplyActivity.kt | 36 ++++++++++++-
.../tieba/post/activities/ThreadActivity.kt | 8 +--
.../tieba/post/utils/AppPreferencesUtils.kt | 2 +
.../tieba/post/utils/DispatchUtils.kt | 9 ++++
.../tieba/post/utils/PackageUtils.kt | 13 +++++
.../main/res/drawable/ic_round_warning.xml | 5 +-
app/src/main/res/values/strings.xml | 18 +++++--
app/src/main/res/xml/preferences.xml | 6 +++
10 files changed, 139 insertions(+), 17 deletions(-)
create mode 100644 app/src/main/java/com/huanchengfly/tieba/post/utils/DispatchUtils.kt
create mode 100644 app/src/main/java/com/huanchengfly/tieba/post/utils/PackageUtils.kt
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c185eacf..6b0191b8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -25,6 +25,11 @@
+
+
+
+
+
{
- if ("0" != mDataBean!!.anti?.ifPost) {
- NavigationHelper.newInstance(this).navigationByData(NavigationHelper.ACTION_THREAD_POST, forumName)
- } else {
- if (!TextUtils.isEmpty(mDataBean!!.anti?.forbidInfo)) {
- Toast.makeText(this, mDataBean!!.anti?.forbidInfo, Toast.LENGTH_SHORT).show()
+ if (appPreferences.postOrReplyWarning) {
+ showDialog {
+ setTitle(R.string.title_thread_post_recommend)
+ setMessage(R.string.message_thread_post_recommend)
+ setNegativeButton(R.string.btn_cancel_post, null)
+ setNeutralButton(R.string.btn_continue_post) { _, _ ->
+ launchPost()
+ }
+ setPositiveButton(R.string.button_official_client_post) { _, _ ->
+ try {
+ if (isOfficialClientInstalled()) {
+ startActivity(
+ Intent(Intent.ACTION_VIEW).setData(
+ Uri.parse(
+ "com.baidu.tieba://unidispatch/frs?obj_locate=frs_top_diverse&obj_source=wise&obj_name=index&obj_param2=chrome&has_token=0&qd=scheme&refer=tieba.baidu.com&wise_sample_id=3000232_2&fr=bpush&kw=$forumName"
+ )
+ )
+ )
+ } else {
+ toastShort(R.string.toast_official_client_not_install)
+ }
+ } catch (e: ActivityNotFoundException) {
+ toastShort(R.string.toast_official_client_not_install)
+ }
+ finish()
+ }
}
+ } else {
+ launchPost()
}
}
}
@@ -475,7 +500,14 @@ class ForumActivity : BaseActivity(), View.OnClickListener, OnRefreshedListener,
override fun onResponse(call: Call, response: Response) {
mDataBean!!.forum?.isLike = "1"
- Toast.makeText(this@ForumActivity, getString(R.string.toast_like_success, response.body()!!.info?.memberSum), Toast.LENGTH_SHORT).show()
+ Toast.makeText(
+ this@ForumActivity,
+ getString(
+ R.string.toast_like_success,
+ response.body()!!.info?.memberSum
+ ),
+ Toast.LENGTH_SHORT
+ ).show()
refreshHeaderView()
refreshForumInfo()
}
@@ -485,6 +517,16 @@ class ForumActivity : BaseActivity(), View.OnClickListener, OnRefreshedListener,
}
}
+ private fun launchPost() {
+ if ("0" != mDataBean!!.anti?.ifPost) {
+ WebViewActivity.launch(this, "https://tieba.baidu.com/mo/q/thread_post?word=$forumName")
+ } else {
+ if (!TextUtils.isEmpty(mDataBean!!.anti?.forbidInfo)) {
+ Toast.makeText(this, mDataBean!!.anti?.forbidInfo, Toast.LENGTH_SHORT).show()
+ }
+ }
+ }
+
private fun getNumStr(num: String): String {
val long = num.toLong()
if (long > 9999) {
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt
index f82c9dac..367538b2 100644
--- a/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt
+++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt
@@ -1,8 +1,11 @@
package com.huanchengfly.tieba.post.activities
import android.annotation.SuppressLint
+import android.content.ActivityNotFoundException
import android.content.Intent
+import android.content.Intent.ACTION_VIEW
import android.graphics.Color
+import android.net.Uri
import android.os.Bundle
import android.text.Editable
import android.text.TextUtils
@@ -41,13 +44,13 @@ import com.huanchengfly.tieba.post.interfaces.UploadCallback
import com.huanchengfly.tieba.post.models.PhotoInfoBean
import com.huanchengfly.tieba.post.models.ReplyInfoBean
import com.huanchengfly.tieba.post.models.database.Draft
+import com.huanchengfly.tieba.post.toastShort
import com.huanchengfly.tieba.post.utils.*
import com.huanchengfly.tieba.post.widgets.edittext.widget.UndoableEditText
import com.huanchengfly.tieba.post.widgets.theme.TintConstraintLayout
import com.huanchengfly.tieba.post.widgets.theme.TintImageView
import com.zhihu.matisse.Matisse
import org.litepal.LitePal.where
-import java.util.*
class ReplyActivity : BaseActivity(), View.OnClickListener {
@BindView(R.id.activity_reply_edit_text)
@@ -107,6 +110,37 @@ class ReplyActivity : BaseActivity(), View.OnClickListener {
window.setBackgroundDrawableResource(R.drawable.bg_trans)
initData()
initView()
+ if (appPreferences.postOrReplyWarning) showDialog {
+ setTitle(R.string.title_dialog_reply_warning)
+ setMessage(R.string.message_dialog_reply_warning)
+ setNegativeButton(R.string.btn_cancel_reply) { _, _ ->
+ finish()
+ }
+ setNeutralButton(R.string.btn_continue_reply, null)
+ setPositiveButton(R.string.button_official_client_reply) { _, _ ->
+ try {
+ if (isOfficialClientInstalled()) {
+ startActivity(Intent(ACTION_VIEW).setData(getDispatchUri()))
+ } else {
+ toastShort(R.string.toast_official_client_not_install)
+ }
+ } catch (e: ActivityNotFoundException) {
+ toastShort(R.string.toast_official_client_not_install)
+ }
+ finish()
+ }
+ }
+ }
+
+ private fun getDispatchUri(): Uri? {
+ if (replyInfoBean == null) {
+ return null
+ }
+ return if (replyInfoBean!!.pid != null) {
+ Uri.parse("com.baidu.tieba://unidispatch/pb?obj_locate=comment_lzl_cut_guide&obj_source=wise&obj_name=index&obj_param2=chrome&has_token=0&qd=scheme&refer=tieba.baidu.com&wise_sample_id=3000232_2&hightlight_anchor_pid=${replyInfoBean!!.pid}&is_anchor_to_comment=1&comment_sort_type=0&fr=bpush&tid=${replyInfoBean!!.threadId}")
+ } else {
+ Uri.parse("com.baidu.tieba://unidispatch/pb?obj_locate=pb_reply&obj_source=wise&obj_name=index&obj_param2=chrome&has_token=0&qd=scheme&refer=tieba.baidu.com&wise_sample_id=3000232_2-99999_9&fr=bpush&tid=${replyInfoBean!!.threadId}")
+ }
}
private fun destroyWebView() {
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/ThreadActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/ThreadActivity.kt
index e7b1cc2e..59f03e59 100644
--- a/app/src/main/java/com/huanchengfly/tieba/post/activities/ThreadActivity.kt
+++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/ThreadActivity.kt
@@ -749,14 +749,16 @@ class ThreadActivity : BaseActivity(), View.OnClickListener, IThreadMenuFragment
}
}
- fun invalidateAgreeStatus() {
+ private fun invalidateAgreeStatus() {
val color = ThemeUtils.getColorByAttr(this, R.attr.colorAccent)
if (agreeBtn.imageTintList != null) {
val agreeBtnAnimator: ValueAnimator
val agreeNumAnimator: ValueAnimator
if (agree) {
- agreeNumAnimator = colorAnim(agreeNumTextView, ThemeUtil.getTextColor(this@ThreadActivity), color)
- agreeBtnAnimator = colorAnim(agreeBtn, ThemeUtil.getTextColor(this@ThreadActivity), color)
+ agreeNumAnimator =
+ colorAnim(agreeNumTextView, ThemeUtil.getTextColor(this@ThreadActivity), color)
+ agreeBtnAnimator =
+ colorAnim(agreeBtn, ThemeUtil.getTextColor(this@ThreadActivity), color)
agreeNumAnimator.addListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator) {
agreeNumTextView.setTextColor(color)
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt
index 78010b8a..18910401 100644
--- a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt
+++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt
@@ -81,6 +81,8 @@ open class AppPreferencesUtils(context: Context) {
key = "oksign_slow_mode"
)
+ var postOrReplyWarning by SharedPreferenceDelegates.boolean(defaultValue = true)
+
var radius by SharedPreferenceDelegates.int(defaultValue = 8)
var signDay by SharedPreferenceDelegates.int(defaultValue = -1, key = "sign_day")
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/DispatchUtils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/DispatchUtils.kt
new file mode 100644
index 00000000..d1bb7d80
--- /dev/null
+++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/DispatchUtils.kt
@@ -0,0 +1,9 @@
+package com.huanchengfly.tieba.post.utils
+
+import com.huanchengfly.tieba.post.BaseApplication
+
+val officialClientPackages = arrayOf("com.baidu.tieba", "com.baidu.tieba_mini")
+
+fun isOfficialClientInstalled(): Boolean {
+ return BaseApplication.instance.isAnyPackageInstalled(officialClientPackages)
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/PackageUtils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/PackageUtils.kt
new file mode 100644
index 00000000..bb568a2c
--- /dev/null
+++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/PackageUtils.kt
@@ -0,0 +1,13 @@
+package com.huanchengfly.tieba.post.utils
+
+import android.content.Context
+
+fun Context.isPackageInstalled(packageName: String): Boolean {
+ return packageManager.getPackageInfo(packageName, 0) != null
+}
+
+fun Context.isAnyPackageInstalled(packages: Array): Boolean {
+ return packages.any {
+ isPackageInstalled(it)
+ }
+}
diff --git a/app/src/main/res/drawable/ic_round_warning.xml b/app/src/main/res/drawable/ic_round_warning.xml
index bfe37983..659345f4 100644
--- a/app/src/main/res/drawable/ic_round_warning.xml
+++ b/app/src/main/res/drawable/ic_round_warning.xml
@@ -2,8 +2,9 @@
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
- android:viewportHeight="24">
+ android:viewportHeight="24"
+ android:tint="?attr/colorControlNormal">
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 130b4668..460e20b2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -401,12 +401,7 @@
签到失败
请先登录
正在检查更新
- 建议您使用其他途径发贴
- 继续使用本软件发贴可能会出现发贴失败、发贴被隐藏甚至封号等异常情况,建议您使用官方客户端或 PC 网页版发贴
- 使用官方客户端发贴
启动失败
- 使用 PC 网页版发贴
- 继续使用本软件发贴
写入剪贴板
%1$s的贴子
今天早些时候
@@ -490,4 +485,17 @@
出现了一点小问题(%1$d)
已启用接收自动构建版本更新(需要 App Center 账号)
已禁用接收自动构建版本更新(需要 App Center 账号)
+ 建议使用官方途径发贴
+ 使用本 App 发贴可能会出现发贴失败、被吞等问题,甚至导致账户永久封禁等严重后果。\n我们建议你使用官方途径进行回贴。
+ 使用官方客户端发贴
+ 放弃发贴
+ 无视风险,继续发帖
+ 建议使用官方途径回贴
+ 使用本 App 回贴可能会遇到回贴失败、需验证码等问题,甚至导致账户永久封禁等严重后果。\n我们建议你使用官方途径进行回贴。
+ 放弃回贴
+ 无视风险,继续回贴
+ 使用官方客户端回贴
+ 未安装官方版客户端
+ 使用 PC 网页版发贴
+ 发贴回贴风险提示
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 0b0a3c99..cdf5c579 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -112,6 +112,12 @@
android:key="hideHotMessageList"
android:title="@string/title_hide_hot_message_list" />
+
+