use bevy::prelude::*;
use midir::{ConnectError, ConnectErrorKind}; use thiserror::Error;
#[derive(Debug, Event, Error)]
pub enum MidiInputError {
#[error("Couldn't reconnect to input port: {0}")]
ConnectionError(ConnectErrorKind),
#[error("Port not found (id: {0}")]
PortNotFound(String),
#[error("Couldn't refersh input ports")]
PortRefreshError,
#[error("Invalid State: {0}")]
InvalidState(String),
}
impl MidiInputError {
pub(crate) fn invalid(msg: impl ToString) -> Self {
Self::InvalidState(msg.to_string())
}
pub(crate) fn port_not_found(id: impl Into<String>) -> Self {
Self::PortNotFound(id.into())
}
}
impl From<ConnectError<midir::MidiInput>> for MidiInputError {
fn from(value: ConnectError<midir::MidiInput>) -> Self {
Self::ConnectionError(value.kind())
}
}