diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 884393b974..f4f65152ef 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -682,6 +682,10 @@ android:name=".forum.list.ForumListActivity" android:screenOrientation="portrait" /> + + implements ISyncAda holder.itemView.setOnClickListener(v -> { if (entity.getActive()) { - mContext.startActivity(AnswerDetailActivity.getIntent(mContext, entity.getId(), mEntrance, path)); +// mContext.startActivity(AnswerDetailActivity.getIntent(mContext, entity.getId(), mEntrance, path)); + mContext.startActivity(NewQuestionDetailActivity.getCommentIntent(mContext, entity.getQuestions().getId(), entity.getId(), mEntrance, path)); } else { showDeleteDialog(entity.getId()); } @@ -112,7 +115,8 @@ public class AnswerAdapter extends ListAdapter implements ISyncAda }); viewHolder.getBinding().title.setOnClickListener(v -> { Questions questions = entity.getQuestions(); - mContext.startActivity(QuestionsDetailActivity.getIntent(mContext, questions.getId(), mEntrance, path)); +// mContext.startActivity(QuestionsDetailActivity.getIntent(mContext, questions.getId(), mEntrance, path)); + mContext.startActivity(NewQuestionDetailActivity.getIntent(mContext, questions.getId(), mEntrance, path)); }); break; case ItemViewType.ITEM_FOOTER: diff --git a/app/src/main/java/com/gh/gamecenter/entity/MeEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/MeEntity.kt index f8718ab257..b7f4a94f79 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MeEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/MeEntity.kt @@ -52,6 +52,9 @@ class MeEntity(@SerializedName("is_community_voted") @SerializedName("is_article_favorite") var isArticleFavorite: Boolean = false, + @SerializedName("is_question_favorite") + var isQuestionFavorite : Boolean = false, + @SerializedName("is_toolkit_favorite") var isToolkitFavorite: Boolean = false, diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt index c206e5ea71..e6bbf37c2f 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt @@ -63,7 +63,7 @@ import java.io.IOException import java.util.* import kotlin.collections.ArrayList -class AnswerDetailFragment : NormalFragment() { +open class AnswerDetailFragment : NormalFragment() { @BindView(R.id.reuse_no_connection) lateinit var mNoConn: View @@ -126,7 +126,7 @@ class AnswerDetailFragment : NormalFragment() { private var mRefreshFooter: AnswerDetailRefreshFooter? = null private var mSkeletonScreen: SkeletonScreen? = null - private lateinit var mBinding: FragmentAnswerDetailBinding + lateinit var mBinding: FragmentAnswerDetailBinding lateinit var mViewModel: AnswerDetailViewModel private lateinit var mContainerViewModel: AnswerDetailContainerViewModel @@ -994,10 +994,14 @@ class AnswerDetailFragment : NormalFragment() { private fun hideLoadingViewAndShowContent() { mNoConn.visibility = View.GONE - mBinding.bottomController.root.visibility = View.VISIBLE + mBinding.bottomController.root.visibility = if (shouldShowBottomController()) View.VISIBLE else View.GONE mBinding.scrollView.visibility = View.VISIBLE } + open fun shouldShowBottomController(): Boolean { + return true + } + @SuppressLint("SetTextI18n") private fun updateQuestionView(question: Questions) { val video = if (!question.videos.isNullOrEmpty()) question.videos[0] else null diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/SimpleAnswerDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/SimpleAnswerDetailActivity.kt new file mode 100644 index 0000000000..71a9234155 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/SimpleAnswerDetailActivity.kt @@ -0,0 +1,21 @@ +package com.gh.gamecenter.qa.answer.detail + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import com.gh.base.BaseActivity +import com.gh.common.util.EntranceUtils +import com.gh.gamecenter.NormalActivity + +class SimpleAnswerDetailActivity : NormalActivity() { + + companion object { + fun getIntent(context: Context, answerId: String, entrance: String, path: String): Intent { + val bundle = Bundle() + bundle.putString(EntranceUtils.KEY_ANSWER_ID, answerId) + bundle.putString(EntranceUtils.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) + bundle.putString(EntranceUtils.KEY_PATH, path) + return getTargetIntent(context, SimpleAnswerDetailActivity::class.java, SimpleAnswerDetailFragment::class.java, bundle) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/SimpleAnswerDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/SimpleAnswerDetailFragment.kt new file mode 100644 index 0000000000..aad62b30cb --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/SimpleAnswerDetailFragment.kt @@ -0,0 +1,19 @@ +package com.gh.gamecenter.qa.answer.detail + +import android.os.Bundle +import android.view.View + +class SimpleAnswerDetailFragment : AnswerDetailFragment() { + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + mBinding.refreshLayout.isEnabled = false + mBinding.answerDetailTitleRl.visibility = View.GONE + mBinding.bottomController.root.visibility = View.GONE + mBinding.topPaddingView.visibility = View.GONE + mBinding.bottomShadowView.visibility = View.GONE + mBinding.bottomDividerView.visibility = View.GONE + } + + override fun shouldShowBottomController(): Boolean = false +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftAdapter.kt index 8ca82e2700..75380b4aae 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftAdapter.kt @@ -14,9 +14,9 @@ import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.databinding.CommunityArticleDraftItemBinding import com.gh.gamecenter.qa.entity.ArticleDraftEntity -class ArticleDraftAdapter(context: Context - , private val deleteCallback: (ArticleDraftEntity) -> Unit - , private val selectCallback: (ArticleDraftEntity) -> Unit) : ListAdapter(context) { +class ArticleDraftAdapter(context: Context, + private val deleteCallback: (ArticleDraftEntity) -> Unit, + private val selectCallback: (ArticleDraftEntity) -> Unit) : ListAdapter(context) { override fun areItemsTheSame(oldItem: ArticleDraftEntity, newItem: ArticleDraftEntity): Boolean { return !TextUtils.isEmpty(oldItem.id) && oldItem.id == newItem.id diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt index 9287b791fc..583f08421d 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt @@ -436,7 +436,27 @@ abstract class BaseCommentAdapter(context: Context, //TODO:问题评论更多操作 private fun showQuestionCommentOption(view: View, binding: ItemArticleDetailCommentBinding, comment: CommentEntity, viewModel: BaseCommentViewModel, deleteCallBack: ((comment: CommentEntity) -> Unit)?) { + CommentHelper.showQuestionCommentOption(view,comment,viewModel.questionId,object :OnCommentOptionClickListener{ + override fun onCommentOptionClick(entity: CommentEntity, option: String) { + when (option) { + "删除评论" -> { + DialogUtils.showNewAlertDialog(binding.moreIv.context, "提示", "删除评论后,评论下所有的回复都将被删除", "取消", "删除", null, { + }) + } + "置顶" -> { + DialogUtils.showNewAlertDialog(binding.root.context, "提示", "是否将此条评论置顶?", "取消", "确认", null, Gravity.CENTER, false, {}, { + + }) + } + "取消置顶" -> { + DialogUtils.showNewAlertDialog(binding.root.context, "提示", "是否将此条评论取消置顶?", "取消", "确认", null, Gravity.CENTER, false, {}, { + + }) + } + } + } + }) } private fun showVideoCommentOptions(view: View, binding: ItemArticleDetailCommentBinding, comment: CommentEntity, viewModel: BaseCommentViewModel, deleteCallBack: ((comment: CommentEntity) -> Unit)?) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/draft/CommunityDraftWrapperActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/draft/CommunityDraftWrapperActivity.kt index 2d2cde3ad3..74272d938f 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/draft/CommunityDraftWrapperActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/draft/CommunityDraftWrapperActivity.kt @@ -6,8 +6,8 @@ import android.os.Bundle import androidx.fragment.app.Fragment import com.gh.base.BaseActivity_TabLayout import com.gh.gamecenter.qa.article.draft.ArticleDraftFragment -import com.gh.gamecenter.qa.answer.draft.AnswerDraftFragment import com.gh.gamecenter.qa.questions.draft.QuestionDraftFragment +import com.gh.gamecenter.video.videomanager.VideoDraftFragment class CommunityDraftWrapperActivity : BaseActivity_TabLayout() { @@ -19,13 +19,13 @@ class CommunityDraftWrapperActivity : BaseActivity_TabLayout() { override fun initFragmentList(fragments: MutableList) { fragments.add(ArticleDraftFragment()) fragments.add(QuestionDraftFragment()) - fragments.add(AnswerDraftFragment()) + fragments.add(VideoDraftFragment()) } override fun initTabTitleList(tabTitleList: MutableList) { tabTitleList.add("帖子草稿") tabTitleList.add("问题草稿") - tabTitleList.add("回答草稿") + tabTitleList.add("视频草稿") } companion object { diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionsDetailEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionsDetailEntity.kt index 0d9c460fd4..1c0000092e 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionsDetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionsDetailEntity.kt @@ -41,6 +41,7 @@ data class QuestionsDetailEntity( var tagActivityName: String = "", var type: String = "", var gameEntity: GameEntity? = null, + var time:TimeEntity = TimeEntity(), //提交问题用 @SerializedName("draft_id") var draftId: String = "" diff --git a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAnswerAdapter.java b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAnswerAdapter.java index 53ec5d94c0..201871bbb7 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAnswerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAnswerAdapter.java @@ -17,6 +17,7 @@ import com.gh.gamecenter.qa.answer.MyAnswerViewHolder; import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity; import com.gh.gamecenter.qa.entity.AnswerEntity; import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity; +import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity; import org.jetbrains.annotations.Nullable; @@ -67,13 +68,22 @@ class MyAnswerAdapter extends ListAdapter implements ISyncAdapterH answerViewHolder.bindItem(entity, mEntrance); CommunityMyAnswerItemBinding binding = answerViewHolder.getBinding(); binding.imageContainer.bindData(entity, mEntrance, ""); - binding.title.setOnClickListener(v -> - mContext.startActivity(QuestionsDetailActivity.getIntent(mContext, - entity.getQuestions().getId(), mEntrance, "我的光环-我的问答-我的回答"))); +// binding.title.setOnClickListener(v -> +// mContext.startActivity(QuestionsDetailActivity.getIntent(mContext, +// entity.getQuestions().getId(), mEntrance, "我的光环-我的问答-我的回答"))); +// +// holder.itemView.setOnClickListener(v -> +// mContext.startActivity(AnswerDetailActivity.getIntent(mContext, +// entity.getId(), mEntrance, "我的光环-我的问答-我的回答"))); - holder.itemView.setOnClickListener(v -> - mContext.startActivity(AnswerDetailActivity.getIntent(mContext, - entity.getId(), mEntrance, "我的光环-我的问答-我的回答"))); + binding.title.setOnClickListener(v -> { + mContext.startActivity(NewQuestionDetailActivity.getIntent(mContext, + entity.getQuestions().getId(), mEntrance, "我的光环-我的问答-我的回答")); + }); + holder.itemView.setOnClickListener(v -> { + mContext.startActivity(NewQuestionDetailActivity.getCommentIntent(mContext, + entity.getQuestions().getId(), entity.getId(), mEntrance, "我的光环-我的问答-我的回答")); + }); break; case ItemViewType.ITEM_FOOTER: diff --git a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAskWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAskWrapperFragment.java index 800b729c1e..eb99b2f3ed 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAskWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAskWrapperFragment.java @@ -27,16 +27,16 @@ public class MyAskWrapperFragment extends BaseFragment_TabLayout { String entrance = null; if (getArguments() != null) entrance = getArguments().getString(EntranceUtils.KEY_ENTRANCE); - fragments.add(ConcernQuestionsFragment.getInstance(entrance)); - fragments.add(MyQuestionsFragment.getInstance(entrance)); +// fragments.add(ConcernQuestionsFragment.getInstance(entrance)); +// fragments.add(MyQuestionsFragment.getInstance(entrance)); fragments.add(MyAnswerFragment.getInstance(entrance)); fragments.add(MyArticleFragment.getInstance(entrance, UserManager.getInstance().getUserId())); } @Override protected void initTabTitleList(List tabTitleList) { - tabTitleList.add("关注问题"); - tabTitleList.add("我的问题"); +// tabTitleList.add("关注问题"); +// tabTitleList.add("我的问题"); tabTitleList.add("我的回答"); tabTitleList.add("我的帖子"); } diff --git a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyQuestionsAdapter.java b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyQuestionsAdapter.java index 6784514e52..fa468007de 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyQuestionsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyQuestionsAdapter.java @@ -17,6 +17,7 @@ import com.gh.gamecenter.databinding.CommunityQuestionItemBinding; import com.gh.gamecenter.qa.entity.Questions; import com.gh.gamecenter.qa.questions.CommunityQuestionViewHolder; import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity; +import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity; import kotlin.Pair; @@ -62,7 +63,7 @@ public class MyQuestionsAdapter extends ListAdapter implements ISyncA case ItemViewType.ITEM_BODY: Questions questions = mEntityList.get(position); ((CommunityQuestionViewHolder) holder).bindMyQuestionViewHolder(questions,mEntrance,"我的光环-我的问答-我的问题"); - holder.itemView.setOnClickListener(v -> mContext.startActivity(QuestionsDetailActivity.getIntent(mContext, questions.getId(), mEntrance, "我的光环-我的问答-我的问题"))); + holder.itemView.setOnClickListener(v -> mContext.startActivity(NewQuestionDetailActivity.getIntent(mContext, questions.getId(), mEntrance, "我的光环-我的问答-我的问题"))); break; case ItemViewType.ITEM_FOOTER: FooterViewHolder footerViewHolder = (FooterViewHolder) holder; diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt index 6efd274d98..6099ca64a3 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt @@ -57,5 +57,16 @@ class NewQuestionDetailActivity : NormalActivity() { intent.putExtra(EntranceUtils.KEY_PATH, path) return intent } + + @JvmStatic + fun getCommentIntent(context: Context, questionId: String, answerId: String, entrance: String, path: String): Intent { + val intent = Intent(context, NewQuestionDetailActivity::class.java) + intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) + intent.putExtra(EntranceUtils.KEY_QUESTIONS_ID, questionId) + intent.putExtra(EntranceUtils.KEY_ANSWER_ID, answerId) + intent.putExtra(EntranceUtils.KEY_SCROLL_TO_COMMENT_AREA, true) + intent.putExtra(EntranceUtils.KEY_PATH, path) + return intent + } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt index aa9cbf7470..62fba38097 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt @@ -106,13 +106,18 @@ class NewQuestionDetailFragment : BaseCommentFragment() var questionPageFinishedLiveData = MutableLiveData() val moderatorsHideLiveData = MutableLiveData() + val favoriteLiveData = MutableLiveData() val mFollowLiveData = MutableLiveData() var questionDetail: QuestionsDetailEntity? = null val followLiveData = mFollowLiveData @@ -136,6 +140,28 @@ class NewQuestionDetailViewModel(application: Application, questionId: String = }) } + @SuppressLint("CheckResult") + fun postFavoriteQuestion() { + if (questionDetail == null) return + val single = if (questionDetail?.me?.isQuestionFavorite == true) { + mApi.deleteFavoriteQuestion(UserManager.getInstance().userId, questionId) + } else { + mApi.favoriteQuestion(UserManager.getInstance().userId, questionId) + } + single.compose(singleToMain()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + if (questionDetail?.me?.isQuestionFavorite == true) { + ToastUtils.showToast("取消收藏") + } else { + ToastUtils.showToast("收藏成功") + } + questionDetail?.me?.isQuestionFavorite = questionDetail?.me?.isQuestionFavorite != true + favoriteLiveData.postValue(true) + } + }) + } + class Factory(private val application: Application, private val questionId: String = "", private val communityId: String = "") : ViewModelProvider.NewInstanceFactory() { diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/QuestionDetailContentViewHolder.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/QuestionDetailContentViewHolder.kt index 6b0107c931..38f2433120 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/QuestionDetailContentViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/QuestionDetailContentViewHolder.kt @@ -83,12 +83,11 @@ class QuestionDetailContentViewHolder(var binding: ItemArticleDetailContentBindi if (richEditor.currentContent != question.description) { richEditor.setHtml(question.description, true) } - -// if (question.time.create == question.time.edit) { -// releaseTimeTv.text = String.format("发布于%s", NewsUtils.getFormattedTime(question.time.create)) -// } else { -// releaseTimeTv.text = String.format("发布于%s 最后编辑于%s", NewsUtils.getFormattedTime(question.time.create), NewsUtils.getFormattedTime(question.time.edit)) -// } + if (question.time.create == question.time.edit) { + releaseTimeTv.text = String.format("发布于%s", NewsUtils.getFormattedTime(question.time.create)) + } else { + releaseTimeTv.text = String.format("发布于%s 最后编辑于%s", NewsUtils.getFormattedTime(question.time.create), NewsUtils.getFormattedTime(question.time.edit)) + } richEditor.visibility = View.VISIBLE question.community.game?.let { gameName.text = question.community.name diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt index 29716d98d9..078bc921bc 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt @@ -10,6 +10,7 @@ import com.gh.gamecenter.NormalActivity import com.gh.gamecenter.R import com.gh.gamecenter.entity.CommunityEntity import com.gh.gamecenter.entity.ForumVideoEntity +import com.gh.gamecenter.entity.VideoDraftEntity import com.gh.gamecenter.qa.BbsType class VideoPublishActivity : NormalActivity() { @@ -40,6 +41,15 @@ class VideoPublishActivity : NormalActivity() { bundle.putString(EntranceUtils.KEY_PATH, path) return getTargetIntent(context, VideoPublishActivity::class.java, VideoPublishFragment::class.java, bundle) } + + @JvmStatic + fun getDraftIntent(context: Context, draftEntity: VideoDraftEntity, entrance: String, path: String): Intent { + val bundle = Bundle() + bundle.putParcelable(VideoDraftEntity::class.java.simpleName, draftEntity) + bundle.putString(EntranceUtils.KEY_ENTRANCE, ToolBarActivity.mergeEntranceAndPath(entrance, path)) + bundle.putString(EntranceUtils.KEY_PATH, path) + return getTargetIntent(context, VideoPublishActivity::class.java, VideoPublishFragment::class.java, bundle) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishFragment.kt index 23d3701c0e..52803ae1f1 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishFragment.kt @@ -124,11 +124,16 @@ class VideoPublishFragment : NormalFragment() { private fun initData() { val videoPatch = mViewModel.videoPatch + val videoDraft = mViewModel.videoDraft when { videoPatch != null -> { setNavigationTitle("编辑视频") setVideoPatch(videoPatch) } + videoDraft != null -> { + setNavigationTitle("发视频") + setVideoDraft() + } else -> { setNavigationTitle("发视频") PermissionHelper.checkStoragePermissionBeforeAction(requireActivity(), object : EmptyCallback { @@ -213,6 +218,7 @@ class VideoPublishFragment : NormalFragment() { } } } + private fun setVideoPatch(videoPatch: ForumVideoEntity) { mMenuDraft.isVisible = false mType = videoPatch.type diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java index bd2b6e99f0..d94bc9b3dc 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java @@ -3033,4 +3033,16 @@ public interface ApiService { */ @GET("bbses/videos/{video_id}/recommends") Observable> getRecommendVideo(@Path("video_id") String videoId, @Query("page") int page); + + /** + * 添加问题收藏 + */ + @POST("users/{user_id}/favorites/questions/{question_id}") + Single favoriteQuestion(@Path("user_id") String userId, @Path("question_id") String questionId); + + /** + * 取消问题收藏 + */ + @DELETE("users/{user_id}/favorites/questions/{question_id}") + Single deleteFavoriteQuestion(@Path("user_id") String userId, @Path("question_id") String questionId); } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftAdapter.kt index a3e5b014e2..9908a07cfa 100644 --- a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftAdapter.kt @@ -1,14 +1,11 @@ package com.gh.gamecenter.video.videomanager -import android.app.Activity import android.content.Context -import android.content.Intent import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.LinearLayout import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.gh.base.BaseRecyclerViewHolder @@ -18,17 +15,13 @@ import com.gh.common.view.BugFixedPopupWindow import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.baselist.ListAdapter -import com.gh.gamecenter.databinding.CommunityArticleDraftItemBinding import com.gh.gamecenter.databinding.CommunityVideoDraftItemBinding -import com.gh.gamecenter.databinding.VideoVerifyItemBinding import com.gh.gamecenter.entity.VideoDraftEntity -import com.gh.gamecenter.qa.article.draft.ArticleDraftViewHolder -import com.gh.gamecenter.video.VideoVerifyItemViewHolder -import com.gh.gamecenter.video.upload.view.UploadVideoActivity class VideoDraftAdapter(context: Context, private val mViewModel: VideoDraftViewModel, - private val mEntrance: String) : ListAdapter(context) { + private val mEntrance: String, + private val selectCallback: (VideoDraftEntity) -> Unit) : ListAdapter(context) { private val mPath = "草稿箱" @@ -83,10 +76,7 @@ class VideoDraftAdapter(context: Context, PermissionHelper.checkStoragePermissionBeforeAction(mContext, object : EmptyCallback { override fun onCallback() { - val intent = Intent() - intent.putExtra(VideoDraftEntity::class.java.simpleName, draftEntity) - (mContext as AppCompatActivity).setResult(Activity.RESULT_OK, intent) - (mContext as AppCompatActivity).finish() + selectCallback.invoke(draftEntity) } }) } diff --git a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftFragment.kt b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftFragment.kt index dadf705486..4b47adce31 100644 --- a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftFragment.kt @@ -1,8 +1,10 @@ package com.gh.gamecenter.video.videomanager +import android.app.Activity import android.content.Intent import android.os.Bundle import android.view.View +import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -13,6 +15,8 @@ import com.gh.common.view.GridSpacingItemDecoration import com.gh.gamecenter.R import com.gh.gamecenter.baselist.ListFragment import com.gh.gamecenter.entity.VideoDraftEntity +import com.gh.gamecenter.qa.draft.CommunityDraftWrapperActivity +import com.gh.gamecenter.qa.video.publish.VideoPublishActivity import com.gh.gamecenter.video.upload.view.UploadVideoActivity class VideoDraftFragment : ListFragment() { @@ -36,7 +40,16 @@ class VideoDraftFragment : ListFragment() override fun provideListAdapter(): VideoDraftAdapter { if (mAdapter == null) { - mAdapter = VideoDraftAdapter(requireContext(), mListViewModel, mEntrance) + mAdapter = VideoDraftAdapter(requireContext(), mListViewModel, mEntrance) { + if (requireActivity() is CommunityDraftWrapperActivity) { + startActivity(VideoPublishActivity.getDraftIntent(requireContext(), it, mEntrance, "视频草稿")) + } else { + val intent = Intent() + intent.putExtra(VideoDraftEntity::class.java.simpleName, it) + requireActivity().setResult(Activity.RESULT_OK, intent) + requireActivity().finish() + } + } } return mAdapter!! }