gestion des formats de tickets!
This commit is contained in:
@@ -1,28 +1,17 @@
|
||||
package com.example.quiz;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.example.quiz.data.model.dtos.auth.LoginPayload;
|
||||
import com.example.quiz.data.model.dtos.auth.LoginResponse;
|
||||
import com.example.quiz.utils.Result;
|
||||
import com.example.quiz.utils.AuthNavigator;
|
||||
import com.example.quiz.utils.SessionManager;
|
||||
import com.example.quiz.utils.SharedPrefsHelper;
|
||||
import com.example.quiz.viewModel.LoginViewModel;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
import com.example.quiz.viewModel.LogsViewModel;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import android.os.Looper;
|
||||
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.navigation.NavController;
|
||||
import androidx.navigation.Navigation;
|
||||
@@ -37,129 +26,121 @@ import dagger.hilt.android.AndroidEntryPoint;
|
||||
public class PageQuiz extends AppCompatActivity {
|
||||
|
||||
LoginViewModel viewModel;
|
||||
|
||||
LogsViewModel logsViewModel;
|
||||
|
||||
AuthNavigator authNavigator;
|
||||
private SessionManager sessionManager;
|
||||
|
||||
private AlertDialog dialog;
|
||||
private Handler handler = new Handler();
|
||||
private Runnable checkRunnable;
|
||||
|
||||
private AppBarConfiguration appBarConfiguration;
|
||||
private ActivityPageQuizBinding binding;
|
||||
|
||||
private SharedPrefsHelper prefsHelper;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
sessionManager = SessionManager.newInstance(this);
|
||||
binding = ActivityPageQuizBinding.inflate(getLayoutInflater());
|
||||
_showPinDialog();
|
||||
setContentView(binding.getRoot());
|
||||
sessionManager = new SessionManager();
|
||||
prefsHelper = SharedPrefsHelper.getInstance(getApplicationContext());
|
||||
logsViewModel = new ViewModelProvider(this).get(LogsViewModel.class);
|
||||
viewModel = new ViewModelProvider(this).get(LoginViewModel.class);
|
||||
authNavigator = new AuthNavigator(this, getSupportFragmentManager(), sessionManager, viewModel, logsViewModel);
|
||||
setSupportActionBar(binding.toolbar);
|
||||
binding.toolbar.setBackgroundColor(Color.parseColor("#501C5A29"));
|
||||
binding.fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
|
||||
.setAnchorView(R.id.fab)
|
||||
.setAction("Action", null).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dispatchTouchEvent(MotionEvent ev) {
|
||||
// void _showPinDialog(){
|
||||
// LayoutInflater inflater = getLayoutInflater();
|
||||
// View view = inflater.inflate(R.layout.pin_view, null);
|
||||
//
|
||||
// AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
// builder.setView(view);
|
||||
// builder.setCancelable(true);
|
||||
//
|
||||
// dialog = builder.create();
|
||||
// dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
//
|
||||
// view.findViewById(R.id.cancel).setOnClickListener(v -> dialog.dismiss());
|
||||
//// Bouton OK
|
||||
// view.findViewById(R.id.pin_validate).setOnClickListener(v -> {
|
||||
// TextView pin = view.findViewById(R.id.pin);
|
||||
// if(pin.getText().toString().isEmpty()){
|
||||
// pin.setError("Entrez le pin!");
|
||||
// return;
|
||||
// }
|
||||
// if(pin.getText().toString().length() < 4){
|
||||
// pin.setError("Le pin doit contenir minimum quatre chiffres!");
|
||||
// return;
|
||||
// }
|
||||
// LoginPayload loginPayload = new LoginPayload(
|
||||
// pin.getText().toString()
|
||||
// );
|
||||
// viewModel.login(loginPayload).observe(this, new Observer<Result<LoginResponse>>() {
|
||||
// @Override
|
||||
// public void onChanged(Result<LoginResponse> loginResponseResult) {
|
||||
// switch (loginResponseResult.status){
|
||||
// case LOADING:
|
||||
// view.findViewById(R.id.pin_validate).setEnabled(false);
|
||||
// view.findViewById(R.id.pin_validate).setAlpha(0.5f);
|
||||
// break;
|
||||
// case ERROR:
|
||||
// Toast.makeText(getApplicationContext(), loginResponseResult.message, Toast.LENGTH_SHORT).show();
|
||||
// view.findViewById(R.id.pin_validate).setEnabled(true);
|
||||
// view.findViewById(R.id.pin_validate).setAlpha(1f);
|
||||
// break;
|
||||
// case SUCCESS:
|
||||
// loginSuccess(loginResponseResult.data);
|
||||
// logsViewModel.insertLog(prefsHelper.get("id"), "LOGIN","Authentification sur l'appareil", System.currentTimeMillis());
|
||||
// sessionManager.updateLastExpiredDate();
|
||||
// dialog.dismiss();
|
||||
// view.findViewById(R.id.pin_validate).setEnabled(true);
|
||||
// view.findViewById(R.id.pin_validate).setAlpha(1f);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// dialog.show();
|
||||
// }
|
||||
//
|
||||
//
|
||||
// private void loginSuccess(LoginResponse loginResponse){
|
||||
// prefsHelper.save("id", String.valueOf(loginResponse.getId()));
|
||||
// prefsHelper.save("firstName", loginResponse.getPrenom());
|
||||
// prefsHelper.save("lastName", loginResponse.getNom());
|
||||
// prefsHelper.save("profile", loginResponse.getProfile());
|
||||
// prefsHelper.save("limit", String.valueOf(loginResponse.getLimiteSuperieure()));
|
||||
// prefsHelper.save("code", loginResponse.getCode());
|
||||
// }
|
||||
|
||||
if (dialog != null && dialog.isShowing()) {
|
||||
return super.dispatchTouchEvent(ev);
|
||||
}
|
||||
|
||||
|
||||
if(sessionManager.isExpired()){
|
||||
_showPinDialog();
|
||||
return true;
|
||||
}
|
||||
sessionManager.updateLastExpiredDate();
|
||||
return super.dispatchTouchEvent(ev);
|
||||
}
|
||||
|
||||
void _showPinDialog(){
|
||||
LayoutInflater inflater = getLayoutInflater();
|
||||
View view = inflater.inflate(R.layout.pin_view, null);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setView(view);
|
||||
builder.setCancelable(false);
|
||||
|
||||
dialog = builder.create();
|
||||
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
|
||||
// Bouton OK
|
||||
view.findViewById(R.id.pin_validate).setOnClickListener(v -> {
|
||||
TextView pin = view.findViewById(R.id.pin);
|
||||
if(pin.getText().toString().isEmpty()){
|
||||
pin.setError("Entrez le pin!");
|
||||
return;
|
||||
}
|
||||
if(pin.getText().toString().length() != 5){
|
||||
pin.setError("Le pin doit contenir 5 chiffres!");
|
||||
return;
|
||||
}
|
||||
LoginPayload loginPayload = new LoginPayload(
|
||||
pin.getText().toString()
|
||||
);
|
||||
viewModel.login(loginPayload).observe(this, new Observer<Result<LoginResponse>>() {
|
||||
@Override
|
||||
public void onChanged(Result<LoginResponse> loginResponseResult) {
|
||||
switch (loginResponseResult.status){
|
||||
case LOADING:
|
||||
Toast.makeText(getApplicationContext(), "Loading",Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
case ERROR:
|
||||
pin.setError("Pin incorrect");
|
||||
break;
|
||||
case SUCCESS:
|
||||
loginSuccess(loginResponseResult.data);
|
||||
sessionManager.updateLastExpiredDate();
|
||||
dialog.dismiss();
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
|
||||
private void loginSuccess(LoginResponse loginResponse){
|
||||
prefsHelper.save("id", String.valueOf(loginResponse.getId()));
|
||||
prefsHelper.save("firstName", loginResponse.getPrenom());
|
||||
prefsHelper.save("lastName", loginResponse.getNom());
|
||||
prefsHelper.save("profile", loginResponse.getProfile());
|
||||
prefsHelper.save("limit", String.valueOf(loginResponse.getLimiteSuperieure()));
|
||||
prefsHelper.save("code", loginResponse.getCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
handler = new Handler();
|
||||
|
||||
handler = new Handler(Looper.getMainLooper());
|
||||
|
||||
checkRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (sessionManager.isExpired()) {
|
||||
if(dialog != null && !dialog.isShowing()){
|
||||
_showPinDialog();
|
||||
if (!authNavigator.dialogIsShowing()) {
|
||||
authNavigator.showPinDialog(() -> {
|
||||
sessionManager.updateLastExpiredDate();
|
||||
handler.postDelayed(checkRunnable, 1);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
handler.postDelayed(this, 10); // check every second
|
||||
// Replanifie le check toutes les secondes
|
||||
handler.postDelayed(this, 1);
|
||||
}
|
||||
}
|
||||
};
|
||||
handler.postDelayed(checkRunnable, 10);
|
||||
|
||||
handler.postDelayed(checkRunnable, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user