lingxia-shell 0.5.0

Shell product module and host registrations for LingXia
use lingxia_platform::PlatformError;
use lxapp::LxAppError;

pub(crate) fn map_platform_error(api: &str, error: PlatformError) -> LxAppError {
    let (code, message) = match error {
        PlatformError::NotSupported(message) => ("E_NOT_SUPPORTED", message),
        PlatformError::InvalidParameter(message) => ("E_INVALID_PARAMETER", message),
        PlatformError::AssetNotFound(message) => ("E_NOT_FOUND", message),
        PlatformError::Platform(message) => ("E_PLATFORM", message),
        PlatformError::BusinessError(code) => {
            return LxAppError::RongJSHost {
                code: code.to_string(),
                message: format!("{api} failed"),
                data: Some(serde_json::json!({ "bizCode": code })),
            };
        }
        PlatformError::CallbackDropped => ("E_CALLBACK_DROPPED", "Callback dropped".to_string()),
    };

    LxAppError::RongJSHost {
        code: code.to_string(),
        message,
        data: None,
    }
}