feat: Remplacer le bouton "Déconnecter" par "Quitter" avec fermeture complète

- Changement du texte du bouton de "Déconnexion" à "Quitter"
- Le bouton effectue maintenant une déconnexion puis ferme l'application
- Ajout d'un handler IPC 'quit-app' pour fermer proprement l'application
- Fermeture propre de la connexion SignalR avant l'arrêt
- Conservation de l'animation de déconnexion pour une transition fluide
- Mise à jour du changelog avec la version 1.2.15
This commit is contained in:
Pierre Marx
2025-09-04 16:57:32 -04:00
parent 06b4e2819d
commit 506968b62a
4 changed files with 35 additions and 20 deletions

View File

@@ -1,5 +1,20 @@
# Changelog - SimpleConnect Electron # Changelog - SimpleConnect Electron
## [1.2.15] - 2025-09-04
### Modifié
- **Bouton de déconnexion remplacé par "Quitter"** : Changement du comportement de fermeture
- Le bouton "Déconnecter" devient "Quitter" pour plus de clarté
- Déconnexion automatique de l'agent avant fermeture
- Animation de déconnexion maintenue pour une transition fluide
- Fermeture propre de la connexion SignalR
- Arrêt complet de l'application après déconnexion
### Technique
- Nouveau handler IPC `quit-app` pour fermer l'application
- Modification de `handleConfirm()` pour appeler la fermeture après déconnexion
- Délai de 1 seconde avant fermeture pour voir l'animation complète
## [1.2.14] - 2025-09-04 ## [1.2.14] - 2025-09-04
### Ajouté ### Ajouté

View File

@@ -90,7 +90,7 @@
<button id="toggleNotesBtn" class="btn-icon" title="Afficher/Masquer les notes"> <button id="toggleNotesBtn" class="btn-icon" title="Afficher/Masquer les notes">
<span class="icon-notes">📝</span> <span class="icon-notes">📝</span>
</button> </button>
<button id="logoutBtn" class="btn-secondary">Déconnexion</button> <button id="logoutBtn" class="btn-secondary">Quitter</button>
</div> </div>
</header> </header>

16
main.js
View File

@@ -439,6 +439,22 @@ ipcMain.handle('logout', async () => {
return { success: true }; return { success: true };
}); });
// Handler pour quitter l'application proprement
ipcMain.handle('quit-app', async () => {
// Fermer la connexion SignalR si elle existe
if (signalRConnection) {
try {
await signalRConnection.stop();
console.log('Connexion SignalR fermée');
} catch (error) {
console.error('Erreur lors de la fermeture de SignalR:', error);
}
}
// Quitter l'application
app.quit();
});
// Obtenir l'agent actuel // Obtenir l'agent actuel
ipcMain.handle('get-current-agent', () => { ipcMain.handle('get-current-agent', () => {
if (!currentAgent || !agentConnectionInfo) return null; if (!currentAgent || !agentConnectionInfo) return null;

View File

@@ -258,26 +258,10 @@ function showLogoutModal() {
await ipcRenderer.invoke('logout'); await ipcRenderer.invoke('logout');
// Attendre encore un peu pour une transition fluide // Attendre encore un peu pour une transition fluide
await new Promise(resolve => setTimeout(resolve, 500)); await new Promise(resolve => setTimeout(resolve, 1000));
// Réinitialiser et fermer // Fermer l'application proprement
modal.classList.remove('active'); await ipcRenderer.invoke('quit-app');
hideLogoutProgress();
currentAgent = null;
currentCentres = [];
activeCenter = null;
webviews = {};
resetLoginForm(); // Réinitialiser le formulaire
showLoginPage();
// Forcer le focus après la fermeture complète de la modal
setTimeout(() => {
const accessCodeInput = document.getElementById('accessCode');
if (accessCodeInput) {
accessCodeInput.focus();
accessCodeInput.select();
}
}, 200);
cancelBtn.removeEventListener('click', handleCancel); cancelBtn.removeEventListener('click', handleCancel);
confirmBtn.removeEventListener('click', handleConfirm); confirmBtn.removeEventListener('click', handleConfirm);