package openfoodfacts.github.scrachx.openfood.fragments; import android.Manifest; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.FloatingActionButton; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.afollestad.materialdialogs.MaterialDialog; import java.io.IOException; import butterknife.BindView; import butterknife.OnClick; import okhttp3.ResponseBody; import openfoodfacts.github.scrachx.openfood.R; import openfoodfacts.github.scrachx.openfood.network.OpenFoodAPIClient; import openfoodfacts.github.scrachx.openfood.network.OpenFoodAPIService; import openfoodfacts.github.scrachx.openfood.utils.Utils; import openfoodfacts.github.scrachx.openfood.views.ScannerFragmentActivity; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class HomeFragment extends BaseFragment { @BindView(R.id.buttonScan) FloatingActionButton mButtonScan; private OpenFoodAPIService apiClient; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return createView(inflater, container, R.layout.fragment_home); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); apiClient = new OpenFoodAPIClient(getActivity()).getAPIService(); checkUserCredentials(); } @OnClick(R.id.buttonScan) protected void OnScan() { if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.CAMERA)) { new MaterialDialog.Builder(getActivity()) .title(R.string.action_about) .content(R.string.permission_camera) .neutralText(R.string.txtOk) .onNeutral((dialog, which) -> ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, Utils.MY_PERMISSIONS_REQUEST_CAMERA)) .show(); } else { ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, Utils.MY_PERMISSIONS_REQUEST_CAMERA); } } else { Intent intent = new Intent(getActivity(), ScannerFragmentActivity.class); startActivity(intent); } } private void checkUserCredentials() { final SharedPreferences settings = getActivity().getSharedPreferences("login", 0); String login = settings.getString("user", ""); String password = settings.getString("pass", ""); if (!login.isEmpty() && !password.isEmpty()) { apiClient.signIn(login, password, "Sign-in").enqueue(new Callback<ResponseBody>() { @Override public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { String htmlNoParsed = null; try { htmlNoParsed = response.body().string(); } catch (IOException e) { e.printStackTrace(); } if (htmlNoParsed != null && (htmlNoParsed.contains("Incorrect user name or password.") || htmlNoParsed.contains("See you soon!"))) { settings.edit() .putString("user", "") .putString("pass", "") .apply(); new MaterialDialog.Builder(getActivity()) .title(R.string.alert_dialog_warning_title) .content(R.string.alert_dialog_warning_msg_user) .positiveText(R.string.txtOk) .show(); } } @Override public void onFailure(Call<ResponseBody> call, Throwable t) { Log.e(HomeFragment.class.getName(), "Unable to Sign-in"); } }); } } }