From 56bfcbba0e58dcff9e35af2967cafe5f6cb1bbf9 Mon Sep 17 00:00:00 2001 From: Laptop Date: Fri, 18 Oct 2024 13:16:32 +0300 Subject: [PATCH 1/3] less javascript (#621) --- Cargo.lock | 13 ++++++++++ public/static/index.js | 37 +------------------------- public/static/pagination.js | 39 ---------------------------- public/static/search_area_options.js | 18 ------------- public/static/themes/simple.css | 4 +-- src/server/routes/search.rs | 1 + src/templates/partials/bar.rs | 7 ++--- src/templates/partials/search_bar.rs | 9 ++++--- src/templates/views/search.rs | 8 +++--- 9 files changed, 30 insertions(+), 106 deletions(-) delete mode 100644 public/static/pagination.js delete mode 100644 public/static/search_area_options.js diff --git a/Cargo.lock b/Cargo.lock index c273074..fdce525 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3273,6 +3273,7 @@ dependencies = [ "sync_wrapper", "tokio 1.40.0", "tokio-rustls", + "tokio-socks", "tokio-util", "tower-service", "url 2.5.2", @@ -4103,6 +4104,18 @@ dependencies = [ "tokio 1.40.0", ] +[[package]] +name = "tokio-socks" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f" +dependencies = [ + "either", + "futures-util", + "thiserror", + "tokio 1.40.0", +] + [[package]] name = "tokio-sync" version = "0.1.8" diff --git a/public/static/index.js b/public/static/index.js index c743497..6858a66 100644 --- a/public/static/index.js +++ b/public/static/index.js @@ -1,41 +1,6 @@ -/** - * Selects the input element for the search box - * @type {HTMLInputElement} - */ -const searchBox = document.querySelector('input') - -/** - * Redirects the user to the search results page with the query parameter - */ -function searchWeb() { - const query = searchBox.value.trim() - try { - let safeSearchLevel = document.querySelector('.search_options select').value - if (query) { - window.location.href = `search?q=${encodeURIComponent( - query, - )}&safesearch=${encodeURIComponent(safeSearchLevel)}` - } - } catch (error) { - if (query) { - window.location.href = `search?q=${encodeURIComponent(query)}` - } - } -} - -/** - * Listens for the 'Enter' key press event on the search box and calls the searchWeb function - * @param {KeyboardEvent} e - The keyboard event object - */ -searchBox.addEventListener('keyup', (e) => { - if (e.key === 'Enter') { - searchWeb() - } -}) - /** * A function that clears the search input text when the clear button is clicked. */ function clearSearchText() { - document.querySelector('.search_bar input').value = '' + document.querySelector('.search_bar > input').value = '' } diff --git a/public/static/pagination.js b/public/static/pagination.js deleted file mode 100644 index bdbfb39..0000000 --- a/public/static/pagination.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Navigates to the next page by incrementing the current page number in the URL query string. - * @returns {void} - */ -function navigate_forward() { - let url = new URL(window.location); - let searchParams = url.searchParams; - - let q = searchParams.get('q'); - let page = parseInt(searchParams.get('page')); - - if (isNaN(page)) { - page = 1; - } else { - page++; - } - - window.location.href = `${url.origin}${url.pathname}?q=${encodeURIComponent(q)}&page=${page}`; -} - -/** - * Navigates to the previous page by decrementing the current page number in the URL query string. - * @returns {void} - */ -function navigate_backward() { - let url = new URL(window.location); - let searchParams = url.searchParams; - - let q = searchParams.get('q'); - let page = parseInt(searchParams.get('page')); - - if (isNaN(page)) { - page = 0; - } else if (page > 0) { - page--; - } - - window.location.href = `${url.origin}${url.pathname}?q=${encodeURIComponent(q)}&page=${page}`; -} diff --git a/public/static/search_area_options.js b/public/static/search_area_options.js deleted file mode 100644 index 10e0390..0000000 --- a/public/static/search_area_options.js +++ /dev/null @@ -1,18 +0,0 @@ -document.addEventListener( - 'DOMContentLoaded', - () => { - let url = new URL(window.location) - let searchParams = url.searchParams - - let safeSearchLevel = searchParams.get('safesearch') - - if ( - safeSearchLevel >= 0 && - safeSearchLevel <= 2 && - safeSearchLevel !== null - ) { - document.querySelector('.search_options select').value = safeSearchLevel - } - }, - false, -) diff --git a/public/static/themes/simple.css b/public/static/themes/simple.css index dc8fcbc..36472a9 100644 --- a/public/static/themes/simple.css +++ b/public/static/themes/simple.css @@ -448,7 +448,7 @@ footer div { align-items: center; } -.page_navigation button { +.page_navigation a { background: var(--background-color); color: var(--foreground-color); padding: 1rem; @@ -457,7 +457,7 @@ footer div { border: none; } -.page_navigation button:active { +.page_navigation a:active { filter: brightness(1.2); } diff --git a/src/server/routes/search.rs b/src/server/routes/search.rs index e4f40de..883017f 100644 --- a/src/server/routes/search.rs +++ b/src/server/routes/search.rs @@ -129,6 +129,7 @@ pub async fn search( &config.style.theme, &config.style.animation, query, + page, &results.0, ) .0, diff --git a/src/templates/partials/bar.rs b/src/templates/partials/bar.rs index bf66c4c..a381186 100644 --- a/src/templates/partials/bar.rs +++ b/src/templates/partials/bar.rs @@ -14,12 +14,13 @@ use maud::{html, Markup, PreEscaped}; /// It returns the compiled html code for the search bar as a result. pub fn bar(query: &str) -> Markup { html!( + (PreEscaped("
")) (PreEscaped("
")) - input type="search" name="search-box" value=(query) placeholder="Type to search"; - button type="reset" onclick="clearSearchText()" { + input type="search" name="q" value=(query) placeholder="Type to search"; + button type="button" onclick="clearSearchText()" { img src="./images/close.svg" alt="Clear button icon for clearing search input text"; } - button type="submit" onclick="searchWeb()" { + button type="submit" { img src="./images/magnifying_glass.svg" alt="Info icon for error box"; } ) diff --git a/src/templates/partials/search_bar.rs b/src/templates/partials/search_bar.rs index 9c6ea9c..3c7478c 100644 --- a/src/templates/partials/search_bar.rs +++ b/src/templates/partials/search_bar.rs @@ -29,7 +29,7 @@ pub fn search_bar( (bar(query)) .error_box { @if !engine_errors_info.is_empty(){ - button onclick="toggleErrorBox()" class="error_box_toggle_button"{ + button type="button" onclick="toggleErrorBox()" class="error_box_toggle_button"{ img src="./images/warning.svg" alt="Info icon for error box"; } .dropdown_error_box{ @@ -43,7 +43,7 @@ pub fn search_bar( } } @else { - button onclick="toggleErrorBox()" class="error_box_toggle_button"{ + button type="button" onclick="toggleErrorBox()" class="error_box_toggle_button"{ img src="./images/info.svg" alt="Warning icon for error box"; } .dropdown_error_box { @@ -56,10 +56,10 @@ pub fn search_bar( (PreEscaped("
")) .search_options { @if safe_search_level >= 3 { - (PreEscaped("")) } @else{ - (PreEscaped("", safe_search_level))) } @for (idx, name) in SAFE_SEARCH_LEVELS_NAME.iter().enumerate() { @if (safe_search_level as usize) == idx { @@ -71,6 +71,7 @@ pub fn search_bar( } (PreEscaped("")) } + (PreEscaped("
")) } ) } diff --git a/src/templates/views/search.rs b/src/templates/views/search.rs index c5ab456..4ffa423 100644 --- a/src/templates/views/search.rs +++ b/src/templates/views/search.rs @@ -24,6 +24,7 @@ pub fn search( theme: &str, animation: &Option, query: &str, + page: u32, search_results: &SearchResults, ) -> Markup { html!( @@ -108,15 +109,14 @@ pub fn search( } } .page_navigation { - button type="button" onclick="navigate_backward()"{ + a href=(format!("/search?q={}&safesearch={}&page={}", query, search_results.safe_search_level, if page > 1 {page-1} else {1})) { (PreEscaped("←")) "previous" } - button type="button" onclick="navigate_forward()"{"next" (PreEscaped("→"))} + a href=(format!("/search?q={}&safesearch={}&page={}", query, search_results.safe_search_level, page+2)) { + "next" (PreEscaped("→"))} } } script src="static/index.js"{} - script src="static/search_area_options.js"{} - script src="static/pagination.js"{} script src="static/error_box.js"{} (footer()) ) From 718e172b6daaaa1e61ee7f5e9ca7be8a371f0fa6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Nov 2024 11:27:27 +0000 Subject: [PATCH 2/3] build(deps): bump tokio from 1.40.0 to 1.41.0 (#624) --- Cargo.lock | 42 +++++++++++++++++++++--------------------- Cargo.toml | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fdce525..a6bafea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,7 +14,7 @@ dependencies = [ "futures-sink", "memchr", "pin-project-lite", - "tokio 1.40.0", + "tokio 1.41.0", "tokio-util", "tracing", ] @@ -100,7 +100,7 @@ dependencies = [ "rand 0.8.5", "sha1", "smallvec 1.13.2", - "tokio 1.40.0", + "tokio 1.41.0", "tokio-util", "tracing", ] @@ -136,7 +136,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208" dependencies = [ "futures-core", - "tokio 1.40.0", + "tokio 1.41.0", "tokio-uring", ] @@ -153,7 +153,7 @@ dependencies = [ "futures-util", "mio 1.0.2", "socket2 0.5.7", - "tokio 1.40.0", + "tokio 1.41.0", "tokio-uring", "tracing", ] @@ -356,7 +356,7 @@ dependencies = [ "futures-core", "memchr", "pin-project-lite", - "tokio 1.40.0", + "tokio 1.41.0", ] [[package]] @@ -713,7 +713,7 @@ dependencies = [ "futures-core", "memchr", "pin-project-lite", - "tokio 1.40.0", + "tokio 1.41.0", "tokio-util", ] @@ -1528,7 +1528,7 @@ dependencies = [ "http 1.1.0", "indexmap 2.5.0", "slab", - "tokio 1.40.0", + "tokio 1.41.0", "tokio-util", "tracing", ] @@ -1746,7 +1746,7 @@ dependencies = [ "itoa 1.0.11", "pin-project-lite", "smallvec 1.13.2", - "tokio 1.40.0", + "tokio 1.41.0", "want 0.3.1", ] @@ -1762,7 +1762,7 @@ dependencies = [ "hyper-util", "rustls", "rustls-pki-types", - "tokio 1.40.0", + "tokio 1.41.0", "tokio-rustls", "tower-service", "webpki-roots", @@ -1795,7 +1795,7 @@ dependencies = [ "hyper 1.4.1", "pin-project-lite", "socket2 0.5.7", - "tokio 1.40.0", + "tokio 1.41.0", "tower-service", "tracing", ] @@ -2905,7 +2905,7 @@ dependencies = [ "rustls", "socket2 0.5.7", "thiserror", - "tokio 1.40.0", + "tokio 1.41.0", "tracing", ] @@ -3148,7 +3148,7 @@ dependencies = [ "percent-encoding 2.3.1", "pin-project-lite", "ryu", - "tokio 1.40.0", + "tokio 1.41.0", "tokio-retry", "tokio-util", "url 2.5.2", @@ -3271,7 +3271,7 @@ dependencies = [ "serde_json", "serde_urlencoded 0.7.1", "sync_wrapper", - "tokio 1.40.0", + "tokio 1.41.0", "tokio-rustls", "tokio-socks", "tokio-util", @@ -3994,9 +3994,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes 1.7.2", @@ -4090,7 +4090,7 @@ checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" dependencies = [ "pin-project", "rand 0.8.5", - "tokio 1.40.0", + "tokio 1.41.0", ] [[package]] @@ -4101,7 +4101,7 @@ checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ "rustls", "rustls-pki-types", - "tokio 1.40.0", + "tokio 1.41.0", ] [[package]] @@ -4113,7 +4113,7 @@ dependencies = [ "either", "futures-util", "thiserror", - "tokio 1.40.0", + "tokio 1.41.0", ] [[package]] @@ -4180,7 +4180,7 @@ dependencies = [ "libc", "slab", "socket2 0.4.10", - "tokio 1.40.0", + "tokio 1.41.0", ] [[package]] @@ -4193,7 +4193,7 @@ dependencies = [ "futures-core", "futures-sink", "pin-project-lite", - "tokio 1.40.0", + "tokio 1.41.0", ] [[package]] @@ -4562,7 +4562,7 @@ dependencies = [ "stop-words", "tempfile", "thesaurus", - "tokio 1.40.0", + "tokio 1.41.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 753b6ab..0e9a921 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ reqwest = { version = "0.12.5", default-features = false, features = [ "http2", "socks", ] } -tokio = { version = "1.32.0", features = [ +tokio = { version = "1.41.0", features = [ "rt-multi-thread", "macros", "fs", From d75e7d07ecbec7da4ce38c6a15518210bedbce93 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Nov 2024 11:32:26 +0000 Subject: [PATCH 3/3] build(deps): bump actix-governor from 0.6.0 to 0.7.0 (#625) --- Cargo.lock | 44 +++++++++++++++++++++++--------------------- Cargo.toml | 2 +- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a6bafea..2831232 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -59,9 +59,9 @@ dependencies = [ [[package]] name = "actix-governor" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0954b0f27aabd8f56bb03f2a77b412ddf3f8c034a3c27b2086c1fc75415760df" +checksum = "072a3d7907b945b0956f9721e01c117ad5765ce5be2fd9bb1e44a117c669de22" dependencies = [ "actix-http", "actix-web", @@ -1020,11 +1020,12 @@ dependencies = [ [[package]] name = "dashmap" -version = "5.5.3" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ "cfg-if 1.0.0", + "crossbeam-utils 0.8.20", "hashbrown 0.14.5", "lock_api 0.4.12", "once_cell", @@ -1343,9 +1344,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1353,9 +1354,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-cpupool" @@ -1380,15 +1381,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2 1.0.86", "quote 1.0.37", @@ -1397,15 +1398,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" @@ -1415,9 +1416,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1478,14 +1479,15 @@ checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "governor" -version = "0.6.3" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b" +checksum = "0746aa765db78b521451ef74221663b57ba595bf83f75d0ce23cc09447c8139f" dependencies = [ "cfg-if 1.0.0", "dashmap", - "futures 0.3.30", + "futures-sink", "futures-timer", + "futures-util", "no-std-compat", "nonzero_ext", "parking_lot 0.12.3", diff --git a/Cargo.toml b/Cargo.toml index 0e9a921..18beb75 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,7 +62,7 @@ futures = { version = "0.3.30", default-features = false, features = ["alloc"] } dhat = { version = "0.3.2", optional = true, default-features = false } mimalloc = { version = "0.1.43", default-features = false } async-once-cell = { version = "0.5.3", default-features = false } -actix-governor = { version = "0.6.0", default-features = false } +actix-governor = { version = "0.7.0", default-features = false } moka = { version = "0.12.8", optional = true, default-features = false, features = [ "future", ] }