This commit is contained in:
Simon Gardling 2023-08-25 11:07:59 -04:00
parent 7e1fe54d59
commit 3d0d3ef7a3
7 changed files with 43 additions and 10 deletions

0
build.sh Normal file → Executable file
View File

0
push.sh Normal file → Executable file
View File

View File

@ -45,16 +45,48 @@ cfg_if::cfg_if! {
#[global_allocator]
static ALLOCATOR: LockedAllocator<FreeListAllocator> = LockedAllocator::new(FreeListAllocator::new());
use eframe::WebRunner;
use tracing::metadata::LevelFilter;
#[derive(Clone)]
#[wasm_bindgen]
pub struct WebHandle {
runner: WebRunner,
}
#[wasm_bindgen]
impl WebHandle {
/// Installs a panic hook, then returns.
#[allow(clippy::new_without_default)]
#[wasm_bindgen(constructor)]
pub fn new() -> Self {
// eframe::WebLogger::init(LevelFilter::Debug).ok();
tracing_wasm::set_as_global_default();
Self {
runner: WebRunner::new(),
}
}
/// Call this once from JavaScript to start your app.
#[wasm_bindgen]
pub async fn start(&self, canvas_id: &str) -> Result<(), wasm_bindgen::JsValue> {
self.runner
.start(
canvas_id,
eframe::WebOptions::default(),
Box::new(|cc| Box::new(math_app::MathApp::new(cc))),
)
.await
}
}
#[wasm_bindgen(start)]
pub async fn start() {
tracing::info!("Starting...");
// Used in order to hook into `panic!()` to log in the browser's console
tracing_wasm::set_as_global_default();
eframe::start_web("canvas", eframe::WebOptions::default(),
Box::new(|cc| Box::new(math_app::MathApp::new(cc)))).await.unwrap();
let web_handle = WebHandle::new();
web_handle.start("canvas").await.unwrap()
}
}
}

View File

@ -383,10 +383,11 @@ impl MathApp {
#[cfg(target_arch = "wasm32")]
{
tracing::info!("Saving function data");
use crate::misc::{HashBytes, HashBytesHelper};
use crate::misc::{hashed_storage_create, HashBytes};
let hash: HashBytes =
unsafe { std::mem::transmute::<&str, HashBytes>(build::SHORT_COMMIT) };
let saved_data = hash.hashed_storage_create(
let saved_data = hashed_storage_create(
hash,
&bincode::serialize(&self.functions)
.expect("unable to deserialize functions"),
);

View File

@ -164,8 +164,8 @@ pub const HASH_LENGTH: usize = 8;
pub type HashBytes = [u8; HASH_LENGTH];
#[allow(dead_code)]
pub fn hashed_storage_create(hashbytes: &HashBytes, data: &[u8]) -> String {
unsafe { std::mem::transmute::<Vec<u8>, String>([hashbytes, data].concat()) }
pub fn hashed_storage_create(hashbytes: HashBytes, data: &[u8]) -> String {
unsafe { std::mem::transmute::<Vec<u8>, String>([hashbytes.to_vec(), data.to_vec()].concat()) }
}
#[allow(dead_code)]

0
start-server.sh Normal file → Executable file
View File

View File

@ -73,7 +73,7 @@ fn hashed_storage() {
.as_slice()
.try_into()
.expect("cannot turn into [u8; 8]");
let storage = hashed_storage_create(&storage_tmp, data.as_slice());
let storage = hashed_storage_create(storage_tmp, data.as_slice());
let read = hashed_storage_read(&storage);
assert_eq!(