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.
pocketcommunityclient/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostComplainViewModel....

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);
}
}