#[cfg(feature = "event-cache-store")]
use matrix_sdk_base::event_cache::store::EventCacheStoreError;
#[cfg(feature = "media-store")]
use matrix_sdk_base::media::store::MediaStoreError;
#[cfg(feature = "state-store")]
use matrix_sdk_base::StoreError;
#[cfg(any(feature = "event-cache-store", feature = "media-store"))]
use matrix_sdk_base::{SendOutsideWasm, SyncOutsideWasm};
#[cfg(feature = "e2e-encryption")]
use matrix_sdk_crypto::CryptoStoreError;
use thiserror::Error;
#[cfg(any(feature = "event-cache-store", feature = "media-store"))]
pub trait AsyncErrorDeps: std::error::Error + SendOutsideWasm + SyncOutsideWasm + 'static {}
#[cfg(any(feature = "event-cache-store", feature = "media-store"))]
impl<T> AsyncErrorDeps for T where T: std::error::Error + SendOutsideWasm + SyncOutsideWasm + 'static
{}
#[derive(Debug, Error)]
#[error("{0}")]
pub struct GenericError(String);
impl<S: AsRef<str>> From<S> for GenericError {
fn from(value: S) -> Self {
Self(value.as_ref().to_owned())
}
}
#[cfg(feature = "e2e-encryption")]
impl From<GenericError> for CryptoStoreError {
fn from(value: GenericError) -> Self {
Self::backend(value)
}
}
#[cfg(feature = "event-cache-store")]
impl From<GenericError> for EventCacheStoreError {
fn from(value: GenericError) -> Self {
Self::backend(value)
}
}
#[cfg(feature = "media-store")]
impl From<GenericError> for MediaStoreError {
fn from(value: GenericError) -> Self {
Self::backend(value)
}
}
#[cfg(feature = "state-store")]
impl From<GenericError> for StoreError {
fn from(value: GenericError) -> Self {
Self::backend(value)
}
}