package com.example.secha.androidnodejs;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.example.secha.androidnodejs.Retrofit.INodeJS;
import com.example.secha.androidnodejs.Retrofit.RetrofitClient;
import com.github.javiersantos.materialstyleddialogs.MaterialStyledDialog;
import com.google.android.material.button.MaterialButton;
import com.rengwuxian.materialedittext.MaterialEditText;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import retrofit2.Retrofit;
public class MainActivity extends AppCompatActivity {
INodeJS myAPI;
final CompositeDisposable compositeDisposable = new CompositeDisposable();
MaterialEditText edt_email,edt_password;
MaterialButton btn_register,btn_login;
@Override
protected void onStop() {
compositeDisposable.clear();
super.onStop();
}
@Override
protected void onDestroy() {
compositeDisposable.clear();
super.onDestroy();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//init API
Retrofit retrofit = RetrofitClient.getInstance();
myAPI=retrofit.create(INodeJS.class);
//view
btn_login=(MaterialButton) findViewById(R.id.login_button);
btn_register=(MaterialButton) findViewById(R.id.register_button);
edt_email=(MaterialEditText) findViewById(R.id.edt_email);
edt_password=(MaterialEditText) findViewById(R.id.edt_password);
//event
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loginUser(edt_email.getText().toString(),edt_password.getText().toString());
}
});
btn_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
registerUser(edt_email.getText().toString(),edt_password.getText().toString());
}
});
}
private void registerUser(final String email, final String password) {
final View enter_name_view = LayoutInflater.from(this).inflate(R.layout.enter_name_layout,null);
new MaterialStyledDialog.Builder(this)
.setTitle("회원가입")
.setDescription("one more step")
.setCustomView(enter_name_view)
.setIcon(R.drawable.ic_user)
.setNegativeText("cancel")
.onNegative(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
dialog.dismiss();
}
})
.setPositiveText("Register")
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
MaterialEditText edt_name = (MaterialEditText)enter_name_view.findViewById(R.id.edt_name);
compositeDisposable.add(myAPI.registerUser(email,edt_name.getText().toString(),password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Toast.makeText(MainActivity.this,""+s,Toast.LENGTH_SHORT).show();
}
}));
}
}).show();
}
private void loginUser(String email, String password) {
compositeDisposable.add(myAPI.loginUser(email,password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
if(s.contains("encrypted_password"))
Toast.makeText(MainActivity.this,"로그인 성공",Toast.LENGTH_SHORT).show();
else
Toast.makeText(MainActivity.this,""+s,Toast.LENGTH_SHORT).show();
}
})
);
}
}
여기서 subscribeOn 메소드에 빨간줄이 생기고 작동이 안되네요. 이유를 모르겠습니다...