/
LoginActivity.java
140 lines (121 loc) 路 5.47 KB
/
LoginActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package openfoodfacts.github.scrachx.openfood.views;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import net.steamcrafted.loadtoast.LoadToast;
import butterknife.BindView;
import butterknife.OnClick;
import openfoodfacts.github.scrachx.openfood.R;
import openfoodfacts.github.scrachx.openfood.network.FoodUserClient;
import openfoodfacts.github.scrachx.openfood.utils.Utils;
/**
* A login screen that offers login via login/password.
*/
public class LoginActivity extends BaseActivity {
@BindView(R.id.editTextLogin) EditText loginView;
@BindView(R.id.editTextPass) EditText passwordView;
@BindView(R.id.textInfoLogin) TextView infoLogin;
@BindView(R.id.buttonSave) Button save;
@BindView(R.id.buttonCreateAccount) Button signup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
final SharedPreferences settings = getSharedPreferences("login", 0);
String loginS = settings.getString("user", getResources().getString(R.string.txt_anonymous));
if(!loginS.equals(getResources().getString(R.string.txt_anonymous))) {
new MaterialDialog.Builder(this)
.title("Login")
.content("Already logged in!")
.neutralText(R.string.ok_button)
.show();
}
}
@OnClick(R.id.buttonCreateAccount)
protected void onCreateUser() {
Intent browser = new Intent(Intent.ACTION_VIEW);
browser.setData(Uri.parse(Utils.getUriByCurrentLanguage() + "cgi/user.pl"));
startActivity(browser);
}
@OnClick(R.id.buttonSave)
protected void attemptLogin() {
String login = this.loginView.getText().toString();
String password = passwordView.getText().toString();
if (!(password.length() > 6)) {
passwordView.setError(getString(R.string.error_invalid_password));
passwordView.requestFocus();
return;
}
if (TextUtils.isEmpty(login)) {
loginView.setError(getString(R.string.error_field_required));
loginView.requestFocus();
return;
}
RequestParams requestParams = new RequestParams();
requestParams.put("user_id", login);
requestParams.put("password", password);
requestParams.put(".submit", "Sign-in");
final Activity context = this;
FoodUserClient.post("/cgi/session.pl", requestParams, new AsyncHttpResponseHandler() {
LoadToast lt = new LoadToast(context);
@Override
public void onStart() {
super.onStart();
save.setClickable(false);
lt.setText(context.getString(R.string.toast_retrieving));
lt.setBackgroundColor(context.getResources().getColor(R.color.indigo_600));
lt.setTextColor(context.getResources().getColor(R.color.white));
lt.show();
}
@Override
public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody) {
SharedPreferences settings = context.getSharedPreferences("login", 0);
SharedPreferences.Editor editor = settings.edit();
String htmlNoParsed = new String(responseBody);
if (htmlNoParsed.contains("Incorrect user name or password.") || htmlNoParsed.contains("See you soon!")) {
lt.error();
Toast.makeText(context, context.getString(R.string.errorLogin), Toast.LENGTH_LONG).show();
loginView.setText("");
passwordView.setText("");
editor.putString("user", "");
editor.putString("pass", "");
editor.apply();
infoLogin.setText(R.string.txtInfoLoginNo);
} else {
lt.success();
Toast.makeText(context, context.getResources().getText(R.string.txtToastSaved), Toast.LENGTH_LONG).show();
editor.putString("user", loginView.getText().toString());
editor.putString("pass", passwordView.getText().toString());
editor.apply();
infoLogin.setText(R.string.txtInfoLoginOk);
setResult(RESULT_OK, new Intent());
finish();
}
Utils.hideKeyboard(context);
}
@Override
public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody, Throwable error) {
Toast.makeText(context, context.getString(R.string.errorWeb), Toast.LENGTH_LONG).show();
lt.error();
Utils.hideKeyboard(context);
}
@Override
public void onFinish() {
super.onFinish();
save.setClickable(true);
}
});
}
}