lingxia-service 0.6.4

Shared LingXia service APIs used by JS bindings, shell, and native facade
pub use lingxia_platform::PlatformError;
pub use lingxia_platform::traits::media_interaction::{
    CameraFacing, ChooseMediaMode, ChooseMediaRequest, MediaInteraction, MediaKind, MediaObjectFit,
    MediaQuality, MediaSource, PreviewMediaAdvance, PreviewMediaItem, PreviewMediaRequest,
    SaveMediaRequest, ScanCodeRequest, ScanType,
};

pub type Result<T> = std::result::Result<T, PlatformError>;

pub async fn choose_media(
    runtime: &(impl MediaInteraction + ?Sized),
    request: ChooseMediaRequest,
) -> Result<String> {
    runtime.choose_media(request).await
}

pub fn preview_media(
    runtime: &(impl MediaInteraction + ?Sized),
    request: PreviewMediaRequest,
) -> Result<()> {
    runtime.preview_media(request)
}

pub fn cancel_preview(runtime: &(impl MediaInteraction + ?Sized), callback_id: u64) -> Result<()> {
    runtime.cancel_preview(callback_id)
}

pub async fn scan_code(
    runtime: &(impl MediaInteraction + ?Sized),
    request: ScanCodeRequest,
) -> Result<String> {
    runtime.scan_code(request).await
}

pub async fn save_image_to_photos_album(
    runtime: &(impl MediaInteraction + ?Sized),
    request: SaveMediaRequest,
) -> Result<()> {
    runtime.save_image_to_photos_album(request).await
}

pub async fn save_video_to_photos_album(
    runtime: &(impl MediaInteraction + ?Sized),
    request: SaveMediaRequest,
) -> Result<()> {
    runtime.save_video_to_photos_album(request).await
}