From f30498e83abc8e08c8653370f59a925703513a92 Mon Sep 17 00:00:00 2001 From: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com> Date: Thu, 11 Aug 2022 11:14:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Bugs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tieba/post/activities/ForumActivity.kt | 3 +- .../post/activities/PhotoViewActivity.kt | 6 +- .../tieba/post/activities/ReplyActivity.kt | 6 +- .../tieba/post/activities/UserActivity.kt | 59 ++++++++++--------- .../tieba/post/activities/WebViewActivity.kt | 29 +++++---- .../post/api/retrofit/RetrofitTiebaApi.kt | 16 ++++- .../post/fragments/UserLikeForumFragment.java | 5 +- .../tieba/post/fragments/UserPostFragment.kt | 6 +- .../huanchengfly/tieba/post/utils/utils.kt | 16 +++++ app/src/main/res/values/strings.xml | 2 + 10 files changed, 97 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/ForumActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/ForumActivity.kt index 90f80d1b..c18e2325 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/activities/ForumActivity.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/ForumActivity.kt @@ -591,12 +591,13 @@ class ForumActivity : BaseActivity(), View.OnClickListener, OnRefreshedListener, call: Call, response: Response ) { + val data = response.body() ?: return mDataBean!!.forum?.isLike = "1" Toast.makeText( this@ForumActivity, getString( R.string.toast_like_success, - response.body()!!.info?.memberSum + data.info?.memberSum ), Toast.LENGTH_SHORT ).show() diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/PhotoViewActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/PhotoViewActivity.kt index 883aa8eb..617fdc1b 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/activities/PhotoViewActivity.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/PhotoViewActivity.kt @@ -88,13 +88,13 @@ class PhotoViewActivity : BaseActivity(), OnChangeBottomBarVisibilityListener, false ).enqueue(object : Callback { override fun onResponse(call: Call, response: Response) { - val data = response.body()!! mLoading = false - amount = data.picAmount ?: "${photoViewBeans.size}" + val data = response.body() + amount = data?.picAmount ?: "${photoViewBeans.size}" updateCounter(mViewPager.currentItem) val picBeans: MutableList = ArrayList() val imgInfoBeans: MutableList = ArrayList() - if (data.picList?.isNotEmpty()!!) { + if (data?.picList?.isNotEmpty() == true) { val index = data.picList.last().overAllIndex?.toInt() if (index != null) { loadFinished = index >= amount!!.toInt() 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 7cd27c46..a0e72148 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 @@ -201,7 +201,7 @@ class ReplyActivity : BaseActivity(), View.OnClickListener, val intent = intent val jsonData = intent.getStringExtra("data") replyInfoBean = GsonUtil.getGson().fromJson(jsonData, ReplyInfoBean::class.java) - val draft = where("hash = ?", replyInfoBean?.hash()) + val draft = where("hash = ?", replyInfoBean?.hash() ?: "") .findFirst(Draft::class.java) if (draft != null) { content = draft.content @@ -502,6 +502,10 @@ class ReplyActivity : BaseActivity(), View.OnClickListener, private fun realReply( /*String code, String md5*/) { + if (replyInfoBean == null && replyInfoBean!!.forumId == null) { + toastShort(R.string.toast_data_error) + return + } loadingDialog = LoadingDialog(this) loadingDialog!!.show() getImageInfo(object : ReplyContentCallback { diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/UserActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/UserActivity.kt index d11332bd..1ca25696 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/activities/UserActivity.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/UserActivity.kt @@ -181,35 +181,40 @@ class UserActivity : BaseActivity() { } fun refreshHeader() { - titleView.text = profileBean!!.user!!.nameShow - sloganView.text = profileBean!!.user!!.intro - followStatTv.text = "${profileBean!!.user!!.concernNum}" - fansStatTv.text = "${profileBean!!.user!!.fansNum}" - //getString(R.string.tip_stat, profileBean!!.user!!.concernNum, profileBean!!.user!!.fansNum) - if (avatarView.tag == null) { - ImageUtil.load( - avatarView, - ImageUtil.LOAD_TYPE_AVATAR, - StringUtil.getAvatarUrl(profileBean!!.user!!.portrait) - ) - ImageUtil.initImageView( - avatarView, - PhotoViewBean(StringUtil.getAvatarUrl(profileBean!!.user!!.portrait)) - ) - } - if (TextUtils.equals(AccountUtil.getUid(this), profileBean!!.user!!.id)) { - actionBtn.setText(R.string.menu_edit_info) - } else { - if ("1" == profileBean!!.user!!.hasConcerned) { - actionBtn.setText(R.string.button_unfollow) - } else { - actionBtn.setText(R.string.button_follow) + profileBean?.let { + if (it.user == null) { + return } + titleView.text = it.user.nameShow + sloganView.text = it.user.intro + followStatTv.text = "${it.user.concernNum}" + fansStatTv.text = "${it.user.fansNum}" + //getString(R.string.tip_stat, profileBean!!.user!!.concernNum, profileBean!!.user!!.fansNum) + if (avatarView.tag == null) { + ImageUtil.load( + avatarView, + ImageUtil.LOAD_TYPE_AVATAR, + StringUtil.getAvatarUrl(it.user.portrait) + ) + ImageUtil.initImageView( + avatarView, + PhotoViewBean(StringUtil.getAvatarUrl(it.user.portrait)) + ) + } + if (TextUtils.equals(AccountUtil.getUid(this), it.user.id)) { + actionBtn.setText(R.string.menu_edit_info) + } else { + if ("1" == it.user.hasConcerned) { + actionBtn.setText(R.string.button_unfollow) + } else { + actionBtn.setText(R.string.button_follow) + } + } + sexTv.text = + if (it.user.sex == "1") "♂" else if (it.user.sex == "2") "♀" else "?" + tbAgeTv.text = getString(R.string.tb_age, it.user.tbAge) + infoChips.visibility = View.VISIBLE } - sexTv.text = - if (profileBean!!.user!!.sex == "1") "♂" else if (profileBean!!.user!!.sex == "2") "♀" else "?" - tbAgeTv.text = getString(R.string.tb_age, profileBean!!.user!!.tbAge) - infoChips.visibility = View.VISIBLE } override fun onCreateOptionsMenu(menu: Menu): Boolean { diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/WebViewActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/WebViewActivity.kt index 952887ef..3649e572 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/activities/WebViewActivity.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/WebViewActivity.kt @@ -45,18 +45,23 @@ class WebViewActivity : BaseActivity(), OnReceivedTitleListener, OnOverrideUrlLo if (title != null) { setTitle(title) } - mUrl = intent.getStringExtra(EXTRA_URL) - mWebViewFragment = WebViewFragment.newInstance( - mUrl, - TAG, - title, - false, - true, - mUrl!!.contains(DOMAIN_SAPI) - ).also { - supportFragmentManager.beginTransaction() - .replace(R.id.main, it, TAG) - .commit() + mUrl = intent.getStringExtra(EXTRA_URL).also { url -> + if (url != null) { + mWebViewFragment = WebViewFragment.newInstance( + url, + TAG, + title, + false, + true, + url.contains(DOMAIN_SAPI) + ).also { + supportFragmentManager.beginTransaction() + .replace(R.id.main, it, TAG) + .commit() + } + } else { + finish() + } } } diff --git a/app/src/main/java/com/huanchengfly/tieba/post/api/retrofit/RetrofitTiebaApi.kt b/app/src/main/java/com/huanchengfly/tieba/post/api/retrofit/RetrofitTiebaApi.kt index 3ece734c..6d04c4df 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/api/retrofit/RetrofitTiebaApi.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/api/retrofit/RetrofitTiebaApi.kt @@ -23,13 +23,19 @@ import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit import retrofit2.converter.protobuf.ProtoConverterFactory +import java.util.concurrent.TimeUnit +import kotlin.math.roundToInt object RetrofitTiebaApi { + private const val READ_TIMEOUT = 60L + private const val CONNECT_TIMEOUT = 60L + private const val WRITE_TIMEOUT = 60L + private val initTime = System.currentTimeMillis() - private val clientId = "wappc_${initTime}_${Math.round(Math.random() * 1000).toInt()}" + private val clientId = "wappc_${initTime}_${(Math.random() * 1000).roundToInt()}" private val stParamInterceptor = StParamInterceptor() - private val connectionPool = ConnectionPool() + private val connectionPool = ConnectionPool(32, 5, TimeUnit.MINUTES) private val defaultCommonParamInterceptor = CommonParamInterceptor( Param.BDUSS to { AccountUtil.getBduss(BaseApplication.INSTANCE) }, @@ -130,15 +136,19 @@ object RetrofitTiebaApi { .addConverterFactory(gsonConverterFactory) .addConverterFactory(ProtoConverterFactory.create()) .client(OkHttpClient.Builder().apply { + readTimeout(READ_TIMEOUT, TimeUnit.SECONDS) + connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS) + writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS) interceptors.forEach { addInterceptor(it) } addInterceptor(DropInterceptor) - addInterceptor(sortAndSignInterceptor) addInterceptor(FailureResponseInterceptor) addInterceptor(ForceLoginInterceptor) + addInterceptor(sortAndSignInterceptor) connectionPool(connectionPool) }.build()) .build() .create(T::class.java) + } \ No newline at end of file diff --git a/app/src/main/java/com/huanchengfly/tieba/post/fragments/UserLikeForumFragment.java b/app/src/main/java/com/huanchengfly/tieba/post/fragments/UserLikeForumFragment.java index 468d6f35..4df4ad5d 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/fragments/UserLikeForumFragment.java +++ b/app/src/main/java/com/huanchengfly/tieba/post/fragments/UserLikeForumFragment.java @@ -52,6 +52,7 @@ public class UserLikeForumFragment extends BaseFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + userLikeForumAdapter = new UserLikeForumAdapter(getAttachContext()); Bundle args = getArguments(); if (args != null) { uid = args.getString(PARAM_UID, null); @@ -72,7 +73,9 @@ public class UserLikeForumFragment extends BaseFragment { refreshLayout.setOnLoadMoreListener(refreshLayout -> load()); recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); recyclerView.addItemDecoration(new StaggeredDividerItemDecoration(getAttachContext(), 16)); - userLikeForumAdapter = new UserLikeForumAdapter(getAttachContext()); + if (userLikeForumAdapter == null) { + userLikeForumAdapter = new UserLikeForumAdapter(getAttachContext()); + } userLikeForumAdapter.setOnItemChildClickListener( R.id.forum_item_card, (OnItemChildClickListener) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/fragments/UserPostFragment.kt b/app/src/main/java/com/huanchengfly/tieba/post/fragments/UserPostFragment.kt index 9714e5c9..edf234d4 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/fragments/UserPostFragment.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/fragments/UserPostFragment.kt @@ -123,13 +123,13 @@ class UserPostFragment : BaseFragment() { response: Response ) { page += 1 - val data = response.body() + val data = response.body() ?: return userPostBean = data refreshLayout.finishLoadMore() - if (data!!.postList.isNullOrEmpty()) { + if (data.postList.isNullOrEmpty()) { refreshLayout.setNoMoreData(true) } else { - userPostAdapter.insert(data.postList!!) + userPostAdapter.insert(data.postList) } } diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/utils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/utils.kt index 249e0ce4..5741b9ad 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/utils/utils.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/utils.kt @@ -139,6 +139,22 @@ fun launchUrl(context: Context, url: String) { if (host == null || scheme == null || path == null) { return } + if (scheme == "tiebaclient") { + val action = uri.getQueryParameter("action") + when (action) { + "preview_file" -> { + val realUrl = uri.getQueryParameter("url") + if (realUrl.isNullOrEmpty()) { + return + } + launchUrl(context, realUrl) + } + else -> { + context.toastShort(R.string.toast_feature_unavailable) + } + } + return + } if (!path.contains("android_asset")) { val isTiebaLink = host.contains("tieba.baidu.com") || host.contains("wappass.baidu.com") || host.contains( diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7139e4b0..e83d241f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -550,4 +550,6 @@ 贴子 回贴 关注 + 数据错误 + 该功能尚未实现