From 9744e0b8c3c5e25ab453d7754d47d144496a78c3 Mon Sep 17 00:00:00 2001 From: cedrick2711 Date: Mon, 10 Aug 2026 20:06:58 -0400 Subject: [PATCH] cache local dans le register page --- app/templates/pages/register.html | 60 +++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 3 deletions(-) diff --git a/app/templates/pages/register.html b/app/templates/pages/register.html index 9110ec4..08d2076 100644 --- a/app/templates/pages/register.html +++ b/app/templates/pages/register.html @@ -53,7 +53,7 @@ - + Reconnect @@ -65,7 +65,7 @@ {% else %}
- + Connect Discord Account Connect to pre-fill your gamertags from Steam, Battle.net, Xbox, etc. @@ -165,8 +165,62 @@ function toggleGamertagInput(checkbox) { } } -// On page load, ensure gamertag groups match checkbox state +// Save form draft to sessionStorage before navigating to Discord OAuth +function saveFormDraft() { + var draft = {}; + var form = document.querySelector('.auth-form'); + if (!form) return; + var inputs = form.querySelectorAll('input, select, textarea'); + inputs.forEach(function(input) { + if (!input.name) return; + if (input.type === 'checkbox') { + if (!draft[input.name]) draft[input.name] = []; + if (input.checked) draft[input.name].push(input.value); + } else if (input.type === 'password') { + // Never save passwords + } else { + draft[input.name] = input.value; + } + }); + sessionStorage.setItem('register_form_draft', JSON.stringify(draft)); +} + +// Restore form draft from sessionStorage on page load +function restoreFormDraft() { + var saved = sessionStorage.getItem('register_form_draft'); + if (!saved) return; + try { + var draft = JSON.parse(saved); + var hasServerData = document.querySelector('.auth-form input[name="full_name"]').value !== ''; + if (hasServerData) return; + for (var key in draft) { + if (key === 'games') { + var values = draft[key]; + var checkboxes = document.querySelectorAll('input[name="games"]'); + checkboxes.forEach(function(cb) { + cb.checked = values.indexOf(cb.value) !== -1; + toggleGamertagInput(cb); + }); + } else if (key === 'csrf_token' || key === 'captcha_answer' || key.indexOf('password') !== -1) { + // Skip CSRF token, CAPTCHA, and passwords + } else { + var input = document.querySelector('input[name="' + key + '"], textarea[name="' + key + '"]'); + if (input) input.value = draft[key]; + } + } + } catch(e) { + // Invalid JSON, ignore + } +} + +// Clear draft on successful form submission +document.querySelector('.auth-form').addEventListener('submit', function() { + sessionStorage.removeItem('register_form_draft'); +}); + +// On page load, ensure gamertag groups match checkbox state and restore draft document.addEventListener('DOMContentLoaded', function() { + restoreFormDraft(); var checkboxes = document.querySelectorAll('input[name="games"]'); checkboxes.forEach(function(checkbox) { toggleGamertagInput(checkbox);