Skip to main content

rustolio_utils/web_sys/
storage.rs

1use crate::error::{FromCustomError, FromJsValue};
2
3#[derive(Debug, Clone, PartialEq, Eq)]
4pub struct LocalStorage(web_sys::Storage);
5
6impl LocalStorage {
7    pub fn global() -> crate::Result<Self> {
8        Ok(Self(
9            super::globals::window()?
10                .local_storage()
11                .context("No global LocalStorage")?
12                .context("No global LocalStorage")?,
13        ))
14    }
15
16    #[track_caller]
17    pub fn length(&self) -> crate::Result<u32> {
18        self.0.length().context("Failed to get length")
19    }
20    #[track_caller]
21    pub fn clear(&self) -> crate::Result<()> {
22        self.0.clear().context("Failed to exec clear")
23    }
24    #[track_caller]
25    pub fn get(&self, key: &str) -> crate::Result<Option<String>> {
26        self.0.get(key).context("Failed to get item")
27    }
28    #[track_caller]
29    pub fn set(&self, key: &str, value: &str) -> crate::Result<()> {
30        self.0.set(key, value).context("Failed to set item")
31    }
32    #[track_caller]
33    pub fn delete(&self, key: &str) -> crate::Result<()> {
34        self.0.delete(key).context("Failed to delete item")
35    }
36    #[track_caller]
37    pub fn key(&self, key: u32) -> crate::Result<Option<String>> {
38        self.0.key(key).context("Failed to get key")
39    }
40}