0
0
mirror of https://github.com/neon-mmd/websurfx.git synced 2024-12-22 04:18:21 -05:00

Merge pull request #260 from neon-mmd/feat-inform-user-when-no-engines-are-selected

 Inform user with appropriate error message when none of the engines are selected
This commit is contained in:
alamin655 2023-09-23 17:56:48 +05:30 committed by GitHub
commit d150832672
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 67 additions and 22 deletions

10
Cargo.lock generated
View File

@ -510,7 +510,7 @@ checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa"
dependencies = [
"camino",
"cargo-platform",
"semver 1.0.18",
"semver 1.0.19",
"serde",
"serde_json",
]
@ -2864,7 +2864,7 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
dependencies = [
"semver 1.0.18",
"semver 1.0.19",
]
[[package]]
@ -3002,9 +3002,9 @@ dependencies = [
[[package]]
name = "semver"
version = "1.0.18"
version = "1.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0"
dependencies = [
"serde",
]
@ -3932,7 +3932,7 @@ dependencies = [
[[package]]
name = "websurfx"
version = "0.22.0"
version = "0.23.0"
dependencies = [
"actix-cors",
"actix-files",

View File

@ -1,6 +1,6 @@
[package]
name = "websurfx"
version = "0.22.0"
version = "0.23.0"
edition = "2021"
description = "An open-source alternative to Searx that provides clean, ad-free, and organic results with incredible speed while keeping privacy and security in mind."
repository = "https://github.com/neon-mmd/websurfx"

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

View File

@ -155,7 +155,8 @@ body {
height: 1.2rem;
}
.results .result_disallowed,
.results .result_filtered {
.results .result_filtered,
.results .result_engine_not_selected {
display: flex;
justify-content: center;
align-items: center;
@ -166,18 +167,21 @@ body {
}
.results .result_disallowed .user_query,
.results .result_filtered .user_query {
.results .result_filtered .user_query,
.results .result_engine_not_selected .user_query {
color: var(--background-color);
font-weight: 300;
}
.results .result_disallowed img,
.results .result_filtered img {
.results .result_filtered img,
.results .result_engine_not_selected img {
width: 30rem;
}
.results .result_disallowed div,
.results .result_filtered div {
.results .result_filtered div,
.results .result_engine_not_selected div {
display: flex;
flex-direction: column;
gap: 1rem;

View File

@ -45,6 +45,20 @@
</div>
<img src="./images/filter.png" alt="Image of a paper inside a funnel" />
</div>
{{else}} {{#if noEnginesSelected}}
<div class="result_engine_not_selected">
<div class="description">
<p>
No results could be fetched for your search "<span class="user_query">{{{this.pageQuery}}}</span>" .
</p>
<p class="description_paragraph">Dear user,</p>
<p class="description_paragraph">
No results could be retrieved from the upstream search engines as no
upstream search engines were selected from the settings page.
</p>
</div>
<img src="./images/no_selection.png" alt="Image of a white cross inside a red circle" />
</div>
{{else}}
<div class="result_not_found">
<p>Your search - {{{this.pageQuery}}} - did not match any documents.</p>
@ -56,7 +70,7 @@
</ul>
<img src="./images/no_results.gif" alt="Man fishing gif" />
</div>
{{/if}} {{/if}} {{/if}}
{{/if}} {{/if}} {{/if}} {{/if}}
</div>
<div class="page_navigation">
<button type="button" onclick="navigate_backward()">

View File

@ -124,6 +124,9 @@ pub struct SearchResults {
pub filtered: bool,
/// Stores the safe search level `safesearch` provided in the search url.
pub safe_search_level: u8,
/// Stores the flag option which holds the check value that whether any search engines were
/// selected or not.
pub no_engines_selected: bool,
}
impl SearchResults {
@ -150,6 +153,7 @@ impl SearchResults {
disallowed: Default::default(),
filtered: Default::default(),
safe_search_level: Default::default(),
no_engines_selected: Default::default(),
}
}
@ -186,4 +190,14 @@ impl SearchResults {
pub fn set_safe_search_level(&mut self, safe_search_level: u8) {
self.safe_search_level = safe_search_level;
}
/// A getter function that gets the value of `no_engines_selected`.
pub fn no_engines_selected(&self) -> bool {
self.no_engines_selected
}
/// A setter function to set the `no_engines_selected` to true.
pub fn set_no_engines_selected(&mut self) {
self.no_engines_selected = true;
}
}

View File

@ -205,16 +205,26 @@ async fn results(
},
};
aggregate(
query,
page,
config.aggregator.random_delay,
config.debug,
&engines,
config.request_timeout,
safe_search_level,
)
.await?
match engines.is_empty() {
false => {
aggregate(
query,
page,
config.aggregator.random_delay,
config.debug,
&engines,
config.request_timeout,
safe_search_level,
)
.await?
}
true => {
let mut search_results = SearchResults::default();
search_results.set_no_engines_selected();
search_results.set_page_query(query);
search_results
}
}
}
None => {
aggregate(
@ -229,7 +239,10 @@ async fn results(
.await?
}
};
if results.engine_errors_info().is_empty() && results.results().is_empty() {
if results.engine_errors_info().is_empty()
&& results.results().is_empty()
&& !results.no_engines_selected()
{
results.set_filtered();
}
results.add_style(&config.style);