package net.coding.program.task.add;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import net.coding.program.R;
import net.coding.program.common.Global;
import net.coding.program.common.base.MyJsonResponse;
import net.coding.program.common.network.MyAsyncHttpClient;
import net.coding.program.model.TaskObject;
import net.coding.program.model.UserObject;
import net.coding.program.project.detail.MembersActivity;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Extra;
import org.json.JSONObject;
import java.util.ArrayList;
/**
* Created by chenchao on 16/7/26.
* 任务关注者列表界面
*/
@EActivity(R.layout.activity_members)
public class WatcherListActivity extends MembersActivity {
@Extra
int mTaskId = 0; // 任务的 id 号,0 表示新建任务
@Extra
ArrayList<UserObject> mWatchUsers = new ArrayList<>(); // 任务的关注者
@AfterViews
void initWatcherListActivity() {
listView.setOnItemClickListener((parent, view, position, id) -> {
TaskObject.Members members = mMembersArray.get(position);
for (int i = 0; i < mWatchUsers.size(); ++i) {
UserObject item = mWatchUsers.get(i);
if (members.user.id == item.id) {
UserObject deleteUser = mWatchUsers.remove(i);
removeWatchUser(deleteUser);
adapter.notifyDataSetChanged();
return;
}
}
addWatchUser(members.user);
mWatchUsers.add(members.user);
adapter.notifyDataSetChanged();
});
}
private void removeWatchUser(UserObject user) {
if (mTaskId == 0) {
return;
}
String url = String.format(Global.HOST_API + "/task/%d/user/%s/watch", mTaskId, user.global_key);
MyAsyncHttpClient.delete(this, url, new MyJsonResponse(this) {
@Override
public void onMySuccess(JSONObject response) {
super.onMySuccess(response);
}
@Override
public void onMyFailure(JSONObject response) {
super.onMyFailure(response);
mWatchUsers.add(user);
adapter.notifyDataSetChanged();
}
});
}
private void addWatchUser(UserObject user) {
if (mTaskId == 0) {
return;
}
String url = String.format(Global.HOST_API + "/task/%d/user/%s/watch", mTaskId, user.global_key);
MyAsyncHttpClient.post(this, url, new MyJsonResponse(this) {
@Override
public void onMySuccess(JSONObject response) {
super.onMySuccess(response);
}
@Override
public void onMyFailure(JSONObject response) {
super.onMyFailure(response);
mWatchUsers.remove(user);
adapter.notifyDataSetChanged();
}
});
}
@Override
protected void updateChecked(ViewHolder holder, TaskObject.Members data) {
for (UserObject item : mWatchUsers) {
if (data.user.id == item.id) {
holder.watchCheck.setVisibility(View.VISIBLE);
return;
}
}
holder.watchCheck.setVisibility(View.INVISIBLE);
}
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("resultData", mWatchUsers);
setResult(Activity.RESULT_OK, intent);
super.onBackPressed();
}
}