chrome_types/
storage.rs

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