Skip to content

Commit

Permalink
Merge pull request #136 from herau/fix/102-login-issue
Browse files Browse the repository at this point in the history
fix Login issue #102
  • Loading branch information
itchix authored Sep 29, 2016
2 parents 45f4478 + bb65dcb commit c847cf7
Show file tree
Hide file tree
Showing 8 changed files with 174 additions and 154 deletions.
6 changes: 6 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.MainActivity"/>
</activity>
<activity
android:name=".views.LoginActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.MainActivity"/>
</activity>
<activity
android:name=".views.SaveProductOfflineActivity"
android:screenOrientation="portrait"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.afollestad.materialdialogs.MaterialDialog;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
Expand Down Expand Up @@ -81,7 +82,7 @@ public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] hea
if (htmlNoParsed.contains("Incorrect user name or password.") || htmlNoParsed.contains("See you soon!")) {
editor.putString("user", "");
editor.putString("pass", "");
editor.commit();
editor.apply();
new MaterialDialog.Builder(getActivity())
.title(R.string.alert_dialog_warning_title)
.content(R.string.alert_dialog_warning_msg_user)
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
package openfoodfacts.github.scrachx.openfood.models;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpResponseHandler;

import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;

import net.steamcrafted.loadtoast.LoadToast;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;

import openfoodfacts.github.scrachx.openfood.R;
import openfoodfacts.github.scrachx.openfood.network.FoodUserClient;
import openfoodfacts.github.scrachx.openfood.utils.Utils;
import openfoodfacts.github.scrachx.openfood.views.adapters.SaveListAdapter;

public class FoodUserClientUsage {
Expand Down Expand Up @@ -234,59 +231,4 @@ public void onRetry ( int retryNo){
}
});
}

public void getLoggedIn(RequestParams params, final Context context, final Activity activity, final SharedPreferences shpref, final Button save,
final EditText login, final EditText pass, final TextView infoLogin) {
FoodUserClient.post("/cgi/session.pl", params, 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.Editor editor = shpref.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();
login.setText("");
pass.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", login.getText().toString());
editor.putString("pass", pass.getText().toString());
editor.apply();
infoLogin.setText(R.string.txtInfoLoginOk);
}
Utils.hideKeyboard(activity);
}

@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(activity);
}

@Override
public void onFinish() {
super.onFinish();
save.setClickable(true);
}
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
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.text.TextUtils;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;

import net.steamcrafted.loadtoast.LoadToast;

import butterknife.Bind;
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 {

@Bind(R.id.editTextLogin) EditText loginView;
@Bind(R.id.editTextPass) EditText passwordView;
@Bind(R.id.textInfoLogin) TextView infoLogin;
@Bind(R.id.buttonSave) Button save;
@Bind(R.id.buttonCreateAccount) Button signup;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
}

@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);
}
});
}
}
Loading

0 comments on commit c847cf7

Please sign in to comment.