You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.7 KiB
81 lines
2.7 KiB
package com.community.pocket.ui.main.ui.forum.post;
|
|
|
|
import androidx.lifecycle.MutableLiveData;
|
|
|
|
import com.community.pocket.R;
|
|
import com.community.pocket.data.main.forum.ForumPostRequest;
|
|
import com.community.pocket.ui.main.ui.share.SearchViewModel;
|
|
import com.community.pocket.util.Valid;
|
|
import com.community.pocket.util.ValidUtil;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 投诉贴数据管理
|
|
*/
|
|
class ForumPostComplainViewModel extends ForumPostViewModel implements SearchViewModel {
|
|
|
|
//投诉帖表单状态
|
|
private MutableLiveData<ForumPostFormState.Complain> forumPostFormState = new MutableLiveData<>();
|
|
|
|
//检索投诉人
|
|
private MutableLiveData<ForumPostResponse<List<String>>> searchPeople = new MutableLiveData<>();
|
|
|
|
ForumPostComplainViewModel(ForumPostRequest forumPostRequest) {
|
|
super(forumPostRequest);
|
|
}
|
|
|
|
MutableLiveData<ForumPostFormState.Complain> getForumPostFormState() {
|
|
return forumPostFormState;
|
|
}
|
|
|
|
MutableLiveData<ForumPostResponse<List<String>>> getSearchPeople() {
|
|
return searchPeople;
|
|
}
|
|
|
|
/**
|
|
* 投诉贴表单校验
|
|
*/
|
|
void complainDataChanged(String title, String content, String complain) {
|
|
if (!ValidUtil.titleValid(title)) {
|
|
forumPostFormState.setValue(new ForumPostFormState.Complain(R.string.invalid_title, null, null));
|
|
} else if (!ValidUtil.notesValid(content)) {
|
|
forumPostFormState.setValue(new ForumPostFormState.Complain(null, R.string.invalid_post, null));
|
|
} else if (!ValidUtil.usernamevalid(complain)) {
|
|
forumPostFormState.setValue(new ForumPostFormState.Complain(null, null, R.string.invalid_username));
|
|
} else {
|
|
forumPostFormState.setValue(new ForumPostFormState.Complain(true));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 发表投诉贴
|
|
*
|
|
* @param title 标题
|
|
* @param content 正文
|
|
* @param complain 投诉人
|
|
*/
|
|
void sendComplain(String title, String content, String complain) {
|
|
Valid valid = forumPostRequest.sendComplain(title, content, complain);
|
|
if (valid == Valid.ok) {
|
|
forumPostResponse.setValue(new ForumPostResponse().setSuccess(R.string.forum_post_ok));
|
|
} else {
|
|
forumPostResponse.setValue(new ForumPostResponse().setError(R.string.forum_post_fail));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 模糊检索投诉人列表
|
|
*
|
|
* @param name 投诉人
|
|
*/
|
|
private void searchPeople(String name) {
|
|
ForumPostResponse<List<String>> forumPostResponse = forumPostRequest.searchPeople(name);
|
|
searchPeople.setValue(forumPostResponse);
|
|
}
|
|
|
|
@Override
|
|
public void search(String content) {
|
|
searchPeople(content);
|
|
}
|
|
}
|
|
|