/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ pub mod close_tabs; mod keys; pub mod send_tab; pub use close_tabs::CloseTabsPayload; pub use send_tab::SendTabPayload; pub(crate) use keys::{ decrypt_command, encrypt_command, get_public_keys, PrivateCommandKeys, PublicCommandKeys, }; use super::device::Device; use crate::{Error, Result}; // Currently public for use by example crates, but should be made private eventually. #[derive(Clone, Debug)] pub enum IncomingDeviceCommand { TabReceived { sender: Option, payload: SendTabPayload, }, TabsClosed { sender: Option, payload: CloseTabsPayload, }, } impl TryFrom for crate::IncomingDeviceCommand { type Error = Error; fn try_from(cmd: IncomingDeviceCommand) -> Result { Ok(match cmd { IncomingDeviceCommand::TabReceived { sender, payload } => { crate::IncomingDeviceCommand::TabReceived { sender: sender.map(crate::Device::try_from).transpose()?, payload: payload.into(), } } IncomingDeviceCommand::TabsClosed { sender, payload } => { crate::IncomingDeviceCommand::TabsClosed { sender: sender.map(crate::Device::try_from).transpose()?, payload: payload.into(), } } }) } }