package io.kaif.mobile.view.widget;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.trello.rxlifecycle.components.support.RxDialogFragment;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.kaif.mobile.KaifApplication;
import io.kaif.mobile.R;
import io.kaif.mobile.view.daemon.DebateDaemon;
public class ReplyDialog extends RxDialogFragment implements TextView.OnEditorActionListener {
public static final int MIN_CONTENT_SIZE = 5;
public static ReplyDialog createFragment(String article, String parentDebateId, int level) {
ReplyDialog replyDialog = new ReplyDialog();
Bundle args = new Bundle();
args.putString("PARENT_DEBATE_ID", parentDebateId);
args.putString("ARTICLE_ID", article);
args.putInt("LEVEL", level);
replyDialog.setArguments(args);
return replyDialog;
}
private String getParentDebateId() {
return getArguments().getString("PARENT_DEBATE_ID");
}
private String getArticleId() {
return getArguments().getString("ARTICLE_ID");
}
private int getLevel() {
return getArguments().getInt("LEVEL");
}
@Inject
DebateDaemon debateDaemon;
@BindView(R.id.debate_content)
protected EditText contentEditText;
public ReplyDialog() {
// Empty constructor required for DialogFragment
}
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (EditorInfo.IME_ACTION_DONE == actionId) {
submitDebate();
this.dismiss();
return true;
}
return false;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
KaifApplication.getInstance().beans().inject(this);
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = LayoutInflater.from(getActivity());
View view = inflater.inflate(R.layout.fragment_reply, null);
ButterKnife.bind(this, view);
contentEditText.setOnEditorActionListener(this);
return new AlertDialog.Builder(getActivity()).setTitle(R.string.reply)
.setView(view)
.setPositiveButton(R.string.submit_reply, (dialog, whichButton) -> {
submitDebate();
})
.setNegativeButton(R.string.dialog_cancel, (dialog, whichButton) -> {
})
.create();
}
private void submitDebate() {
String debateContent = contentEditText.getText().toString().trim();
if (debateContent.length() < MIN_CONTENT_SIZE) {
Toast.makeText(getActivity(), R.string.debate_too_short, Toast.LENGTH_SHORT).show();
return;
}
debateDaemon.debate(getArticleId(), getParentDebateId(), getLevel(), debateContent);
}
}