chrome_types/
storage.rs

1use crate::sys::storage::StorageArea;
2use crate::sys::{CHROME, Chrome};
3use js_sys::{Object, Reflect};
4use wasm_bindgen::prelude::*;
5
6pub fn local() -> StorageArea {
7  CHROME.with(Chrome::storage).local()
8}
9
10pub async fn get_local(key: &str) -> Result<JsValue, JsValue> {
11  let key: JsValue = key.into();
12  let obj = local().get(&key).await?;
13  Reflect::get(&obj, &key)
14}
15
16pub async fn set_local(key: &str, value: &JsValue) -> Result<(), JsValue> {
17  let obj = Object::new();
18  Reflect::set(&obj, &key.into(), value)?;
19  local().set(&obj).await
20}
21
22pub fn session() -> StorageArea {
23  CHROME.with(Chrome::storage).session()
24}
25
26pub async fn get_session(key: &str) -> Result<JsValue, JsValue> {
27  let key: JsValue = key.into();
28  let obj = session().get(&key).await?;
29  Reflect::get(&obj, &key)
30}
31
32pub async fn set_session(key: &str, value: &JsValue) -> Result<(), JsValue> {
33  let obj = Object::new();
34  Reflect::set(&obj, &key.into(), value)?;
35  session().set(&obj).await
36}