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