dbui-client 0.0.64

WASM web client sources for dbui
use crate::ctx::ClientContext;

use anyhow::Result;
use std::rc::Rc;
use std::sync::RwLock;

pub(crate) fn wire_socket(rc: Rc<RwLock<ClientContext>>) {
  let on_open = {
    let ctx = Rc::clone(&rc);
    Box::new(move |_j| {
      match crate::socket::ws_handlers::on_open(&ctx) {
        Ok(_) => {}
        Err(e) => error!("Error encountered running [on_open]: {}", e)
      };
    })
  };
  let on_message = {
    let ctx = Rc::clone(&rc);
    Box::new(move |m| {
      match crate::socket::ws_handlers::on_message(&ctx, m) {
        Ok(_) => {}
        Err(e) => error!("Error encountered running [on_message]: {}", e)
      };
    })
  };
  let on_error = {
    let ctx = Rc::clone(&rc);
    Box::new(move |e| match crate::socket::ws_handlers::on_error(&ctx, e) {
      Ok(_) => {}
      Err(e) => error!("Error encountered running [on_error]: {}", e)
    })
  };
  let on_close = {
    let ctx = Rc::clone(&rc);
    Box::new(move |_x| match crate::socket::ws_handlers::on_close(&ctx) {
      Ok(_) => {}
      Err(e) => error!("Error encountered running [on_close]: {}", e)
    })
  };

  let c = rc.read().unwrap();
  c.socket().set_callbacks(on_open, on_message, on_error, on_close);
}

pub(crate) fn on_load(ctx: &ClientContext) -> Result<()> {
  let overview_textarea: web_sys::HtmlTextAreaElement = ctx.get_element_by_id_as("overview-sql-input")?;
  overview_textarea
    .focus()
    .map_err(|e| anyhow::anyhow!(format!("Error attempting to focus element: {:?}", e)))?;
  crate::js::wire_textarea("overview-sql-input");
  Ok(())
}