public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 1000;
Button btn_continue;
IDrinkShopAPI mService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mService = Common.getAPI();
btn_continue = (Button) findViewById(R.id.btn_continue);
btn_continue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startLoginPage(LoginType.PHONE);
}
});
}
private void startLoginPage(LoginType loginType) {
Intent intent = new Intent(this, AccountKitActivity.class);
AccountKitConfiguration.AccountKitConfigurationBuilder builder =
new AccountKitConfiguration.AccountKitConfigurationBuilder(loginType,
AccountKitActivity.ResponseType.TOKEN);
intent.putExtra(AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,builder.build());
startActivityForResult(intent,REQUEST_CODE);
}
//Ctrl+O
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE)
{
AccountKitLoginResult result = data.getParcelableExtra(AccountKitLoginResult.RESULT_KEY);
if(result.getError() != null)
{
Toast.makeText(this,""+result.getError().getErrorType().getMessage(),Toast.LENGTH_SHORT).show();
}
else if(result.wasCancelled())
{
Toast.makeText(this,"Cancel",Toast.LENGTH_SHORT).show();
}
else
{
if (result.getAccessToken() !=null)
{
final SpotsDialog alertDialog = new SpotsDialog(MainActivity.this);
alertDialog.show();
alertDialog.setMessage("Please waiting...");
//Get User phone and check exist on server
AccountKit.getCurrentAccount(new AccountKitCallback<Account>() {
@Override
public void onSuccess(final Account account) {
mService.checkUserExists(account.getPhoneNumber().toString())
.enqueue(new Callback<CheckUserResponse>() {
@Override
public void onResponse(Call<CheckUserResponse> call, Response<CheckUserResponse> response) {
CheckUserResponse userResponse = response.body();
if (userResponse.isExist())
{
//if user already exist , just start new Activity
alertDialog.dismiss();
}
else
{
//Else , need register
alertDialog.dismiss();
showRegisterDialog(account.getPhoneNumber().toString());
}
}
@Override
public void onFailure(Call<CheckUserResponse> call, Throwable t) {
}
});
}
@Override
public void onError(AccountKitError accountKitError) {
Log.d("ERROR", accountKitError.getErrorType().getMessage());
}
});
}
}
}
}
private void showRegisterDialog(final String phone) {
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("REGISTER");
AlertDialog dialog=null;
LayoutInflater inflater = this.getLayoutInflater();
View register_layout = inflater.inflate(R.layout.register_layout,null);
final MaterialEditText edt_name =(MaterialEditText)register_layout.findViewById(R.id.edt_name);
final MaterialEditText edt_address = (MaterialEditText)register_layout.findViewById(R.id.edt_address);
final MaterialEditText edt_birthdate = (MaterialEditText)register_layout.findViewById(R.id.edt_birthdate);
Button btn_register = (Button)register_layout.findViewById(R.id.btn_register);
edt_birthdate.addTextChangedListener(new PatternedTextWatcher("####-##-##"));
builder.setView(register_layout);
dialog = builder.create();
//Event
final AlertDialog finalDialog = dialog;
btn_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final SpotsDialog watingDialog = new SpotsDialog(MainActivity.this);
watingDialog.show();
watingDialog.setMessage("Please waiting");
if (TextUtils.isEmpty(edt_address.getText().toString()))
{
Toast.makeText(MainActivity.this, "Please enter your address", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(edt_birthdate.getText().toString())) {
Toast.makeText(MainActivity.this, "Please enter your birthdate", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(edt_name.getText().toString())) {
Toast.makeText(MainActivity.this, "Please enter your name", Toast.LENGTH_SHORT).show();
return;
}
mService.registerNewUser(phone,
edt_name.getText().toString(),
edt_address.getText().toString(),
edt_birthdate.getText().toString())
.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
watingDialog.dismiss();
User user = response.body();
if (TextUtils.isEmpty(user.getError_msg())) {
Toast.makeText(MainActivity.this, "User register successfully", Toast.LENGTH_SHORT).show();
//Start new activity
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
watingDialog.dismiss();
}
});
}
//Close Dialog
});
}
private void printKeyHash() {
try{
PackageInfo info = getPackageManager().getPackageInfo("com.example.antonio.androiddrinkshop",
PackageManager.GET_SIGNATURES);
for (Signature signature:info.signatures)
{
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KEYHASH", Base64.encodeToString(md.digest(),Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}