Update frontend JavaScript to use query parameters

- Changed getRefreshParams() to parse query params instead of path segments
- Added buildUrl() helper to construct query param URLs
- Updated keyboard shortcuts (j/k for delay, o for order toggle) to use query params
This commit is contained in:
Timothy Farrell 2026-04-25 05:47:28 -05:00
parent f856c92394
commit a739e7307d

View File

@ -62,20 +62,23 @@
</div> </div>
<script> <script>
function getRefreshParams() { function getRefreshParams() {
var path = window.location.pathname.slice(1); var params = new URLSearchParams(window.location.search);
var parts = path.split('/'); var order = params.get('order');
if (parts.length < 3) return null;
var order = parts[0];
if (order !== 'next' && order !== 'random') return null; if (order !== 'next' && order !== 'random') return null;
var delay = parseInt(parts[1]); var delay = parseInt(params.get('delay'));
if (isNaN(delay)) return null; if (isNaN(delay)) return null;
var hash = window.location.pathname.slice(1);
return { return {
delay: delay, delay: delay,
order: order, order: order,
hash: parts[2] hash: hash
}; };
} }
function buildUrl(hash, order, delay) {
return '/' + hash + '?order=' + order + '&delay=' + delay;
}
document.addEventListener('keydown', function(e) { document.addEventListener('keydown', function(e) {
e.preventDefault(); e.preventDefault();
if (e.code === 'Space') { if (e.code === 'Space') {
@ -85,17 +88,17 @@
document.getElementById('prev-btn').click(); document.getElementById('prev-btn').click();
} else if (e.code === 'ArrowRight' || e.key.toLowerCase() === 'l') { } else if (e.code === 'ArrowRight' || e.key.toLowerCase() === 'l') {
document.getElementById('next-btn').click(); document.getElementById('next-btn').click();
} else if (e.code === 'Equal' || e.key.toLowerCase() === 'j') { } else if (e.code === 'Equal' || e.key.toLowerCase() === 'j') {
var params = getRefreshParams(); var params = getRefreshParams();
if (params) window.location.href = '/' + params.order + '/' + (params.delay + 1) + '/' + params.hash; if (params) window.location.href = buildUrl(params.hash, params.order, params.delay + 1);
} else if (e.code === 'Minus' || e.key.toLowerCase() === 'k') { } else if (e.code === 'Minus' || e.key.toLowerCase() === 'k') {
var params = getRefreshParams(); var params = getRefreshParams();
if (params && params.delay > 1) window.location.href = '/' + params.order + '/' + (params.delay - 1) + '/' + params.hash; if (params && params.delay > 1) window.location.href = buildUrl(params.hash, params.order, params.delay - 1);
} else if (e.key.toLowerCase() === 'o') { } else if (e.key.toLowerCase() === 'o') {
var params = getRefreshParams(); var params = getRefreshParams();
if (params) { if (params) {
var newOrder = params.order === 'next' ? 'random' : 'next'; var newOrder = params.order === 'next' ? 'random' : 'next';
window.location.href = '/' + newOrder + '/' + params.delay + '/' + params.hash; window.location.href = buildUrl(params.hash, newOrder, params.delay);
} }
} }
}); });