package net.coding.program.project.detail.topic;
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
ArrayList<UserObject> watchers = new ArrayList<>();
@Extra
int topicId;
@AfterViews
void initWatcherListActivity() {
listView.setOnItemClickListener(((parent, view, position, id) -> {
TaskObject.Members members = mMembersArray.get(position);
for (int i = 0; i < watchers.size(); ++i) {
UserObject item = watchers.get(i);
if (item.id == members.user.id) {
watchers.remove(item);
removeWatchUser(item);
adapter.notifyDataSetChanged();
return;
}
}
addWatchUser(members.user);
watchers.add(members.user);
adapter.notifyDataSetChanged();
}));
}
private void removeWatchUser(UserObject user) {
String url = String.format(Global.HOST_API + "/topic/%s/user/%s/watch", topicId, 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);
watchers.add(user);
adapter.notifyDataSetChanged();
}
});
}
private void addWatchUser(UserObject user) {
String url = String.format(Global.HOST_API + "/topic/%s/user/%s/watch", topicId, 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);
watchers.remove(user);
adapter.notifyDataSetChanged();
}
});
}
@Override
protected void updateChecked(ViewHolder holder, TaskObject.Members data) {
for (UserObject item : watchers) {
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", watchers);
setResult(Activity.RESULT_OK, intent);
super.onBackPressed();
}
}