Files
pmu_android/app/src/main/java/com/example/quiz/PageQuiz.java
2026-02-16 10:16:49 +01:00

152 lines
6.0 KiB
Java

package com.example.quiz;
import android.graphics.Color;
import android.os.Bundle;
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.example.quiz.viewModel.LogsViewModel;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Handler;
import android.os.Looper;
import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.example.quiz.databinding.ActivityPageQuizBinding;
import dagger.hilt.android.AndroidEntryPoint;
@AndroidEntryPoint
public class PageQuiz extends AppCompatActivity {
LoginViewModel viewModel;
LogsViewModel logsViewModel;
AuthNavigator authNavigator;
private SessionManager sessionManager;
private Handler handler = new Handler();
private Runnable checkRunnable;
private AppBarConfiguration appBarConfiguration;
private ActivityPageQuizBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sessionManager = SessionManager.newInstance(this);
binding = ActivityPageQuizBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
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"));
}
// 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());
// }
@Override
protected void onResume() {
super.onResume();
handler = new Handler(Looper.getMainLooper());
checkRunnable = new Runnable() {
@Override
public void run() {
if (sessionManager.isExpired()) {
if (!authNavigator.dialogIsShowing()) {
authNavigator.showPinDialog(() -> {
sessionManager.updateLastExpiredDate();
handler.postDelayed(checkRunnable, 1);
});
}
} else {
// Replanifie le check toutes les secondes
handler.postDelayed(this, 1);
}
}
};
handler.postDelayed(checkRunnable, 1);
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_page_quiz);
return NavigationUI.navigateUp(navController, appBarConfiguration)
|| super.onSupportNavigateUp();
}
}