Skip to content

Commit 187850d

Browse files
authored
feat: Channel util improvements (#22)
* feat: Channel util improvements * clean up * clean up
1 parent 8db5b1e commit 187850d

File tree

4 files changed

+20
-28
lines changed

4 files changed

+20
-28
lines changed

examples/channel/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ fn main() {
1212
fn app(cx: Scope) -> Element {
1313
let channel = use_channel::<String>(cx, 5);
1414

15-
use_listen_channel(cx, &channel, move |message| async move {
15+
use_listen_channel(cx, &channel, |message| async {
1616
match message {
1717
Ok(value) => log::info!("Incoming message: {value}"),
1818
Err(err) => log::info!("Error: {err:?}"),
1919
}
2020
});
2121

22-
let send = move |_: MouseEvent| {
22+
let send = |_: MouseEvent| {
2323
to_owned![channel];
2424
async move {
2525
channel.send("Hello").await.ok();

std/src/i18n/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@ mod tanslate;
22
mod use_i18n;
33
mod use_init_i18n;
44

5-
pub use self::tanslate::*;
65
pub use self::use_i18n::*;
76
pub use self::use_init_i18n::*;

std/src/utils/channel/use_channel.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,14 @@ impl<MessageType: Clone> UseChannel<MessageType> {
3838
pub fn use_channel<MessageType: Clone + 'static>(
3939
cx: &ScopeState,
4040
size: usize,
41-
) -> UseChannel<MessageType> {
42-
let id = cx.use_hook(Uuid::new_v4);
43-
let (sender, inactive_receiver) = cx.use_hook(|| {
41+
) -> &UseChannel<MessageType> {
42+
cx.use_hook(|| {
43+
let id = Uuid::new_v4();
4444
let (sender, receiver) = broadcast::<MessageType>(size);
45-
46-
(sender, receiver.deactivate())
47-
});
48-
49-
UseChannel {
50-
id: *id,
51-
sender: sender.clone(),
52-
inactive_receiver: inactive_receiver.clone(),
53-
}
45+
UseChannel {
46+
id,
47+
sender,
48+
inactive_receiver: receiver.deactivate(),
49+
}
50+
})
5451
}

std/src/utils/channel/use_listen_channel.rs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::future::Future;
22

33
use async_broadcast::RecvError;
4-
use dioxus::prelude::{to_owned, use_effect, ScopeState};
4+
use dioxus::prelude::{use_effect, ScopeState};
55

66
use super::UseChannel;
77

@@ -15,19 +15,15 @@ pub fn use_listen_channel<MessageType: Clone + 'static, Handler>(
1515
) where
1616
Handler: Future<Output = ()> + 'static,
1717
{
18-
use_effect(cx, (channel,), move |(channel,)| {
19-
to_owned![channel];
20-
async move {
21-
let action = Box::new(action);
22-
let mut receiver = channel.receiver();
18+
use_effect(cx, (channel,), move |(mut channel,)| async move {
19+
let mut receiver = channel.receiver();
2320

24-
loop {
25-
let message = receiver.recv().await;
26-
let message_err = message.clone().err();
27-
action(message).await;
28-
if message_err == Some(UseListenChannelError::Closed) {
29-
break;
30-
}
21+
loop {
22+
let message = receiver.recv().await;
23+
let message_err = message.clone().err();
24+
action(message).await;
25+
if message_err == Some(UseListenChannelError::Closed) {
26+
break;
3127
}
3228
}
3329
});

0 commit comments

Comments
 (0)