Implement forced first-login setup and dropzone UX fixes
#4 Forced First-Login Setup: - Add before_request hook to redirect to /setup if no users exist - Skip redirect for static files and setup routes #5 Dropzone UX Fixes: - Make preview images clickable to replace file - Make entire drop zone clickable - QR zone resets after 2s on error, allowing retry - Clear file input on error so same file can be re-selected 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -99,6 +99,23 @@ const Stegasoo = {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Make preview clickable to replace file
|
||||
if (preview) {
|
||||
preview.style.cursor = 'pointer';
|
||||
preview.addEventListener('click', (e) => {
|
||||
e.stopPropagation();
|
||||
input.click();
|
||||
});
|
||||
}
|
||||
|
||||
// Make entire zone clickable (in case label/preview don't cover it)
|
||||
zone.addEventListener('click', (e) => {
|
||||
// Only trigger if not clicking directly on the input
|
||||
if (e.target !== input) {
|
||||
input.click();
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
@@ -575,7 +592,7 @@ const Stegasoo = {
|
||||
console.log('QR crop/extract error:', err);
|
||||
container.classList.remove('loading', 'scanning');
|
||||
container.classList.add('error');
|
||||
|
||||
|
||||
// Update loader to show error
|
||||
const loader = container.querySelector('.qr-loader');
|
||||
if (loader) {
|
||||
@@ -584,6 +601,17 @@ const Stegasoo = {
|
||||
<span>No QR code detected</span>
|
||||
`;
|
||||
}
|
||||
|
||||
// Reset after delay so user can try again
|
||||
setTimeout(() => {
|
||||
container.classList.remove('error');
|
||||
container.classList.add('d-none');
|
||||
label?.classList.remove('d-none');
|
||||
// Clear the file input so same file can be re-selected
|
||||
input.value = '';
|
||||
// Remove loader
|
||||
if (loader) loader.remove();
|
||||
}, 2000);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user