lingxia-platform 0.5.0

Platform abstraction layer for LingXia framework (Android, iOS, HarmonyOS)
Documentation
use super::app::Platform;
use super::ffi::{PopupPositionBridge, hide_popup, show_popup};
use crate::error::PlatformError;
use crate::traits::ui::{PopupPosition, PopupPresenter, PopupRequest};

impl PopupPresenter for Platform {
    fn show_popup(&self, request: PopupRequest) -> Result<(), PlatformError> {
        let position = match request.position {
            PopupPosition::Center => PopupPositionBridge::Center,
            PopupPosition::Bottom => PopupPositionBridge::Bottom,
            PopupPosition::Left => PopupPositionBridge::Left,
            PopupPosition::Right => PopupPositionBridge::Right,
        };

        if show_popup(
            &request.app_id,
            &request.path,
            request.width_ratio,
            request.height_ratio,
            position,
        ) {
            Ok(())
        } else {
            Err(PlatformError::Platform(
                "Failed to show popup on Apple platform".to_string(),
            ))
        }
    }

    fn hide_popup(&self, app_id: &str) -> Result<(), PlatformError> {
        if hide_popup(app_id) {
            Ok(())
        } else {
            Err(PlatformError::Platform(
                "Failed to hide popup on Apple platform".to_string(),
            ))
        }
    }
}