search_provider: Block receivers until ready

This commit is contained in:
Maximiliano Sandoval R 2023-04-19 11:07:08 +02:00
parent 9e3ceba6a8
commit 25e125b685
Failed to generate hash of commit
3 changed files with 9 additions and 5 deletions

1
Cargo.lock generated
View file

@ -154,6 +154,7 @@ dependencies = [
"diesel_migrations",
"favicon-scrapper",
"futures-channel",
"futures-executor",
"futures-util",
"gettext-rs",
"gst-plugin-gtk4",

View file

@ -12,8 +12,9 @@ data-encoding = "2.3"
diesel = {version = "2.0", features = ["sqlite", "r2d2"]}
diesel_migrations = {version = "2.0", features = ["sqlite"]}
favicon-scrapper = {path = "./favicon-scrapper"}
futures-util = "0.3"
futures-channel = "0.3"
futures-executor = "0.3"
futures-util = "0.3"
gettext-rs = {version = "0.7", features = ["gettext-system"]}
gst = {package = "gstreamer", version = "0.20"}
gst4gtk = {package = "gst-plugin-gtk4", version = "0.10", features = ["wayland", "x11egl", "x11glx"]}

View file

@ -42,25 +42,27 @@ impl SearchProviderImpl for SearchProvider {
}
fn initial_result_set(&self, terms: &[String]) -> Vec<ResultID> {
let (sender, mut receiver) = futures_channel::oneshot::channel();
let (sender, receiver) = futures_channel::oneshot::channel();
let _ = self
.sender
.unbounded_send(SearchProviderAction::InitialResultSet(
terms.to_owned(),
sender,
));
receiver.try_recv().unwrap().unwrap()
let fut = async { receiver.await.unwrap() };
futures_executor::block_on(fut)
}
fn result_metas(&self, identifiers: &[ResultID]) -> Vec<ResultMeta> {
let (sender, mut receiver) = futures_channel::oneshot::channel();
let (sender, receiver) = futures_channel::oneshot::channel();
let _ = self
.sender
.unbounded_send(SearchProviderAction::ResultMetas(
identifiers.to_owned(),
sender,
));
receiver.try_recv().unwrap().unwrap()
let fut = async { receiver.await.unwrap() };
futures_executor::block_on(fut)
}
}