/*
* Copyright (c) 2016 Magnet Systems, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.magnet.samples.android.quickstart.activities;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import com.magnet.max.android.ApiCallback;
import com.magnet.max.android.ApiError;
import com.magnet.max.android.Max;
import com.magnet.max.android.User;
import com.magnet.max.android.auth.model.UserRegistrationInfo;
import com.magnet.mmx.client.api.MMX;
import com.magnet.samples.android.quickstart.R;
import com.magnet.samples.android.quickstart.util.Logger;
public class LoginActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
findViewById(R.id.loginRegisterBtn).setOnClickListener(this);
findViewById(R.id.loginSingInBtn).setOnClickListener(this);
}
@Override
public void onClick(View v) {
String username = getFieldText(R.id.loginUsername);
String password = getFieldText(R.id.loginPassword);
if (username != null && password != null) {
switch (v.getId()) {
case R.id.loginRegisterBtn:
registerAndLogin(username, password);
break;
case R.id.loginSingInBtn:
login(username, password);
break;
default:
break;
}
}
}
private void login(String username, String password) {
User.login(username, password, false, new ApiCallback<Boolean>() {
@Override
public void success(Boolean aBoolean) {
Logger.debug("login", "success");
Max.initModule(MMX.getModule(), new ApiCallback<Boolean>() {
@Override
public void success(Boolean aBoolean) {
Logger.debug("init module", "success");
MMX.start();
switchToFeatures();
}
@Override
public void failure(ApiError apiError) {
showMessage("Can't init module : " + apiError.getMessage());
Logger.error("init module.", apiError, "error");
}
});
}
@Override
public void failure(ApiError apiError) {
showMessage("Can't login : " + apiError.getMessage());
Logger.error("login", apiError, "error");
}
});
}
private void registerAndLogin(final String username, final String password) {
UserRegistrationInfo.Builder builder = new UserRegistrationInfo.Builder().userName(username).password(password);
User.register(builder.build(), new ApiCallback<User>() {
@Override
public void success(User user) {
Logger.debug("register", "success");
login(username, password);
}
@Override
public void failure(ApiError apiError) {
if (apiError.getKind() == 409) {
login(username, password);
showMessage("User already exists, login now");
} else {
showMessage("Can't register : " + apiError.getMessage());
Logger.error("register", apiError, "error");
}
}
});
}
private void switchToFeatures() {
startActivity(new Intent(this, FeaturesActivity.class));
}
}