use crate::command::ScriptCommand;
use crate::engine::ScriptEngine;
use boa_engine::JsArgs;
pub trait ScriptApiRegistrar {
fn register_api(&self, engine: &mut ScriptEngine);
}
pub fn register_show_scene(engine: &mut ScriptEngine) {
engine.register_async_fn("showScene", |args, ctx| {
let scene_name = args
.get_or_undefined(0)
.to_string(ctx)?
.to_std_string_lossy();
Ok(ScriptCommand::ShowScene {
scene_name,
layout_json: None,
})
});
}
pub fn register_hide_scene(engine: &mut ScriptEngine) {
engine.register_async_fn("hideScene", |args, ctx| {
let scene_name = args
.get_or_undefined(0)
.to_string(ctx)?
.to_std_string_lossy();
Ok(ScriptCommand::HideScene { scene_name })
});
}
pub fn register_update_ui(engine: &mut ScriptEngine) {
engine.register_async_fn("updateUI", |args, ctx| {
let scene_name = args
.get_or_undefined(0)
.to_string(ctx)?
.to_std_string_lossy();
let data_val = args.get_or_undefined(1);
let json_val = data_val.to_json(ctx)?;
let data_json = json_val.to_string();
Ok(ScriptCommand::UpdateUI {
scene_name,
data_json,
})
});
}