fix: 修复举报无法使用

This commit is contained in:
HuanChengFly 2020-11-14 19:14:24 +08:00
parent 150a0cce4e
commit 63642faaa5
11 changed files with 89 additions and 14 deletions

View File

@ -1,9 +1,11 @@
package com.huanchengfly.tieba.post
import android.animation.LayoutTransition
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Build
import android.view.ViewGroup
import android.widget.Toast
import androidx.annotation.ColorRes
import androidx.fragment.app.Fragment
@ -65,6 +67,11 @@ fun Context.toastShort(text: String) {
Toast.makeText(this, text, Toast.LENGTH_SHORT).show()
}
fun Context.toastShort(resId: Int) {
Toast.makeText(this, resId, Toast.LENGTH_SHORT).show()
fun Context.toastShort(resId: Int, vararg args: Any) {
Toast.makeText(this, getString(resId, *args), Toast.LENGTH_SHORT).show()
}
fun ViewGroup.enableChangingLayoutTransition() {
this.layoutTransition = LayoutTransition()
this.layoutTransition.enableTransitionType(LayoutTransition.CHANGING)
}

View File

@ -482,11 +482,9 @@ class ThreadActivity : BaseActivity(), View.OnClickListener {
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_report -> navigationHelper!!.navigationByData(NavigationHelper.ACTION_URL,
getString(R.string.url_post_report,
dataBean!!.forum?.id,
dataBean!!.thread?.threadId,
dataBean!!.thread?.postId))
R.id.menu_report -> {
if (dataBean != null) TiebaUtil.reportPost(this, dataBean?.thread?.postId!!)
}
R.id.menu_share -> TiebaUtil.shareText(this, url, if (dataBean == null) null else dataBean!!.thread?.title)
R.id.menu_jump_page -> {
val dialog = EditTextDialog(this)

View File

@ -39,6 +39,7 @@ import com.huanchengfly.tieba.post.utils.ImageUtil;
import com.huanchengfly.tieba.post.utils.NavigationHelper;
import com.huanchengfly.tieba.post.utils.StringUtil;
import com.huanchengfly.tieba.post.utils.ThemeUtil;
import com.huanchengfly.tieba.post.utils.TiebaUtil;
import com.huanchengfly.tieba.post.utils.TimeUtils;
import com.huanchengfly.tieba.post.utils.Util;
import com.huanchengfly.tieba.post.widgets.MyLinearLayout;
@ -131,7 +132,7 @@ public class RecyclerFloorAdapter extends CommonBaseAdapter<SubFloorListBean.Pos
.putExtra("data", replyData));
return true;
case R.id.menu_report:
navigationHelper.navigationByData(NavigationHelper.ACTION_URL, mContext.getString(R.string.url_post_report, dataBean.getForum().getId(), dataBean.getThread().getId(), postInfo.getId()));
TiebaUtil.reportPost(mContext, postInfo.getId());
return true;
case R.id.menu_copy:
StringBuilder stringBuilder = new StringBuilder();

View File

@ -47,6 +47,7 @@ import com.huanchengfly.tieba.post.utils.ImageUtil;
import com.huanchengfly.tieba.post.utils.NavigationHelper;
import com.huanchengfly.tieba.post.utils.StringUtil;
import com.huanchengfly.tieba.post.utils.ThemeUtil;
import com.huanchengfly.tieba.post.utils.TiebaUtil;
import com.huanchengfly.tieba.post.utils.TimeUtils;
import com.huanchengfly.tieba.post.utils.Util;
import com.huanchengfly.tieba.post.widgets.MyImageView;
@ -412,9 +413,6 @@ public class RecyclerThreadAdapter extends MultiBaseAdapter<ThreadContentBean.Po
mContext.startActivity(new Intent(mContext, ReplyActivity.class)
.putExtra("data", replyData));
return true;
case R.id.menu_report:
navigationHelper.navigationByData(NavigationHelper.ACTION_URL, mContext.getString(R.string.url_post_report, dataBean.getForum().getId(), dataBean.getThread().getId(), subPostListItemBean.getId()));
return true;
case R.id.menu_copy:
StringBuilder stringBuilder = new StringBuilder();
for (ThreadContentBean.ContentBean contentBean : subPostListItemBean.getContent()) {
@ -463,6 +461,7 @@ public class RecyclerThreadAdapter extends MultiBaseAdapter<ThreadContentBean.Po
return false;
})
.setInitMenuCallback(menu -> {
menu.findItem(R.id.menu_report).setVisible(false);
if (TextUtils.equals(AccountUtil.getUid(mContext), subPostListItemBean.getAuthorId())) {
menu.findItem(R.id.menu_delete).setVisible(true);
}
@ -487,7 +486,7 @@ public class RecyclerThreadAdapter extends MultiBaseAdapter<ThreadContentBean.Po
dataBean.getUser().getNameShow()).setPn(dataBean.getPage().getOffset()).toString()));
return true;
case R.id.menu_report:
navigationHelper.navigationByData(NavigationHelper.ACTION_URL, mContext.getString(R.string.url_post_report, dataBean.getForum().getId(), dataBean.getThread().getId(), postListItemBean.getId()));
TiebaUtil.reportPost(mContext, postListItemBean.getId());
return true;
case R.id.menu_copy:
StringBuilder stringBuilder = new StringBuilder();

View File

@ -552,4 +552,13 @@ interface ITiebaApi {
sortType: ForumSortType = ForumSortType.REPLY_TIME,
pageSize: Int = 30
): Call<ForumBean>
/**
* 获取举报贴子/回贴页面 URL
*
* @param postId PID
*/
fun checkReportPost(
postId: String
): Call<CheckReportBean>
}

View File

@ -231,4 +231,12 @@ object MixedTiebaApiImpl : ITiebaApi {
forumName: String, page: Int, goodClassifyId: String?, sortType: ForumSortType, pageSize: Int
): Call<ForumBean> =
RetrofitTiebaApi.WEB_TIEBA_API.frs(forumName, (page - 1) * pageSize, sortType.value, goodClassifyId)
override fun checkReportPost(postId: String): Call<CheckReportBean> =
RetrofitTiebaApi.MINI_TIEBA_API.checkReport(
category = "1",
reportParam = mapOf(
"pid" to postId
)
)
}

View File

@ -0,0 +1,15 @@
package com.huanchengfly.tieba.post.api.models
import com.google.gson.annotations.SerializedName
data class CheckReportBean(
@SerializedName("errno")
var errorCode: Int?,
@SerializedName("errmsg")
var errorMsg: String?,
val data: CheckReportDataBean
) {
data class CheckReportDataBean(
val url: String?
)
}

View File

@ -227,4 +227,13 @@ interface MiniTiebaApi {
@retrofit2.http.Header(Header.USER_AGENT) user_agent: String = "bdtb for Android $client_version",
@Query("cuid_gid") cuid_gid: String = ""
): Call<SearchUserBean>
@Headers("${Header.FORCE_LOGIN}: ${Header.FORCE_LOGIN_TRUE}")
@POST("/c/f/ueg/checkjubao")
@FormUrlEncoded
fun checkReport(
@Field("category") category: String,
@FieldMap reportParam: Map<String, String>,
@Field("stoken") stoken: String? = AccountUtil.getLoginInfo(BaseApplication.instance)?.getsToken()
): Call<CheckReportBean>
}

View File

@ -6,6 +6,7 @@ import android.graphics.Typeface
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import android.view.ViewGroup
import android.widget.CompoundButton
import android.widget.ImageView
import android.widget.TextView
@ -18,6 +19,7 @@ import com.gyf.immersionbar.ImmersionBar
import com.huanchengfly.tieba.post.R
import com.huanchengfly.tieba.post.activities.*
import com.huanchengfly.tieba.post.api.interfaces.CommonCallback
import com.huanchengfly.tieba.post.enableChangingLayoutTransition
import com.huanchengfly.tieba.post.goToActivity
import com.huanchengfly.tieba.post.interfaces.Refreshable
import com.huanchengfly.tieba.post.models.MyInfoBean
@ -143,6 +145,7 @@ class MyInfoFragment : BaseFragment(), View.OnClickListener, CompoundButton.OnCh
threadsTextView
).forEach {
it.typeface = Typeface.createFromAsset(attachContext.assets, "bebas.ttf")
(it.parent as ViewGroup).enableChangingLayoutTransition()
}
listOf(
R.id.my_info_collect,
@ -154,6 +157,7 @@ class MyInfoFragment : BaseFragment(), View.OnClickListener, CompoundButton.OnCh
).forEach {
view.findViewById<View>(it).setOnClickListener(this)
}
view.findViewById<ViewGroup>(R.id.my_info_user).enableChangingLayoutTransition()
(followsTextView.parent as View).setOnClickListener {
WebViewActivity.launch(attachContext, attachContext.resources.getString(R.string.url_user_home, dataBean!!.data.getName(), 2))
}

View File

@ -39,6 +39,7 @@ import com.huanchengfly.tieba.post.interfaces.OnReceivedTitleListener;
import com.huanchengfly.tieba.post.interfaces.WebViewListener;
import com.huanchengfly.tieba.post.models.PermissionBean;
import com.huanchengfly.tieba.post.utils.AccountUtil;
import com.huanchengfly.tieba.post.utils.AssetUtil;
import com.huanchengfly.tieba.post.utils.DialogUtil;
import com.huanchengfly.tieba.post.utils.FileUtil;
import com.huanchengfly.tieba.post.utils.HistoryHelper;
@ -46,7 +47,6 @@ import com.huanchengfly.tieba.post.utils.NavigationHelper;
import com.huanchengfly.tieba.post.utils.ThemeUtil;
import com.huanchengfly.tieba.post.utils.TiebaLiteJavaScript;
import com.huanchengfly.tieba.post.utils.Util;
import com.huanchengfly.tieba.post.utils.AssetUtil;
import com.yanzhenjie.permission.AndPermission;
import com.yanzhenjie.permission.runtime.Permission;
@ -59,7 +59,7 @@ import static com.huanchengfly.tieba.post.utils.FileUtil.FILE_TYPE_DOWNLOAD;
//TODO: 代码太烂需要重写
public class WebViewFragment extends BaseFragment implements DownloadListener {
public static final String TAG = WebViewFragment.class.getSimpleName();
private static final String DEFAULT_TITLE = "贴吧 Lite";
private static final String DEFAULT_TITLE = "";
private final static int FILE_CHOOSER_RESULT_CODE = 1;
private String mUrl;
private String mTitle;

View File

@ -8,9 +8,16 @@ import android.content.Context
import android.content.Intent
import android.os.Build
import com.huanchengfly.tieba.post.R
import com.huanchengfly.tieba.post.activities.WebViewActivity
import com.huanchengfly.tieba.post.api.TiebaApi
import com.huanchengfly.tieba.post.api.models.CheckReportBean
import com.huanchengfly.tieba.post.components.dialogs.LoadingDialog
import com.huanchengfly.tieba.post.receivers.AutoSignAlarm
import com.huanchengfly.tieba.post.services.OKSignService
import com.huanchengfly.tieba.post.toastShort
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import java.util.*
object TiebaUtil {
@ -66,4 +73,22 @@ object TiebaUtil {
putExtra(Intent.EXTRA_TEXT, "${if (title != null) "「$title」\n" else ""}$text\n(分享自贴吧 Lite")
})
}
@JvmStatic
fun reportPost(context: Context, postId: String) {
val dialog = LoadingDialog(context).apply { show() }
TiebaApi.getInstance()
.checkReportPost(postId)
.enqueue(object : Callback<CheckReportBean> {
override fun onResponse(call: Call<CheckReportBean>, response: Response<CheckReportBean>) {
dialog.dismiss()
WebViewActivity.launch(context, response.body()!!.data.url)
}
override fun onFailure(call: Call<CheckReportBean>, t: Throwable) {
dialog.dismiss()
context.toastShort(R.string.toast_load_failed)
}
})
}
}