use perspective_client::clone;
use perspective_js::utils::*;
use crate::config::ColumnConfigFieldUpdate;
use crate::renderer::Renderer;
use crate::session::Session;
pub fn send_plugin_config(session: &Session, renderer: &Renderer, update: ColumnConfigFieldUpdate) {
let view_config = session.get_view_config().clone();
let changed = renderer.update_plugin_config_field(&view_config, update);
clone!(session, renderer);
ApiFuture::spawn(async move {
if changed {
let plugin_config = renderer.get_plugin_config();
let plugin_token = wasm_bindgen::JsValue::from_serde_ext(&plugin_config).unwrap();
let view_config_snapshot = session.get_view_config().clone();
let columns_configs =
renderer.all_columns_configs_materialized(&view_config_snapshot, &session);
renderer
.get_active_plugin()?
.restore(&plugin_token, Some(&columns_configs))?;
renderer.update(session.get_view()).await?;
renderer.plugin_config_changed.emit(plugin_config);
}
Ok(())
})
}