use dioxus::prelude::*; use matrix_sdk::ruma::OwnedRoomId; use tokio::sync::broadcast::error::SendError; use tokio::sync::broadcast::{channel, Receiver, Sender}; #[derive(Clone)] pub enum Tasks { ToggleRoom(OwnedRoomId), } pub struct Interface { sender: Sender, receiver: RefCell>, } impl Interface { pub fn new() -> Self { let (sender, receiver) = channel::(32); Self { sender, receiver: RefCell::new(receiver), } } pub(super) fn receiver(&self) -> &RefCell> { &self.receiver } pub fn toggle_room(&self, room_id: OwnedRoomId) -> Result> { self.sender.send(Tasks::ToggleRoom(room_id)) } }