bath_signal/
send_offer.rs

1use super::*;
2
3#[derive(Serialize, Deserialize, Debug, Clone)]
4pub struct ResSendOffer {
5    pub error: Option<SendOfferError>,
6}
7
8#[derive(Serialize, Deserialize, Debug, Clone)]
9pub struct SendOffer {
10    pub user: UserId,
11    pub from: UserId,
12    pub offer: String,
13}
14
15#[derive(Serialize, Deserialize, Debug, Clone)]
16#[serde(tag = "type")]
17pub enum SendOfferError {
18    InvalidCallId,
19}
20
21impl CallState {
22    pub fn send_offer(&mut self, req: SendOffer) -> Result<(), SendOfferError> {
23        let mailbox = self
24            .user_mail
25            .get_mut(&req.user)
26            .ok_or(SendOfferError::InvalidCallId)?;
27        mailbox.push(UserMail {
28            ty: UserMailType::IncomingOffer,
29            data: req.offer,
30            from: req.from,
31        });
32        Ok(())
33    }
34}