wx_mini_api 0.1.27

微信小程序api wasm接口
Documentation
use js_sys::*;
use serde::{de::DeserializeOwned, Serialize};
use serde_wasm_bindgen::{from_value, to_value};
use wasm_bindgen::prelude::*;

#[wasm_bindgen]
extern "C" {
    #[wasm_bindgen(js_namespace = wx, js_name = setStorageSync)]
    fn set_storage_sync(key: &str, value: JsValue);
    #[wasm_bindgen(js_namespace = wx, js_name = removeStorageSync)]
    fn remove_storage_sync(key: &str);
    #[wasm_bindgen(js_namespace = wx, js_name = getStorageSync)]
    fn get_storage_sync(key: &str) -> JsValue;
    #[wasm_bindgen(js_namespace = wx, js_name = clearStorageSync)]
    fn clear_storage_sync();
    #[wasm_bindgen(js_namespace = wx, js_name = createBufferURL)]
    fn create_buffer_url(buffer: ArrayBuffer) -> String;
    #[wasm_bindgen(js_namespace = wx, js_name = revokeBufferURL)]
    fn revoke_buffer_url(url: &str);
}

pub fn wx_set_storage_sync<T: AsRef<str>, D>(key: T, value: &D)
where
    D: Serialize + DeserializeOwned,
{
    set_storage_sync(key.as_ref(), to_value(value).unwrap());
}

pub fn wx_get_storage_sync<T: AsRef<str>, D>(key: T) -> D
where
    D: Serialize + DeserializeOwned,
{
    let value = get_storage_sync(key.as_ref());
    from_value(value).unwrap()
}

pub fn wx_remove_storage_sync<T: AsRef<str>>(key: T) {
    remove_storage_sync(key.as_ref());
}

pub fn wx_clear_storage_sync() {
    clear_storage_sync();
}

pub fn wx_create_buffer_url(buf: &Vec<u8>) -> String {
    let value = to_value(buf).unwrap();
    let arr = Uint8Array::new(&value).buffer();
    create_buffer_url(arr)
}

pub fn wx_revoke_buffer_url<T: AsRef<str>>(url: T) {
    revoke_buffer_url(url.as_ref())
}