diff --git a/index.html b/index.html index 7fc6444..4d6773d 100644 --- a/index.html +++ b/index.html @@ -141,7 +141,7 @@ Misc - + @@ -844,6 +844,12 @@ window.addEventListener('load', e => { showPage(window.location.hash) }) + window.addEventListener('hashchange', e => { + showPage(window.location.hash) + }) + window.addEventListener('popstate', e => { + showPage(window.location.hash) + }) let currentTorrent document.addEventListener('click', async e => { @@ -927,6 +933,7 @@ case 'Enter': const searchKey = getRef('search_torrent').value.trim() renderSearchResult(searchKey) + pushParams() break; case 'ArrowDown': e.preventDefault() @@ -961,6 +968,7 @@ if (e.target.value.trim() !== '' && e.key === 'Enter') { const searchKey = getRef('advance_torrent_search').value.trim() renderSearchResult(searchKey) + pushParams() } }) @@ -970,15 +978,29 @@ return params } + function pushParams() { + let params = '' + for (let prop in advancedSearch) { + if (prop !== 'isActive' && advancedSearch[prop] && advancedSearch[prop] !== '') { + params += `${prop}=${advancedSearch[prop]}&` + } + } + if (params.slice(-1) === '&') { + params = params.slice(0, -1) + } + history.pushState(null, null, `?${params}#search`) + } + let advancedSearch = { active: false, query: '', category: '' } let lastQuery = '' + let lastCategory = '' async function renderSearchResult(searchKey, shouldFilter = false) { - if (lastQuery !== searchKey || shouldFilter) { + if (lastQuery !== searchKey || shouldFilter || advancedSearch.category !== lastCategory) { if (shouldFilter) { searchKey = getRef('advance_torrent_search').value.trim() !== '' ? getRef('advance_torrent_search').value.trim() : lastQuery } @@ -986,8 +1008,7 @@ const torrents = await getDataFromIDB() const options = { keys: ['name', 'filename'], - threshold: 0.3, - useExtendedSearch: advancedSearch.isActive, + threshold: 0.3 } let result if (advancedSearch.isActive) { @@ -1010,18 +1031,10 @@ } getRef('search_result').innerHTML = `` getRef('search_result').append(renderTorrents(result)) - let params = '' - for (let prop in advancedSearch) { - if (prop !== 'isActive' && advancedSearch[prop] && advancedSearch[prop] !== '') { - params += `${prop}=${advancedSearch[prop]}&` - } - } - if (params.slice(-1) === '&') { - params = params.slice(0, -1) - } - history.pushState(null, null, `?${params}#search`) - showPage('search') + lastQuery = searchKey + lastCategory = advancedSearch.category + showPage('search') } } @@ -1036,6 +1049,13 @@ isActive: true, ...params } + getRef('advance_search_switch').checked = true + getRef('advance_search_panel').classList.remove('hide-completely') + } + else{ + advancedSearch.category = 'movie' + getRef('advance_search_switch').checked = false + getRef('advance_search_panel').classList.add('hide-completely') } renderSearchResult(params.query) } @@ -1061,9 +1081,6 @@ document.querySelector('.page:not(.hide-completely)')?.classList.add('hide-completely') getRef(page).classList.remove('hide-completely') } - window.addEventListener('hashchange', e => { - showPage(window.location.hash) - }) getRef('advance_search_switch').addEventListener('change', e => { if (e.detail.value) { advancedSearch = { @@ -1138,7 +1155,7 @@ const result = fuseSearch.search(category).map(elem => elem.item) const startIndex = parseInt(e.detail.value) * 20 - const endIndex = (parseInt(e.detail.value) * 20) + 20 + const endIndex = ((parseInt(e.detail.value) * 20) + 30) < result.length ? (parseInt(e.detail.value) * 20) + 20 : result.length setTimeout(() => { getRef('browser_category_torrents').scrollIntoView({ behavior: 'smooth', block: 'start' })