This commit is contained in:
kehaoyuan
2020-05-25 17:05:36 +08:00
parent 03fa2052da
commit cf79735780
13 changed files with 216 additions and 77 deletions

View File

@ -0,0 +1,18 @@
package com.gh.gamecenter.qa.answer.draft
import android.content.Context
import android.content.Intent
import android.os.Bundle
import com.gh.common.util.EntranceUtils
import com.gh.gamecenter.NormalActivity
class AnswerDraftActivity : NormalActivity() {
companion object {
fun getIntent(context: Context, answerId: String? = null): Intent {
val bundle = Bundle()
bundle.putString(EntranceUtils.KEY_ANSWER_ID, answerId)
return getTargetIntent(context, AnswerDraftActivity::class.java, AnswerDraftFragment::class.java, bundle)
}
}
}

View File

@ -1,14 +1,19 @@
package com.gh.gamecenter.qa.myqa;
package com.gh.gamecenter.qa.answer.draft;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import androidx.recyclerview.widget.RecyclerView;
import com.facebook.drawee.view.SimpleDraweeView;
import com.gh.base.OnListClickListener;
import com.gh.common.constant.ItemViewType;
import com.gh.common.util.DialogUtils;
import com.gh.common.util.EntranceUtils;
import com.gh.common.util.ImageUtils;
import com.gh.common.util.PermissionHelper;
import com.gh.gamecenter.R;
@ -21,6 +26,7 @@ import com.gh.gamecenter.manager.UserManager;
import com.gh.gamecenter.qa.answer.edit.AnswerEditActivity;
import com.gh.gamecenter.qa.entity.AnswerEntity;
import com.gh.gamecenter.qa.entity.Questions;
import com.gh.gamecenter.qa.myqa.AnswerDraftViewHolder;
import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity;
import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
@ -29,7 +35,6 @@ import com.lightgame.utils.Utils;
import java.util.ArrayList;
import java.util.List;
import androidx.recyclerview.widget.RecyclerView;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import okhttp3.ResponseBody;
@ -39,32 +44,31 @@ import retrofit2.HttpException;
* Created by khy on 20/12/17.
*/
class MyDraftAdapter extends ListAdapter<AnswerEntity> {
class AnswerDraftAdapter extends ListAdapter<AnswerEntity> {
private OnListClickListener mListClickListener;
private ListViewModel mListViewModel;
private String mEntrance;
MyDraftAdapter(Context context, String entrance, OnListClickListener listClickListener, ListViewModel longClickListener) {
AnswerDraftAdapter(Context context, String entrance, OnListClickListener listClickListener, ListViewModel longClickListener) {
super(context);
mListClickListener = listClickListener;
mListViewModel = longClickListener;
mEntrance = entrance;
}
@Override
protected boolean areItemsTheSame(AnswerEntity oldItem, AnswerEntity newItem) {
return !TextUtils.isEmpty(oldItem.getId()) && oldItem.getId().equals(newItem.getId());
}
@Override
protected boolean areContentsTheSame(AnswerEntity oldItem, AnswerEntity newItem) {
return oldItem == newItem;
}
@Override
protected void setListData(List<AnswerEntity> updateData) {
if (updateData != null && mEntityList != null && updateData.size() == mEntityList.size()) {
@ -74,13 +78,13 @@ class MyDraftAdapter extends ListAdapter<AnswerEntity> {
}
super.setListData(updateData);
}
@Override
public int getItemViewType(int position) {
if (position == getItemCount() - 1) return ItemViewType.ITEM_FOOTER;
return ItemViewType.ITEM_BODY;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
@ -95,7 +99,7 @@ class MyDraftAdapter extends ListAdapter<AnswerEntity> {
return null;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
switch (getItemViewType(position)) {
@ -129,12 +133,18 @@ class MyDraftAdapter extends ListAdapter<AnswerEntity> {
});
draftViewHolder.itemView.setOnClickListener(v -> {
PermissionHelper.checkReadPhoneStateAndStoragePermissionBeforeAction(mContext, () -> {
mContext.startActivity(AnswerEditActivity.Companion.getIntent(
mContext,
answerEntity.getQuestions(),
answerEntity.getId(),
true,
answerEntity.getCommunityName()));
if (mContext instanceof AnswerDraftActivity) {
// 不需要回传任何数据
((AnswerDraftActivity) mContext).setResult(Activity.RESULT_OK);
((AnswerDraftActivity) mContext).finish();
} else {
mContext.startActivity(AnswerEditActivity.Companion.getIntent(
mContext,
answerEntity.getQuestions(),
answerEntity.getId(),
true,
answerEntity.getCommunityName()));
}
});
});
break;
@ -145,29 +155,29 @@ class MyDraftAdapter extends ListAdapter<AnswerEntity> {
break;
}
}
@Override
public int getItemCount() {
return mEntityList == null || mEntityList.isEmpty() ? 0 : mEntityList.size() + FOOTER_ITEM_COUNT;
}
private void deleteAnswerDraft(AnswerEntity entity) {
RetrofitManager.getInstance(mContext)
.getApi()
.deleteAnswerDrafts(UserManager.getInstance().getUserId(), entity.getId())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<ResponseBody>() {
@Override
public void onResponse(ResponseBody response) {
mListViewModel.load(LoadType.REFRESH);
}
@Override
public void onFailure(HttpException e) {
Utils.toast(mContext, R.string.loading_network_error);
}
});
.getApi()
.deleteAnswerDrafts(UserManager.getInstance().getUserId(), entity.getId())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<ResponseBody>() {
@Override
public void onResponse(ResponseBody response) {
mListViewModel.load(LoadType.REFRESH);
}
@Override
public void onFailure(HttpException e) {
Utils.toast(mContext, R.string.loading_network_error);
}
});
}
}

View File

@ -1,8 +1,11 @@
package com.gh.gamecenter.qa.myqa;
package com.gh.gamecenter.qa.answer.draft;
import android.os.Bundle;
import androidx.annotation.Nullable;
import com.gh.common.util.EntranceUtils;
import com.gh.common.util.UrlFilterUtils;
import com.gh.gamecenter.baselist.ListAdapter;
import com.gh.gamecenter.baselist.ListFragment;
import com.gh.gamecenter.baselist.LoadType;
@ -24,26 +27,45 @@ import io.reactivex.Observable;
* Created by khy on 20/12/17.
*/
public class MyDraftFragment extends ListFragment<AnswerEntity, NormalListViewModel> {
public class AnswerDraftFragment extends ListFragment<AnswerEntity, NormalListViewModel> {
private MyDraftAdapter mAdapter;
private AnswerDraftAdapter mAdapter;
public static MyDraftFragment getInstance(String entrance) {
MyDraftFragment fragment = new MyDraftFragment();
@Nullable
private String mAnswerId;
public static AnswerDraftFragment getInstance(String entrance) {
AnswerDraftFragment fragment = new AnswerDraftFragment();
Bundle args = new Bundle();
args.putString(EntranceUtils.KEY_ENTRANCE, entrance);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
if (arguments != null) {
mAnswerId = arguments.getString(EntranceUtils.KEY_ANSWER_ID);
}
super.onCreate(savedInstanceState);
if (getActivity() instanceof AnswerDraftActivity) {
setNavigationTitle("回答草稿");
}
}
@Override
protected ListAdapter provideListAdapter() {
return mAdapter == null ? mAdapter = new MyDraftAdapter(getContext(), mEntrance, this, mListViewModel) : mAdapter;
return mAdapter == null ? mAdapter = new AnswerDraftAdapter(getContext(), mEntrance, this, mListViewModel) : mAdapter;
}
@Override
public Observable<List<AnswerEntity>> provideDataObservable(int page) {
return RetrofitManager.getInstance(getContext()).getApi().getMyAnswerDrafts(UserManager.getInstance().getUserId(), page);
return RetrofitManager.getInstance(getContext()).getApi().getAnswerDrafts(
UserManager.getInstance().getUserId(),
UrlFilterUtils.getFilterQuery("answer_id", mAnswerId),
page);
}
@Subscribe(threadMode = ThreadMode.MAIN)

View File

@ -25,6 +25,7 @@ import com.gh.gamecenter.entity.NotificationUgc
import com.gh.gamecenter.manager.UserManager
import com.gh.gamecenter.mvvm.Status
import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity
import com.gh.gamecenter.qa.answer.draft.AnswerDraftActivity
import com.gh.gamecenter.qa.entity.Questions
import com.gh.gamecenter.video.VideoVerifyItemViewHolder
import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel
@ -65,6 +66,8 @@ class AnswerEditActivity : BaseRichEditorActivity() {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE_IMAGE && resultCode == Activity.RESULT_OK) {
if (data != null) mViewModel.postImg(data)
} else if (requestCode == ANSWER_DRAFT_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
mViewModel.getUserAnswerDrafts()
}
}
@ -111,9 +114,11 @@ class AnswerEditActivity : BaseRichEditorActivity() {
setNavigationTitle(getString(R.string.answer_patch_title))
mViewModel.cacheAnswerContent = mViewModel.answerContent
mRichEditor.setHtml(mViewModel.answerContent, false)
mDraftBtn.visibility = View.VISIBLE
} else {
setNavigationTitle(getString(R.string.answer_edit_title))
mViewModel.getUserAnswerDrafts()
mDraftBtn.visibility = View.GONE
}
}
@ -345,7 +350,11 @@ class AnswerEditActivity : BaseRichEditorActivity() {
override fun handleBackPressed(): Boolean {
return if (TextUtils.isEmpty(UserManager.getInstance().token)) {
false
} else if (!TextUtils.isEmpty(mViewModel.answerId)) {
} else if (!TextUtils.isEmpty(mViewModel.answerId)
&& TextUtils.isEmpty(mViewModel.cacheAnswerContent)
&& mRichEditor.html.contains("<img src"))
false
else if (!TextUtils.isEmpty(mViewModel.answerId)) {
consume { showPatchBackDialog() }
} else if (TextUtils.isEmpty(mViewModel.answerId)
&& !TextUtils.isEmpty(mViewModel.cacheAnswerContent)
@ -383,8 +392,14 @@ class AnswerEditActivity : BaseRichEditorActivity() {
}
private fun showPatchBackDialog() {
DialogUtils.showCancelAlertDialog(this, "提示", "确定退出修改?已修改的内容将丢失",
"继续写", " 退出", null, { finish() })
DialogUtils.showAlertDialog(this,
"提示",
"即将退出修改,是否需要将此次编辑保存到草稿箱?",
"保存草稿",
"继续退出",
{
saveDraft(true)
}, { finish() })
}
/**
@ -408,7 +423,8 @@ class AnswerEditActivity : BaseRichEditorActivity() {
R.id.editor_image,
R.id.question_images_1,
R.id.question_images_2,
R.id.question_images_3)
R.id.question_images_3,
R.id.draft_btn)
fun onClick(view: View) {
val videoSize = if (!mViewModel.question.videos.isNullOrEmpty()) 1 else 0
@ -450,6 +466,9 @@ class AnswerEditActivity : BaseRichEditorActivity() {
}
R.id.question_images_2 -> showQuestionImageDetail(1 - videoSize)
R.id.question_images_3 -> showQuestionImageDetail(2 - videoSize)
R.id.draft_btn -> {
startActivityForResult(AnswerDraftActivity.getIntent(this, mViewModel.answerId), ANSWER_DRAFT_REQUEST_CODE)
}
}
}
@ -495,6 +514,7 @@ class AnswerEditActivity : BaseRichEditorActivity() {
const val SAVE_DRAFTS_TOAST_COUNT = 3
const val MIN_ANSWER_TEXT_LENGTH = 6
const val MAX_ANSWER_TEXT_LENGTH = 10000
const val ANSWER_DRAFT_REQUEST_CODE = 112
const val FILE_HOST = "file:///"
const val ANSWER_DRAFT_CHANGE_TAG = "ANSWER_DRAFT_CHANGE_TAG"

View File

@ -13,6 +13,7 @@ import com.gh.common.syncpage.SyncFieldConstants
import com.gh.common.syncpage.SyncPageRepository
import com.gh.common.util.ImageUtils
import com.gh.common.util.UploadImageUtils
import com.gh.common.util.UrlFilterUtils
import com.gh.gamecenter.R
import com.gh.gamecenter.eventbus.EBReuse
import com.gh.gamecenter.manager.UserManager
@ -199,7 +200,9 @@ class AnswerEditViewModel(application: Application,
fun getUserAnswerDrafts() {
mApi
.getUserAnswerDrafts(question.id, Utils.getTime(getApplication()))
.getUserAnswerDrafts(question.id,
UrlFilterUtils.getFilterQuery("answer_id", answerId),
Utils.getTime(getApplication()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Response<AnswerDraftEntity>() {
@ -223,6 +226,9 @@ class AnswerEditViewModel(application: Application,
try {
content.put("content", editContent)
content.put("question_id", question.id)
if (!answerId.isNullOrEmpty()) {
content.put("answer_id", answerId)
}
} catch (e: JSONException) {
e.printStackTrace()
}

View File

@ -2,13 +2,17 @@ package com.gh.gamecenter.qa.article.draft
import android.content.Context
import android.content.Intent
import android.os.Bundle
import com.gh.common.util.EntranceUtils
import com.gh.gamecenter.NormalActivity
class ArticleDraftActivity : NormalActivity() {
companion object {
fun getIntent(context: Context): Intent {
return getTargetIntent(context, ArticleDraftActivity::class.java, ArticleDraftFragment::class.java)
fun getIntent(context: Context, articleId: String? = null): Intent {
val bundle = Bundle()
bundle.putString(EntranceUtils.KEY_COMMUNITY_ARTICLE_ID, articleId)
return getTargetIntent(context, ArticleDraftActivity::class.java, ArticleDraftFragment::class.java, bundle)
}
}
}

View File

@ -4,6 +4,8 @@ import android.app.Activity
import android.content.Intent
import android.os.Bundle
import androidx.lifecycle.ViewModelProviders
import com.gh.common.util.EntranceUtils
import com.gh.common.util.UrlFilterUtils
import com.gh.common.util.checkReadPhoneStateAndStoragePermissionBeforeAction
import com.gh.gamecenter.R
import com.gh.gamecenter.baselist.ListFragment
@ -28,6 +30,7 @@ import retrofit2.HttpException
class ArticleDraftFragment : ListFragment<ArticleDraftEntity, NormalListViewModel<ArticleDraftEntity>>() {
private val mApi = RetrofitManager.getInstance(context).api
private var mAdapter: ArticleDraftAdapter? = null
private var mArticleId: String? = null
override fun provideListAdapter(): ArticleDraftAdapter {
if (mAdapter == null) {
@ -52,7 +55,10 @@ class ArticleDraftFragment : ListFragment<ArticleDraftEntity, NormalListViewMode
}
override fun provideDataObservable(page: Int): Observable<MutableList<ArticleDraftEntity>> {
return mApi.getMyArticleDrafts(UserManager.getInstance().userId, page)
return mApi.getArticleDrafts(
UserManager.getInstance().userId,
UrlFilterUtils.getFilterQuery("article_id", mArticleId),
page)
}
override fun provideListViewModel(): NormalListViewModel<ArticleDraftEntity> {
@ -61,6 +67,8 @@ class ArticleDraftFragment : ListFragment<ArticleDraftEntity, NormalListViewMode
}
override fun onCreate(savedInstanceState: Bundle?) {
mArticleId = arguments?.getString(EntranceUtils.KEY_COMMUNITY_ARTICLE_ID)
super.onCreate(savedInstanceState)
if (activity is ArticleDraftActivity) {
setNavigationTitle("文章草稿")
@ -69,7 +77,13 @@ class ArticleDraftFragment : ListFragment<ArticleDraftEntity, NormalListViewMode
private fun deleteDraft(entity: ArticleDraftEntity) {
mApi.deleteArticleDrafts(entity.community.id, entity.id)
val deleteArticleDraftsObservable =
if (mArticleId.isNullOrEmpty()) {
mApi.deleteArticleDrafts(entity.community.id, entity.id)
} else {
mApi.deleteArticleDrafts(entity.community.id, entity.id, mArticleId)
}
deleteArticleDraftsObservable
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Response<ResponseBody>() {

View File

@ -124,7 +124,7 @@ class ArticleEditActivity : BaseRichEditorActivity() {
})
//setEditTextInputSpace()
mEditTitle.filters= arrayOf(TextHelper.getFilter(50, "最多输入50个字"))
mEditTitle.filters = arrayOf(TextHelper.getFilter(50, "最多输入50个字"))
// 上传图片完成后的回调(本地图片)
mViewModel.postImageLiveData.observe(this, Observer {
@ -259,7 +259,8 @@ class ArticleEditActivity : BaseRichEditorActivity() {
R.id.draft_btn -> {
MtaHelper.onEvent("发表文章", "文章草稿", UserManager.getInstance().community.name)
if (checkDraft(SaveDraftType.SKIP)) {
startActivityForResult(ArticleDraftActivity.getIntent(this), ARTICLE_DRAFT_REQUEST_CODE)
val intent = ArticleDraftActivity.getIntent(this, mViewModel.detailEntity?.id)
startActivityForResult(intent, ARTICLE_DRAFT_REQUEST_CODE)
}
}
}
@ -312,7 +313,7 @@ class ArticleEditActivity : BaseRichEditorActivity() {
mViewModel.mSelectCommunityData = mViewModel.detailEntity?.community
mEditTitle.setText(mViewModel.detailEntity?.title)
setEditHtml(mViewModel.detailEntity?.content)
mDraftBtn.visibility = View.GONE
mDraftBtn.visibility = View.VISIBLE
mGameName.isEnabled = false
setGameName()
mGameName.setTextColor(resources.getColor(R.color.hint))
@ -342,14 +343,25 @@ class ArticleEditActivity : BaseRichEditorActivity() {
override fun handleBackPressed(): Boolean {
if (TextUtils.isEmpty(UserManager.getInstance().token)) {
return false
} else if (mViewModel.detailEntity != null) {
showPatchBackDialog()
return true
}
if (mViewModel.detailEntity != null) {
return if (!TextUtils.isEmpty(mEditTitle.text)
|| mRichEditor.html.contains("<img src")
|| !TextUtils.isEmpty(mRichEditor.text)) {
showPatchBackDialog()
true
} else {
false
}
}
return !checkDraft(SaveDraftType.EXIT)
}
private fun checkDraft(saveType: SaveDraftType): Boolean {
if (mViewModel.detailEntity != null) return true
val draftEntity = mViewModel.draftEntity
// 内容为空直接弹窗
@ -401,8 +413,16 @@ class ArticleEditActivity : BaseRichEditorActivity() {
}
private fun showPatchBackDialog() {
DialogUtils.showCancelAlertDialog(this, "提示", "确定退出修改?已修改的内容将丢失"
, "继续写", " 退出", null, DialogUtils.CancelListener { finish() })
DialogUtils.showCancelAlertDialog(this, "提示",
"即将退出修改,是否需要将此次编辑保存到草稿箱?",
"保存草稿",
" 继续退出",
{
mViewModel.title = mEditTitle.text.toString()
mViewModel.content = getReplaceRealContent()
mViewModel.postArticleDrafts(SaveDraftType.EXIT)
},
{ finish() })
}
private fun showSelectGameDialog() {

View File

@ -241,7 +241,7 @@ class ArticleEditViewModel(application: Application) : AndroidViewModel(applicat
}
fun postArticle() {
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", true))
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", true))
val articleBody = getArticleBody()
if (draftEntity?.id != null) {
articleBody.put("draft_id", draftEntity?.id)
@ -323,12 +323,20 @@ class ArticleEditViewModel(application: Application) : AndroidViewModel(applicat
jsonObject.put("title", title)
jsonObject.put("content", content)
jsonObject.put("tags", tags)
if (detailEntity != null) {
jsonObject.put("article_id", detailEntity?.id)
}
return jsonObject
}
fun getArticleDraftsContent(draftId: String) {
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("加载中...", true))
mApi.getArticleDraftsContent(mSelectCommunityData?.id, draftId)
val articleDraftsObservable = if (detailEntity != null) {
mApi.getArticleDraftsContent(mSelectCommunityData?.id, detailEntity?.id, draftId)
} else {
mApi.getArticleDraftsContent(mSelectCommunityData?.id, draftId)
}
articleDraftsObservable
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Response<ResponseBody>() {

View File

@ -6,7 +6,7 @@ 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.myqa.MyDraftFragment
import com.gh.gamecenter.qa.answer.draft.AnswerDraftFragment
class CommunityDraftWrapperActivity : BaseActivity_TabLayout() {
@ -16,7 +16,7 @@ class CommunityDraftWrapperActivity : BaseActivity_TabLayout() {
}
override fun initFragmentList(fragments: MutableList<Fragment>) {
fragments.add(MyDraftFragment())
fragments.add(AnswerDraftFragment())
fragments.add(ArticleDraftFragment())
}

View File

@ -556,7 +556,7 @@ class QuestionsDetailFragment :
private fun getUserAnswerDrafts() {
RetrofitManager.getInstance(context).api
.getUserAnswerDrafts(mQuestionsId, Utils.getTime(context))
.getUserAnswerDrafts(mQuestionsId, "",Utils.getTime(context))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Response<AnswerDraftEntity>() {

View File

@ -908,7 +908,7 @@ public interface ApiService {
* 获取用户的草稿列表
*/
@GET("users/{user_id}/answer_drafts")
Observable<List<AnswerEntity>> getMyAnswerDrafts(@Path("user_id") String userId, @Query("page") int page);
Observable<List<AnswerEntity>> getAnswerDrafts(@Path("user_id") String userId, @Query("filter") String filter, @Query("page") int page);
/**
* 获取用户的关注问题列表
@ -943,9 +943,10 @@ public interface ApiService {
/**
* 获取用户在相应问题的回答草稿
* filter:编辑文章时的草稿使用
*/
@GET("questions/{question_id}/answer_drafts")
Observable<AnswerDraftEntity> getUserAnswerDrafts(@Path("question_id") String questionId, @Query("timestamp") long timestamp);
Observable<AnswerDraftEntity> getUserAnswerDrafts(@Path("question_id") String questionId, @Query("filter") String filter, @Query("timestamp") long timestamp);
/**
* 保存用户回答的草稿
@ -1372,14 +1373,22 @@ public interface ApiService {
* 获取用户的文章草稿列表
*/
@GET("users/{user_id}/communities/article_drafts")
Observable<List<ArticleDraftEntity>> getMyArticleDrafts(@Path("user_id") String userId, @Query("page") int page);
Observable<List<ArticleDraftEntity>> getArticleDrafts(@Path("user_id") String userId, @Query("filter") String filter, @Query("page") int page);
/**
* 删除社区文章的草稿
* 删除社区文章的草稿(撰写)
*/
@DELETE("communities/{community_id}/article_drafts/{draft_id}")
Observable<ResponseBody> deleteArticleDrafts(@Path("community_id") String communityId, @Path("draft_id") String draftId);
/**
* 删除社区文章的草稿(编辑)
*/
@DELETE("communities/{community_id}/articles/{article_id}/article_drafts/{draft_id}")
Observable<ResponseBody> deleteArticleDrafts(@Path("community_id") String communityId,
@Path("article_id") String articleId,
@Path("draft_id") String draftId);
/**
* 获取社区文章详情
*/
@ -1411,11 +1420,17 @@ public interface ApiService {
Observable<ResponseBody> postCommunityArticleUnoppose(@Path("community_id") String communityId, @Path("article_id") String articleId);
/**
* 获取社区文章草稿内容
* 获取社区文章草稿内容(撰写)
*/
@GET("communities/{community_id}/article_drafts/{draft_id}")
Observable<ResponseBody> getArticleDraftsContent(@Path("community_id") String communityId, @Path("draft_id") String draftId);
/**
* 获取社区文章草稿内容(编辑)
*/
@GET("communities/{community_id}/articles/{article_id}/article_drafts/{draft_id}")
Observable<ResponseBody> getArticleDraftsContent(@Path("community_id") String communityId, @Path("article_id") String articleId, @Path("draft_id") String draftId);
/**
* 获取收藏的社区文章列表
*/